Actor-critic强化学习方法应用于CartPole-v1
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Actor-critic强化学习方法应用于CartPole-v1相关的知识,希望对你有一定的参考价值。
- 杨智程: 2021214373 深智研211班
- 陈逸飞:2021214377 深智研211班
简 介: 本文结合
Actor-Critic
算法,针对CartPole-v1
倒立摆小车环境进行了强化学习训练,最后成功实现了小车长时间维持平衡、奖励曲线收敛的理想效果。在实验过程中,我们发现,Actor-Critic
算法的收敛速度并不快,另外收敛过程波动也比较大,导致这种现象的主要原因在于,在Actor-Critic
算法中,估计Q
值的网络Critic
网络存在高估Q
值的现象,这使得它的收敛比较困难。改进的方案是可以增加一个用以阶段性保存Q
值的Target-Critic
网络,这样能延缓Q
值的高估,另外再增加一组对偶的Actor-Critic
网络用于实际输出动作,而使用原先的Actor-Critic
网络发挥更新与估计功能,二者周期性同步。通过这一方案能有效解决Q
值高估的问题,同时提高网络的稳定性,加快收敛,提高训练效果。
关键词
: CartPole,倒立摆,强化学习
§01 算法思想
Actor-Critic
算法分为两部分:actor
和critic
。actor
的前身是policy gradient
,可以较容易地在连续动作空间内选择合适的动作,value-based
的Qlearning
做此操作会因为空间过大而爆炸。因为Actor
是基于回合更新的,所以学习效率比较慢。因此引入value-based
的算法作为Critic
,就可以实现单步更新。这样两种算法相互补充就形成了Actor-Critic
。
Actor
基于概率选行为, Critic
基于Actor
的行为评判行为的得分, Actor
根据Critic
的评分修改选行为的概率。
- 算法优点:可以进行单步更新
,
相较于传统的PG
回合更新要快.
- 算法缺点:
Actor
的行为取决于Critic
的Value
,但是因为Critic
本身就很难收敛和actor
一起更新的话就更难收敛了。(为了解决收敛问题,Deepmind
提出了Actor Critic
升级版Deep Deterministic Policy Gradient
,后者融合了DQN
的优势,
解决了收敛难的问题)
§02 公式推导
Actor
(玩家):为了玩游戏得到尽量高的reward
,需要一个策略:输入state
,输出action
。(用神经网络来近似这个策略函数。剩下的任务就是训练神经网络,得更高的reward
。这个网络就被称为actor
)
Critic
(评委):因为actor
是基于策略policy
的所以需要critic
来计算出对应actor
的value
来反馈给actor
,告诉他表现得好不好。所以就要使用到之前的Q
值。(用神经网络来近似这个Q
(s
,a
)。这个网络被称为critic
。)
针对用以评估反映动作价值的Q
值的Critic
网络,采用时序差分学习算法(Temporal-Difference Learning,TD learning)
更新网络权重,目标函数是由奖励r_t
和带折扣因子Q
值项组成的函数,用以驱动更新向目标奖励方向进行,损失函数则是以网络权重ω为自变量、Q
值与目标函数间的最小二乘函数。更新过程如图1
所示。
▲ 图2.1 采用TD算法更新Critic网络权值与Q值的算法过程示意图
强化学习在决策时,还需要依赖策略进行选择。对于本算法而言,Actor
网络就是完成策略更新并输出决策的部分。选择策略时可以根据策略梯度进行更新和选择,而策略梯度则是根据状态值函数进行计算的。状态值函数可以表示为在策略π的指导下,不同动作的Q
值的加权和,而策略梯度可以表示为状态值函数在某一状态、某一时刻Q
值网络参数下对策略参数的偏导函数。
选择动作时,网络会根据策略参数生成一组关于不同动作的概率分布,在这一概率分布中随机选择动作,在选择完动作后,求得相应的策略梯度,并结合学习率β完成策略的更新。策略更新部分的过程如图2
所示。
▲ 图2.2 策略梯度定义与更新过程示意图
在对Critic
和Actor
网络的原理进行描述后,我们可以进一步对整个Actor-Critic
算法的过程进行概述。在一次循环中,首先,观察到当前状态并根据策略概率分布π选择动作a_t
,得到环境新的输出状态s_(t+1)
和对应奖励r_t
。随后,再根据π选择下一时刻动作a
̃_(t+1)
,但是不会实际将它输入到环境中,仅通过a_t
和a
̃_(t+1)
计算对应Q
值函数值q_t
和q_(t+1)
。使用q_t
和q_(t+1)
计算时序差分误差δ_t
,根据这一误差和前面提到的目标函数、损失函数等更新用以评估Q
值的Critic
网络。最后根据策略梯度更新策略网络Actor
的参数。整个过程如图3
所示。
▲ 图2.3 Actor-Critic 算法总结
§03 CartPole-v1环境
▲ 图3.1 CartPole-v1倒立摆小车环境示意图
如图4
所示,CartPole-v1
环境由一个小车和一个杆组成,小车套在一个光滑无摩擦的轨道上。杆倾斜,小车会滑动。如果不采取行动,杆子会倒下,小车会滑动,且远离中心。State
由杆的角速度,小车的速度,小车位置和杆和小车的夹角角度组成。Action
是对小车向左\\
右施加1N
的力。在本episode
结束之前,做出的每一步动作都得到1
的reward
。玩家在游戏中要对小车施加力,使得杆不会倒下。显然行动的step
越多,杆不倒的时间越长,玩家获得的奖励就越高。
§04 结果展示
本文使用Actor-Critic
算法完成对CartPole-v1
环境的学习,目标是使得倒立摆小车保持在画面中央部位附近、倒立摆保持直立的时间尽可能长。根据上述对环境的描述,本文定义倒立摆平衡被破坏或维持平衡时间超过预设阈值为一局实验的终止条件,一局之内,倒立摆维持平衡位置的总时长与奖励呈正比例关系。
如图5
所示,Actor-Critic
算法的指导下,奖励曲线在一开始大幅振荡,随后虽然在局部振荡,但总体趋势是上升的。在训练局数接近2200
局时,奖励曲线开始稳步上升到很高水平,说明这个阶段算法已经逐渐收敛。可以看到,最后阶段,奖励能维持在900-1000
的水平上,说明最终训练效果比较理想,倒立摆小车能维持平衡较长时间。
▲ 图4.1 Actor-Critic 算法真对倒立摆小车环境的奖励与训练局数关系曲线
※ 小 结 ※
本文结合Actor-Critic
算法,针对CartPole-v1
倒立摆小车环境进行了强化学习训练,最后成功实现了小车长时间维持平衡、奖励曲线收敛的理想效果。
在实验过程中,我们发现,Actor-Critic
算法的收敛速度并不快,另外收敛过程波动也比较大,导致这种现象的主要原因在于,在Actor-Critic
算法中,估计Q
值的网络Critic
网络存在高估Q
值的现象,这使得它的收敛比较困难。改进的方案是可以增加一个用以阶段性保存Q
值的Target-Critic
网络,这样能延缓Q
值的高估,另外再增加一组对偶的Actor-Critic
网络用于实际输出动作,而使用原先的Actor-Critic
网络发挥更新与估计功能,二者周期性同步。通过这一方案能有效解决Q
值高估的问题,同时提高网络的稳定性,加快收敛,提高训练效果。
● 相关图表链接:
- 图2.1 采用TD算法更新Critic网络权值与Q值的算法过程示意图
- 图2.2 策略梯度定义与更新过程示意图
- 图2.3 Actor-Critic 算法总结
- 图3.1 CartPole-v1倒立摆小车环境示意图
- 图4.1 Actor-Critic 算法真对倒立摆小车环境的奖励与训练局数关系曲线
以上是关于Actor-critic强化学习方法应用于CartPole-v1的主要内容,如果未能解决你的问题,请参考以下文章
深度强化学习 Actor-Critic 模型解析,附Pytorch完整代码
MATLAB教程案例67基于Actor-Critic结构强化学习的车杆平衡控制系统matlab仿真