1. Policy Gradient的不足
在Policy Gradient中提到,Policy Gradient 算法在计算Reward时需要对数据进行采样:
在采样的过程中,有很大的随机性,不太稳定。那么,能不能直接通过估计
G
t
n
G_t^n
Gtn的期望值,使用期望值来代替sample的值,这样可以保证稳定性。
2. 改进方法
Actor-Critic 的 Actor 的前生是 Policy Gradients , 这能让它毫不费力地在连续动作中选取合适的动作, 而 Q-learning 做这件事会很吃力。 那为什么不直接用 Policy Gradients 呢? 因为 Actor Critic 中的 Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法 , 能进行单步更新, 而传统的 Policy Gradients 则是回合更新, 这降低了学习效率。所以就想到把两者结合起来变成Actor-Critic。
要解决这个问题,需要引入value base的方法,也就是Q learning,其中Q learning有两种方法:
根据Q的定义,可以将
∑
t
′
=
t
T
n
y
t
′
−
t
r
t
′
n
\sum_{t'=t}^{T_n}y^{t'-t}r_{t'}^n
∑t′=tTnyt′−trt′n替换成
Q
π
θ
(
s
t
n
,
a
t
n
)
Q^{\pi_\theta}(s^n_t,a^n_t)
Qπθ(stn,atn),然后baseline一般指定为
V
π
θ
(
s
t
n
)
V^{\pi_\theta}(s_t^n)
Vπθ(stn)
但是这样就有个问题:需要估计两个network,这样就有2倍的风险。
按照定义:
Q
π
(
s
t
n
,
a
t
n
)
=
E
[
r
t
+
V
π
(
s
t
+
1
)
∣
s
t
=
s
,
a
t
=
π
′
(
s
t
)
]
Q^{\pi}(s_t^n,a_t^n) = E[r_{t}+V^{\pi}(s_{t+1})|s_t=s, a_t=\pi'(s_t)]
Qπ(stn,atn)=E[rt+Vπ(st+1)∣st=s,at=π′(st)]
这里取期望的原因是,跳转到什么样的状态,得到什么样的reward本来就有随机性,所以要取期望来减少随机性
这也是可以近似的认为下式的原因,虽然也有一定的随机性,但是随机性比原来要小。
所以,就有:
所以,整个流程为:
首先用
π
\pi
π与环境做互动,收集原始的资料,收集到的资料没有去估计policy,而是去估计value function(TD或MC方法)然后套用优化公式去更新
π
\pi
π。
3. 小技巧
那么,在Advantage Actor Critic中,需要估计的网络其实有两个,一个用于估计当前State中需要采取怎么样的action,另一个用于估计value。考虑到前面提取特征的网络结构,可以设计成下面结构:
通常情况下,会对
π
(
s
)
\pi(s)
π(s)进行一个限制,希望
π
(
s
)
\pi(s)
π(s)的entropy不要太小,这样的话agent在面临相同state的时候可以采取不同的action。
4. A3C
其实就是在工程上并行化A2C,所有的actor都是各做各的,所以当actor完成后,强行覆盖原始的参数,不管这个参数是不是一开始agent拿到的。
5. Pathwise Derivative Policy Gradient
在原来的Critic-Actor中,Critic仅仅是告诉agent这个action好还是不好,并没有指出哪一个action是最好的,而这种Pathwise Derivative Policy Gradient 则可以指导怎么选择action。
所以,一个基本的思路是这样的,我们希望找一个Actor,将state s输入这个Actor中,得到一个action a,将这个a和s丢入Qfunction中,可以让Q function的值越大越好。可以参考GAN网络的运行机制。