A2C 改进了这个目标函数,引入了优势函数
A
(
s
,
a
)
=
Q
(
s
,
a
)
?
V
(
s
)
A(s, a) = Q(s, a) - V(s)
A(s,a)=Q(s,a)?V(s),其中 Q 是动作价值函数,V 是状态价值函数。这样的改变减少了方差,提高了学习稳定性。
数学表达:
?
R
θ
ˉ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
Q
π
θ
(
s
t
n
,
a
t
n
)
?
V
π
θ
(
s
t
n
)
)
?
A
τ
θ
(
s
t
n
,
a
t
n
)
?
?
log
?
p
θ
(
a
t
n
∣
s
t
n
)
\nabla\bar{R_{\theta}}\approx\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_{n}}\underbrace{(Q_{\pi_{\theta}}(s_{t}^{n},a_{t}^{n})-V_{\pi_{\theta}}(s_{t}^{n}))}_{A_{\tau_{\theta}}(s_{t}^{n},a_{t}^{n})}\cdot\nabla\log p_{\theta}\left(a_{t}^{n}\mid s_{t}^{n}\right)
?Rθ?ˉ?≈N1?∑n=1N?∑t=1Tn??Aτθ??(stn?,atn?)(Qπθ??(stn?,atn?)?Vπθ??(stn?))????logpθ?(atn?∣stn?)
作者把 Q 变成了 当前的即时奖励
r
t
n
r_{t}^{n}
rtn? 加上在下一个状态
s
t
+
1
n
s_{t+1}^{n}
st+1n? 下的预期总奖励。
Q
π
θ
(
s
t
n
,
a
t
n
)
=
r
t
n
+
V
π
θ
(
s
t
+
1
n
)
Q_{\pi_{\theta}}(s_{t}^{n},a_{t}^{n})=r_{t}^{n}+V_{\pi_{\theta}}(s_{t+1}^{n})
Qπθ??(stn?,atn?)=rtn?+Vπθ??(st+1n?)
把 2 式代入 1 式:
?
R
θ
ˉ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
r
t
n
+
V
π
θ
(
s
t
+
1
n
)
?
V
π
θ
(
s
t
n
)
)
?
A
π
θ
(
s
t
n
,
a
t
n
)
?
?
log
?
p
θ
(
a
t
n
∣
s
t
n
)
\nabla\bar{R_\theta}\approx\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}\underbrace{\left(r_t^n+V_{\pi_\theta}(s_{t+1}^n)-V_{\pi_\theta}(s_t^n)\right)}_{A_{\pi_\theta}(s_t^n,a_t^n)}\cdot\nabla\log p_\theta\left(a_t^n\mid s_t^n\right)
?Rθ?ˉ?≈N1?∑n=1N?∑t=1Tn??Aπθ??(stn?,atn?)(rtn?+Vπθ??(st+1n?)?Vπθ??(stn?))????logpθ?(atn?∣stn?)
A2C 这个公式突出优势函数的形式,演员的更新不是基于动作价值(
Q
Q
Q),只使用 V 网络,解决了 AC 算法的问题。