提出理由:: REINFORCE算法是蒙特卡洛策略梯度,整个回合结束计算总奖励 G,方差大,学习效率低。G 随机变量,给同样的状态 s,给同样的动作 a,G 可能有一个固定的分布,但是采取采样的方式,本身就有随机性。
解决方案:单步更新TD。直接估测 G 这个随机变量的期望值 ,拿期望值代替采样的值基于价值的(value-based)的方法 Q-learning。
Actor-Critic 算法,结合 策略梯度+时序差分 的方法:
- 演员(Actor)是指策略函数πθ(a∣s),即学习一个策略来得到尽量高的回报。
- 评论家(Critic)是指值函数Vπ(s),对当前策略的值函数进行估计,即评估演员的好坏。
- 借助于值函数,演员-评论家算法可以进行单步更新参数,不需要等到回合结束才进行更新。
知名算法: A3C(Asynchronous Advantage Actor-Critic)
。
- 如果去掉 Asynchronous(异步),只有
Advantage Actor-Critic
,就叫做A2C
。 - 如果加了 Asynchronous,变成
Asynchronous Advantage Actor-Critic
,就变成A3C
。
Actor-Critic
(1) Q-function 的定义 - - 在某一个状态 s,采取某一个动作 a,假设 policy 就是 π 的情况下会得到的累积奖励的期望值有多大。就是 G 的期望值。累积奖励的期望值就是 G 的期望值。
A2C Advantage Actor-Critic
出现原因:上图中 会出现两个 估计的网络 Q-network 和 V-network,估测不准的风险就变成两倍 。所以希望只有一个。
解决方案:Q 用 V表示:
理由:在状态 s 采取动作 a,会得到奖励 r,然后跳到状态 st+1。但是会得到什么样的奖励 r,跳到什么样的状态 st+1,它本身是有随机性的。所以要把右边这个式子,取期望值它才会等于 Q-function。
直接 把期望去掉, Q-function 用 r + V 取代掉 ,就不需要估计 Q 了,只需要估计 V 一个网络就够了。【经验验证结果最好的方案】
上图 rtn+Vπ(st+1n)−Vπ(stn) 叫做 Advantage function
流程:
1.初始策略 π,有个初始的 actor 去跟环境做互动,先收集资料。
2.先拿这些资料去估计价值函数,可以用 TD 或 MC 来估计价值函数 。
3. 估计完价值函数,代入梯度公式中更新策略 π。
tips
(1)绿色的Network 是 V function 橙色的 和 policy 紫色的 的网络(也就是 actor)共享的,输入都是 s,所以它们前面几个层(layer)共享的。会让 actor 跟 critic 的前面几个层 共用同一组参数,例如 那这一组参数可能是 CNN 的参数,用于 将 输入的图像像素 变成比较 高级的信息 。
- Critic 网络 Vπ(s) 输入 一个状态,输出 一个标量。
- Actor 网络 π(s) 输入 一个状态,
- 如果动作是离散的,输出就是一个动作的分布。
- 如果动作是连续的,输出就是一个连续的向量。
(2)探索(exploration)。对 π 的 输出 的分布下一个约束,使得这个分布的 熵(entropy)不要太小,也就是希望不同的动作它的被采用的概率平均一点。这样在测试的时候,它才会多尝试各种不同的动作,才会把环境探索的比较好
A3C
提出原因:强化学习训练很慢
解决方案:同时开很多个 worker,那每一个 worker 其实就是一个影分身。那最后这些影分身会把所有的经验,通通集合在一起。(需要多cpu)
注意:
1.每一个 worker 工作前都会 global network 的参数复制过来
2.每一个 actor 跟环境做互动,互动完之后,就会计算出梯度。计算出梯度以后,就会要拿梯度去更新 global network 的参数。
3.所有的 actor 都是平行跑的,每一个 actor 就是各做各的,不管彼此
Pathwise Derivative Policy Gradient
改进Q-learning,解 连续动作 的一种特别的方法