date: 2020/05/19

Whispering My Love - Nai Br.XX / Celeina Ann


参考:机器学习深度学习(李宏毅) - Actor-Critic


Actor with Critic

以policy-based的actor为主体,融入value-based的critic;

一般Policy Gradient的改进技巧在这里依旧同样适用


AC: Actor-Critic

回顾Policy Gradient,梯度的计算公式如下,

,在实际训练过程中,是很不稳定的——这是因为G值很可能差异很大,而我们采样的数量却很少,容易采样到比较极端的数值。

所以我们会想到,能不能用稳定的的期望来替代采样的呢?答案显然是可以的,按照Q Learning的定义,恰好就是这个期望,也即

,所以我们不妨将其作为baseline;

此时新的梯度公式变为

这就是一个基本的Actor-Critic,同时融合了policy-based的方法和value-based的方法。


A2C: Advantage Actor-Critic

AC使用了两个网络来分别估计value,既不容易训练,又容易出现估计偏差。所以A2C通过建立之间的联系,来使用一个统一的网络进行估计。

具体来说,

状态下采取动作,获得奖励并且进入下一个状态

估计了在状态下采取动作后未来的累计奖励;

估计了在状态下未来的累计奖励;

考虑到是个随机变量,可以知道有

在实际训练时我们不妨去掉外层的期望计算,直接假设

(这很直接、粗暴,但可以经过实验证明,这样的操作确实是有效的)

那么梯度计算公式就进一步变为

其中括号里边的部分就称为Advantage Function,记作

这样一来,我们就只用一个网络来进行评估,要比AC简单的多。


除此之外,还可以另Actor和Critic共享一部分浅层网络,进一步简化网络结果和训练过程:

image.png

并且用action的熵来对actor的输出进行约束,鼓励其action具有较大的熵值,从而提高探索exploration的效果。


A3C: Asynchronous Advantage Actor-Critic

A2C相对于AC已经简单了不少,但不幸的是A2C训练起来依旧挺慢的,于是A3C提出一种并行的高效训练技巧。思路其实也不难——在不同的计算设备上前传和反传,然后在一个全局网络Global Network上进行权重的更新。

image.png

具体来说,

  1. 将Global Network的权重复制给各个Worker的网络
  2. 不同Worker各自采样数据然后跟环境交互,并计算出梯度
  3. 计算完梯度的Worker将梯度传回给Global Network进行更新(谁先传梯度就先用谁的梯度更新权重,不需要等所有Worker的梯度都到齐)
  4. 每迭代一段时间后重新将Global Network的权重复制给各个Worker上的网络


Critic with Actor

以value-based的critic为主体,融入policy-based的actor;

一般Q Learning的改进技巧在这里依旧同样适用


Pathwise Derivative Policy Gradient

借鉴GAN的训练思路,引入Actor来充当优化目标的solver

论文:


image.png

(阶段一:训练Critic)


image.png

(阶段二:冻结Critic,训练Actor)


具体来说,对于每个episode的每个时间步

分别记训练QFunction、目标QFunction为;记训练ctor、目标actor为

Q Learning

Pathwise Derivative Policy Gradient

根据和状态采取动作,将四元组塞入buffer

根据  和状态采取动作,将四元组塞入buffer

在buffer中随机抽样组成batch

在buffer中随机抽样组成batch
为目标来训练为目标来训练


冻结以最大化为目标来训练
每迭代一定次数后,用的权重更新每迭代一定次数后,用的权重更新的权重更新