Actor-Critic框架
从策略梯度中可以看出,累积回报
在保持策略梯度不变的情况下,策略梯度可以写成:
,即轨迹的总回报,此时就是一个普通的PG算法 ,采取动作后的回报 ,加入基线的形式 ,状态-行为值函数 ,优势函数 ,TD-error
前三个直接应用轨迹的回报累计回报,由此计算出来的策略梯度不存在偏差,但是由于需要累计多步的回报,因此方差会很大;后三个利用动作值函数,优势函数和TD偏差替代累计回报,其优点是方差小,但是这三种方法都用到了逼近方法,因此计算出来的策略梯度都存在偏差,这三种方法以牺牲偏差来换取小的方差
Actor
Actor的前身是PG,它可以方便地在连续空间中选择合适的动作,但是Actor是基于一个episode的return来进行更新的,所以学习效率比较慢
Critic
不使用
AC
Actor基于概率分布选择行为,Critic基于Actor生成的行为评判得分,Actor再根据Critic的评分修改选行为的概率
- 优点:可以进行单步更新,不需要跑完一个episode再更新网络参数,相较于传统的PG算法更新更快。传统的PG对价值的估计虽然是无偏的,但是方差较大,AC方法牺牲了一点偏差,但能有效降低方差
- 缺点:Actor的行为取决于Critic的value,但是因为Critic本身就很难收敛,和Actor一起联动起来的话,就更难收敛了
AC算法与PG算法的主要区别在于:尝试去拟合一个值函数(
拟合值函数
因为实用性和便利性,绝大多数的AC算法都是仅训练一个Critic神经网络
Critic网络
一条训练数据格式如下:
损失如下: