目录
本文为Datawhale《深度强化学习基础与实践(二)》学习总结。
以下为本文参考资料:
- Reinforcement Learning: An Introduction
- 动手学强化学习(https://hrl.boyuai.com)
- JoyRL(datawhalechina/joyrl-book (github.com))
- 神经网络与深度学习,邱锡鹏
今天来整理一下REINFORCE、带基线函数的REINFORCE、AC、A2C、A3C算法。
一、REINFORCE算法
基于轨迹的梯度公式(含折扣因子):
算法伪代码:
更新参数时的源自梯度公式中的。
二、带基线函数的REINFORCE算法
REINFORCE算法的缺点是不同路径之间的方差很大,导致训练不稳定。一种减少方差的方法是引入一个基线函数,若要估计函数的期望,为了减少的方差,引入一个已知期望的函数,令
函数的期望为,方差为
取,可得方差最小值为
回到REINFORCE算法,为了减小策略梯度的方差,可以引入一个与无关的基准函数,一个自然的选择是对状态价值的估计。
三、Actor-Critic算法
在REINFORCE算法中,我们每次需要采集一条完整的轨迹,这样的采样效率较低,并且方差较大。我们可以引入一个价值函数来对当前策略进行评估,来减小方差,提高采样效率。
Actor-Critic算法是一种结合策略梯度和时序差分学习的强化学习方法,其中表演者Actor指策略函数,评论家Critic指价值函数。
四、A2C与A3C算法
AC算法能够缓解策略梯度算法的高方差,但并不能彻底解决问题。为了进一步缓解高方差问题,可以引入一个优势函数(advantage function),用来表示当前状态-动作对相对于平均水平的优势,即
这就是Advantange Actor-Critic算法,简称为A2C算法。
A2C并不是由一篇论文单独提出的,而是在异步形式的A2C算法,即A3C算法的论文中提出的,其在A2C算法原理上引入了多进程的概念,提高了训练效率。以下为原文中A3C的伪代码。
A3C算法中有多个进程,每个进程拥有一个独立的环境和智能体,每隔一段时间都会将自己的参数同步至全局网络中,由此提高训练效率。