《强化学习》中的第13章:策略梯度方法

前言: 本次笔记对《强化学习(第二版)》第十三章进行概括性描述。

以下概括都是基于我个人的理解,可能有误,欢迎交流:[email protected]

让时间回到最开始:第二章多臂赌博机。在那一章,我们还没接触状态的概念,只是在一个稳定的环境中,探索最优动作。第十三章中,我们跳过q(s,a)的映射,直接考量π(s,a)并对其数值进行迭代。在第二章中,我们的策略只是π(a),也就是各个动作的使用概率;而第十三章中,我们多了“状态”这个概念,对于不同的状态,我们的动作选择概率是不同的。至于选择哪个动作好,可以使用对于状态的映射进行建模,比如f(θx(s))=π(s)。随着章节的深入,我们发现策略梯度的方法不但理论上有优势,且能解决动作空间连续等问题,更甚,其与人工神经网络逻辑单元运行的原理是相通的利用神经网络抽取特征、建立映射适于策略梯度方法

终于学完了前13章!第13章在我看来有些突兀:其利用了3-12章我们讨论的思想,但却抛弃了我们讨论了整整长达10章的q(s,a)相关方法。不管怎么说,我终于可以进入工程部分,开始领教 DRL 了。小小白同学要变成小白同学了。

正文

13.1 策略近似及其优势

一开始,我们所讨论的还是分幕的情况与离散的状态空间。

如多臂赌博机那张中的内容,我们可以为建立一个指数柔性最大化(softmax)的策略函数:

π ( a s , θ ) = e h ( s , a , θ ) b e h ( s , b , θ ) \pi(a|s,\theta) = \frac{e^{h(s,a,\theta)}}{\sum_b e^{h(s,b,\theta)}}

这种策略参数化的形式被称为动作偏好值的柔性最大化

当然,状态空间已经不再受限,因为我们有参数化的方法。比如 θ \theta 可以是网络连接权重的向量,而动作偏好值的柔性最大化里,我们使用简单的特征线性组合:

h ( s , a , θ ) = θ T x ( s , a ) h(s,a,\theta)=\theta^T x(s,a)

这节中提出了一个“动作切换的小型走廊任务”,便于我们理解基本算法的效果,代码可见:https://nbviewer.jupyter.org/github/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/Short-Corridor.ipynb。要注意,这里的策略模型很简陋,依旧还是不管状态,只考虑全局下的“向左动作”概率多大、“向右动作”概率多大。

13.2 策略梯度定理

这节开始讨论策略梯度理论优势

“基于策略梯度的方法能够比基于动作价值函数的方法有更强的收敛保证。”

分幕式情况下,我们有性能指标:

J ( θ ) = v π θ ( s 0 ) \textbf{J}(\theta)=v_{\pi_\theta}(s_0)

策略梯度定理表达式即,这个性能指标与前几章讨论的更新公式中的下降项的和是成正比的:

J ( θ ) s μ ( s ) a q π ( s , a ) π ( a s , θ ) \textbf{J}(\theta) \propto \sum_s \mu(s) \sum_a q_\pi (s,a) \nabla \pi(a|s,\theta)

书上有严格的数学证明。

13.3 REINFORCE:蒙特卡洛策略梯度

Willams 提出了经典的依靠迭代的每步更新一个动作的算法 REINFORCE 。

我们有了梯度下降的方向 $ J ( θ ) \textbf{J}(\theta) ,从数学意义上对其进行推导、简化,就可得到更新公式:

θ t + 1 = θ t + α G t π ( A t S t , θ t ) π ( A t S t , θ t ) \theta_{t+1} = \theta_t + \alpha G_t \frac{\nabla \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}

其中, π ( A t S t , θ t ) π ( A t S t , θ t ) \frac{\nabla \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} ln π ( A t S t , θ t ) \nabla \ln\pi(A_t|S_t,\theta_t) 等价,我们称后者为迹向量。

注意这里的算法还是蒙特卡洛的,即必须每幕结束后才能更新,是离线的

13.4 带有基线的REINFORCE

我们在多臂赌博机中就讨论过:增加基线(那时叫“基准项”),对最终收敛结果没有影响,因为同状态下的所有动作概率和为常数1,其导数为0。

但是,增加基线会让收敛速度加快(有益于收敛过程)。书上说,基线减小了方差。

这里的基线是多少都无所谓,但是,对于每个状态 s s 来讲,其应该是相同的。或者说,基线值应该随状态变化而变化

其意义是:“在一些状态下,所有的动作的价值可能都比较大,因此我们需要一个较大的基线用以区分拥有更大值的动作和相对值不那么高的动作;在其他状态下当所有动作的值都较低时,基线也应该较小。”

那么,以 v ^ ( S t , w ) \hat{v}(S_t, w) 作为基线便十分合适。书上给出了算法伪代码,即更新 θ \theta 同时更新 w w

13.5 “行动器-评判器”方法

注意之前讨论的方法都是蒙特卡洛的,都是离线的。

现在我们开始讨论在线方法。

我们则需要引入“评判器”来求得可以代替REINFORCE的“整个回报”的变量。

即将 G t G_t 替换为:

G t : t + 1 v ^ ( S t , w ) = R t + 1 + γ v ^ ( S t + 1 , w ) v ^ ( S t , w ) G_{t:t+1} - \hat{v} (S_t,w)=R_{t+1} + \gamma\hat{v} (S_{t+1},w) - \hat{v} (S_t,w)

此外,因为涉及到前向视图转后向视图,书上还给出了资格迹的伪代码。这里存在两个资格迹,分别对应 w w θ \theta

13.6 持续性问题的策略梯度

策略梯度定理对于持续性问题同样适用。

只不过,我们评价性能的指标也需要相应地改变:

J ( θ ) = r ( π ) \textbf{J}(\theta) = r(\pi)

基于遍历性假设,我们依然可以给出数学上的严格证明。

这里,我总结了带资格迹的“行动器-评判器”方法分幕的持续的情况见区别,只有二:

  • 持续性下没有折扣;
  • 持续性下 δ \delta 第一项使用平均收益 R R ˉ R-\bar{R}

13.7 针对连续动作的策略参数化方法

本节中针对连续动作,给了一个范例:使用正态概率分布模型对策略参数化。不再复述。

练习题都很有意义。

2020-3-22 00:48:13
Piper Liu

原创文章 163 获赞 177 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42815609/article/details/105019474