深度强化学习算法ACTOR-CRITIC
复习一下经典的Policy-Gradient:
先让agent和环境互动一下,最后一项某时刻t,做出动作at,可以计算出这个状态st,再看出奖励r多大。把这些奖励从t到T加起来。r前面的系数γ可以抛弃一些时间轴上久远的值,可以设0.9到1之间。b是基线,这项的目的是括号中的值有正有负。如果正数,要增加在这个状态采取这个动作的几率。这就是策略梯度(Policy-Gradient)。
具体的方法:
- 采样 n个序列,只有采样才能估计梯度的期望,采样多了就估计准了。
- 对每个策略计算梯度。
- 更新梯度。(离散动作空间使用softmax输出动作概率,连续动作空间中,一般假设每个动作的输出服从高斯分布,因此可以输出每个动作的均值。动作之间可以共用方差或各自分别学习方差。近期也有研究指出输出使用Beta分布比Gussian分布要好。)
因为互动本身是有随机性的,G的值是不确定的。实际上的做的是,对G进行随机采样,拿这些值去更新我们参数。
我们需要的目的就是直接估测这个G.就是设计一条新的网络去做G的期望值。Qπθ 是给当前状态每个动作打分。Baseline换成Vπθ(Stn)。也就是说一直到游戏结束。才知道你这个值多大。
为什么要加上期望值E呢?因为本身就具有随机性。去掉E则会让r具有随机性。但是比刚刚的G要好,因为r是某时刻。G确实所有r的总和。降低了随机性。
最后一个公式是对R求梯度,采用蒙特卡洛采样即可。
为了增加训练的速度。则可以开很多的工作。使用A3C.这玩意儿是让多个agent同时学习。
在网络设计方面,Actor和Critic可以使用不同的网络,这样学习稳定。也可以使用同一个网络,共享底层的特征。