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倒立摆强化学习

算法思想 目 录
Contents
公式推导 CartPole-v1环境 结果展示 小 结

 

§01 法思想


  Actor-Critic算法分为两部分:actorcriticactor的前身是policy gradient,可以较容易地在连续动作空间内选择合适的动作,value-basedQlearning做此操作会因为空间过大而爆炸。因为Actor是基于回合更新的,所以学习效率比较慢。因此引入value-based的算法作为Critic,就可以实现单步更新。这样两种算法相互补充就形成了Actor-Critic

  Actor基于概率选行为, Critic基于Actor的行为评判行为的得分, Actor根据Critic的评分修改选行为的概率。

  • 算法优点:可以进行单步更新, 相较于传统的PG回合更新要快.
  • 算法缺点Actor的行为取决于CriticValue,但是因为 Critic本身就很难收敛和actor一起更新的话就更难收敛了。(为了解决收敛问题,Deepmind提出了 Actor Critic升级版Deep Deterministic Policy Gradient,后者融合了DQN的优势, 解决了收敛难的问题)

 

§02 式推导


  Actor(玩家):为了玩游戏得到尽量高的reward,需要一个策略:输入state,输出action。(用神经网络来近似这个策略函数。剩下的任务就是训练神经网络,得更高的reward。这个网络就被称为actor

Critic(评委):因为actor是基于策略policy的所以需要critic来计算出对应actorvalue来反馈给actor,告诉他表现得好不好。所以就要使用到之前的Q值。(用神经网络来近似这个Qsa)。这个网络被称为critic)

  针对用以评估反映动作价值的Q值的Critic网络,采用时序差分学习算法(Temporal-Difference Learning,TD learning)更新网络权重,目标函数是由奖励r_t和带折扣因子Q值项组成的函数,用以驱动更新向目标奖励方向进行,损失函数则是以网络权重ω为自变量、Q值与目标函数间的最小二乘函数。更新过程如图1所示。

▲ 图2.1 采用TD算法更新Critic网络权值与Q值的算法过程示意图

  强化学习在决策时,还需要依赖策略进行选择。对于本算法而言,Actor网络就是完成策略更新并输出决策的部分。选择策略时可以根据策略梯度进行更新和选择,而策略梯度则是根据状态值函数进行计算的。状态值函数可以表示为在策略π的指导下,不同动作的Q值的加权和,而策略梯度可以表示为状态值函数在某一状态、某一时刻Q值网络参数下对策略参数的偏导函数。

  选择动作时,网络会根据策略参数生成一组关于不同动作的概率分布,在这一概率分布中随机选择动作,在选择完动作后,求得相应的策略梯度,并结合学习率β完成策略的更新。策略更新部分的过程如图2所示。

▲ 图2.2 策略梯度定义与更新过程示意图

  在对CriticActor网络的原理进行描述后,我们可以进一步对整个Actor-Critic算法的过程进行概述。在一次循环中,首先,观察到当前状态并根据策略概率分布π选择动作a_t,得到环境新的输出状态s_(t+1)和对应奖励r_t。随后,再根据π选择下一时刻动作a ̃_(t+1),但是不会实际将它输入到环境中,仅通过a_ta ̃_(t+1)计算对应Q值函数值q_tq_(t+1)。使用q_tq_(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结束之前,做出的每一步动作都得到1reward。玩家在游戏中要对小车施加力,使得杆不会倒下。显然行动的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值高估的问题,同时提高网络的稳定性,加快收敛,提高训练效果。


● 相关图表链接:

以上是关于Actor-critic强化学习方法应用于CartPole-v1的主要内容,如果未能解决你的问题,请参考以下文章

强化学习—— Actor-Critic

强化学习--Actor-Critic

深度强化学习 Actor-Critic 模型解析,附Pytorch完整代码

MATLAB教程案例67基于Actor-Critic结构强化学习的车杆平衡控制系统matlab仿真

CS294-112 深度强化学习 秋季学期(伯克利)NO.5 Actor-critic introduction

强化学习(十五) A3C