A3C(Asynchronous Advantage Actor-Critic)是由Google DeepMind团队于2016年提出的一种基于异步梯度的深度强化学习框架(Asynchronous Methods for Deep Reinforcement Learning),利用了多线程同时并行运行的特点,让多个Actor(演员)并行训练而定期与全局参数同步。该方法在Atari游戏和3D迷宫等方面都有不错的效果。
符号
符号
|
含义
|
|
状态。
|
|
动作。
|
|
回报。
|
|
一个轨迹中第个时间步对应的状态、动作以及回报。偶尔使用代替。
|
|
折扣因子;用于惩罚未来回报中的不确定性。
|
|
累积回报;或者说累积折扣回报。
|
|
在当前状态下采取动作后转移到下一个状态并得到回报的概率。
|
|
随机策略(智能体行为逻辑);代表由参数化的策略。
|
|
确定性策略;虽然也可以把确定性策略记为,但是采用一个不同的字母可以让我们更容易分辨一个策略到底是确定性的还是随机的。或者都是强化学习算法要学习的目标。
|
|
状态-值函数衡量状态的期望累积回报;代表由ω参数化的状态-值函数。
|
|
当智能体遵循策略时状态的期望累积回报;。
|
|
动作-值函数,与状态-值函数类似,但是它衡量在状态下采取动作后的期望累积回报;代表由参数化的动作-值函数。
|
|
与类似,当智能体遵循策略时,在状态下采取动作后的期望累积回报;
。
|
|
优势函数,;可以认为优势函数是加强版本的动作-值函数,但是由于它采用状态-值函数作为基准使得它具有更小的方差。
|
[1]
优势函数
由。
当选取k步TD后,在A3C中由于有参数,优势函数可改写为:
[2]
算法流程
异步优势Actor-Critic - 每个Actor-Learner线程的伪代码如下:
- 定义全局参数向量和以及全局计数器
- 定义线程自身参数向量和,初始化线程步数计数器
- 当:
- 重置梯度: 和
- 将线程自身的参数向量与全局参数向量同步:,
- 令线程计数器并随机采样一个初始状态
- 当(终止状态)且:
- 根据当前线程的策略选择当前执行的动作执行动作后接受回报并转移到下一个状态。
- 更新t以及并且
- 初始化保存累积回报估计值的变量:
- 对于,执行:
- 累积关于参数的梯度:
- 累积关于参数的梯度:
- 分别使用和异步更新和
[3]
改进
在Asynchronous Methods for Deep Reinforcement Learning (页面存档备份,存于互联网档案馆)中作者还将熵()加到目标函数中以避免收敛到次优确定性解,这是由于在最大化熵的过程中会避免分布过于集中,包含熵在内的完整目标函数梯度如下[4]
其中H为熵函数,是用于控制熵正则化项的超参数。
论文
[1] (页面存档备份,存于互联网档案馆)
代码实现
[2] (页面存档备份,存于互联网档案馆)
参考资料