强化学习中表格式算法的总结

前言

之前没注意过这些推广邮件,今天看看还是不错的,顺便总结一些有用的。原文是:Summary of Tabular Methods in Reinforcement Learning,当然也参考了其他资料。

表格方法主要涉及状态和动作空间足够小,可以将值函数近似表示为数组和表的问题,都是用来估计值函数的手段

The Problem

强化学习的目标是找到Bellman方程的解:
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S , r ∈ R P ( s ′ , r ∣ s , a ) ( r + γ V π ( s ′ ) ) V_{\pi}(s)=\sum_{a\in A}\pi(a|s)\sum_{s'\in S,r\in R}P(s',r|s,a)(r+\gamma V_{\pi}(s')) Vπ(s)=aAπ(as)sS,rRP(s,rs,a)(r+γVπ(s))

通过解决Bellman方程,我们是要找到最大化状态值函数的最优策略。

由于难以获得解析解,因此我们使用迭代方法来计算最优策略。最优状态和动作值函数表示如下:
v ∗ ( s ) = max ⁡ a ∑ s ′ ∈ S , r ∈ R P ( s ′ , r ∣ s , a ) ( r + γ v ∗ ( s ′ ) ) v_*(s)=\max_a \sum_{s'\in S,r\in R}P(s',r|s,a)(r+\gamma v_*(s')) v(s)=amaxsS,rRP(s,rs,a)(r+γv(s))
q ∗ ( s , a ) = ∑ s ′ ∈ S , r ∈ R P ( s ′ , r ∣ s , a ) ( r + γ max ⁡ a ′ q ∗ ( s ′ , a ′ ) ) q_*(s,a)=\sum_{s'\in S,r\in R}P(s',r|s,a)(r+\gamma \max_{a'} q_*(s',a')) q(s,a)=sS,rRP(s,rs,a)(r+γamaxq(s,a))

Dynamic Programming

动态规划是一种通过将周围状态的值作为输入(不管这些值是否正确)来计算一个状态下每个值的方法。一旦计算出一个状态的一个值,我们便移至另一状态,并重复相同的过程(考虑先前状态中计算出的任何新值)。

迭代此过程足够多次,直到每个状态的变化小于我们定义的某个限制。

主要包括策略迭代、值迭代,关于动态规划的收敛性证明可以看:通过Bellman算子理解动态规划

Pros

DP是高效的,它在大多数情况下都可以在多项式时间内找到最优策略。

DP保证找到最优策略。

总结:多项式时间收敛,保证收敛到最优解

Cons

DP不适合具有数百万甚至更多状态的大问题。

DP需要知道转移概率矩阵,也就是只能处理有模型的问题,但这对许多问题来说是不切实际的要求。

总结:不适用于大规模、无模型问题

Monte Carlo

在蒙特卡洛(MC),我们完成一整个episode, ϵ \epsilon ϵ-greedly逐渐移动到各个状态,直到结束,记录我们遇到的状态、动作和奖励,然后为我们通过的每个状态计算 V ( s ) V(s) V(s) Q ( s ) Q(s) Q(s)。其使用最简单的假设:value = mean return,return是 v π v_{\pi} vπ的无偏估计,但由于一整个episode中随机因素太多,所以方差大。

根据大数定理可以收敛至 v π ( s ) v_{\pi}(s) vπ(s),即使使用函数近似。

我们通过进行更多的episode来重复此过程,并且在每个episode后获得状态、动作和奖励,并平均发现的 V ( s ) V(s) V(s) Q ( s ) Q(s) Q(s)的值。

MC预测算法包括进行尽可能多的episode,并在每个episode之后计算我们经过的状态的值,然后将这些结果与这些状态的当前值进行平均。一个episode里可能多次到访同一个状态,这时就有区别了,下面是只更新第一次到访状态时的值,也就是该状态在之前没出现过:
在这里插入图片描述
知道如何估计值后,策略就是基于估计的值产生的:
在这里插入图片描述
也有增量式的更新方式,降低空间复杂度,简单的变换即可:
μ k = 1 k ( ∑ i = 0 k x i ) = 1 k ( x k + ∑ i = 0 k − 1 x i ) = 1 k ( x k + ( k − 1 ) μ k − 1 ) = μ k − 1 + 1 k ( x k − μ k − 1 ) \begin{aligned} \mu_k & =\frac{1}{k}(\sum_{i=0}^k x_i)\\ &=\frac{1}{k}(x_k+\sum_{i=0}^{k-1} x_i)\\ &=\frac{1}{k}(x_k+(k-1)\mu_{k-1})\\ &=\mu_{k-1}+\frac{1}{k}(x_k-\mu_{k-1}) \end{aligned} μk=k1(i=0kxi)=k1(xk+i=0k1xi)=k1(xk+(k1)μk1)=μk1+k1(xkμk1)
即把append和average两步换为:
N ( S t , A t ) + = 1  #更新计数 Q ( S t , A t ) = Q ( S t , A t ) + 1 N ( S t , A t ) ( R e t u r n s ( S t , A t ) − Q ( S t , A t ) ) \begin{aligned} &N(S_t,A_t)+=1 \text{\ \#更新计数}\\ &Q(S_t,A_t)=Q(S_t,A_t)+\frac{1}{N(S_t,A_t)}(Returns(S_t,A_t)-Q(S_t,A_t)) \end{aligned} N(St,At)+=1 #更新计数Q(St,At)=Q(St,At)+N(St,At)1(Returns(St,At)Q(St,At))

Pros

MC可直接从与环境的交互中学习最佳行为,不需要环境动态模型。

MC可以与仿真或样本模型一起使用。

MC可以用于关注一个特别感兴趣的区域,并可以准确地进行评估,而不必评估其余的状态集。

总结:不需要模型,可使用仿真,可估计特定区域,无偏估计,收敛性质好,对初始值不敏感

Cons

MC仅适用于情节式环境,它不适用于没有终止状态的环境(连续任务)。

MC必须具有完整的情节,没有bootstrapping,这意味着它不能给出其他状态的估计值。

MC必须等到episode结束后才能知道return。 对于episode很长的问题,这将变得太慢。

总结:只适用于情节式任务,实际中收敛较慢,方差大

Temporal Difference

TD可以看作是DP和MC方法之间的融合。它进行episode,但不必等到结局就知道回报。它基于其他状态的估计来计算当前状态的值(bootstrapping)。真实的TD target r + γ v π ( s t + 1 ) r+\gamma v_{\pi}(s_{t+1}) r+γvπ(st+1) v π ( s t ) v_{\pi}(s_t) vπ(st)的无偏估计,但是由于无法得到 v π ( s t + 1 ) v_{\pi}(s_{t+1}) vπ(st+1),所以估计是有偏的。TD(0)只有一步随机,方差小。

TD(0)指的是只向前看一步,然后计算当前状态值,可以收敛至 v π ( s ) v_{\pi}(s) vπ(s),但使用函数近似后不总成立
在这里插入图片描述
为了找到最佳策略,TD提供了不同的方法,一个是on-policy的SARSA,另一个是off-policy的Q-learning。

SARSA包括对状态S采取动作A,记下R,和下一个状态S’及其动作A’,然后使用所有这些信息来更新 Q ( S , A ) Q(S,A) Q(S,A),然后移至S’,执行先前选择的动作A’。
在这里插入图片描述
Q-learning像SARSA一样,它对状态S采取操作A,记下R和下一个状态S’,然后与SARSA不同,它选择状态S’中的最大Q值来更新 Q ( S , A ) Q(S,A) Q(S,A),然后移动到S’并执行 ϵ \epsilon ϵ-greedy操作,也就是off-policy:评估和改进的策略不是产生样本的行为策略,即目标策略和行为策略不是同一个策略
在这里插入图片描述
当然还有解决因探索不足等因素造成的过估计问题的Double Q-learning,这里不做过多介绍。

Pros

TD不需要像DP一样知道转移概率矩阵。

TD无需等到episode结束就知道return,它会逐步更新状态值和动作值。

总结:不需要模型,收敛较快,方差小

Cons

SARSA可能陷入局部最小值中。

Q-learning在某些随机环境中的表现可能会很差。

总结:有偏估计,对初始值敏感,收敛性质不好,

只有DP需要模型,只有MC不使用bootstrapping

猜你喜欢

转载自blog.csdn.net/qq_38163755/article/details/116450222