Actor-Critic Algorithm(表演者-评述者算法)
将策略梯度与值函数近似结合起来,就得到了 AC 算法,可以看作是特殊的 PG 算法。
1 QAC
QAC 是最基本的 AC 类算法,与策略梯度的算法有相同的目标函数,相同的目标函数的梯度, ∇ θ J ( θ ) = E S ∼ η , A ∼ π [ ∇ θ l n ( π ( A ∣ S , θ ) ) q π ( S , A ) ] \nabla_\theta J(\theta) = E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) q_\pi(S,A)] ∇θJ(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))qπ(S,A)]。与之不同的是 q ( S , A ) q(S,A) q(S,A)被值函数 q ( S , A , w ) q(S,A,w) q(S,A,w)替代。与 ReinForce 计算 q 值的方法不同,不再使用 MC 算法更新,而是 TD 算法更新。同时因为更新的值是 Q 值,所以被称为 QAC
1.1 生成数据
由于目标函数的梯度里的随机变量 A A A需要服从将要更新的策略 π \pi π,所以这是一种 on-policy 的方法。需要使用策略生成 { s t , a t , r t + 1 , s t + 1 , a t + 1 } \{s_t,a_t,r_{t+1},s_{t+1},a_{t+1}\} {st,at,rt+1,st+1,at+1}。
1.2 值更新(value update)(Critic)
因为值可以用来衡量策略好坏,相当于评论家,这步就是 Critic。由于策略用到
q
q
q值,所以采用与 Sarsa 与值函数结合相同的方法更新值。
w
t
+
1
=
w
t
+
α
w
(
r
t
+
1
+
γ
q
(
s
t
+
1
,
a
t
+
1
,
w
t
)
−
q
(
s
t
,
a
t
,
w
t
)
)
∇
w
q
(
s
t
,
a
t
,
w
t
)
w_{t+1} = w_t + \alpha_w (r_{t+1}+\gamma q(s_{t+1},a_{t+1},w_t)-q(s_t,a_t,w_t))\nabla_w q(s_t,a_t,w_t)
wt+1=wt+αw(rt+1+γq(st+1,at+1,wt)−q(st,at,wt))∇wq(st,at,wt)
1.3 策略更新(policy update)(Actor)
与 PG 算法相同的方式更新策略。将更新后的
q
q
q值代入。
θ
t
+
1
=
θ
t
+
α
θ
∇
θ
l
n
(
π
(
a
t
∣
s
t
,
θ
t
)
)
q
(
s
t
,
a
t
,
w
t
+
1
)
\theta_{t+1}= \theta_{t} + \alpha_\theta \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) q(s_t,a_t,w_{t+1})
θt+1=θt+αθ∇θln(π(at∣st,θt))q(st,at,wt+1)
2 A2C(Advantage Actor Critic)
为了解决 QAC 策略更新时,使用随机梯度下降采样的样本值方差大的问题,在目标函数引入一个 baseline。
∇
θ
J
(
θ
)
=
E
S
∼
η
,
A
∼
π
[
∇
θ
l
n
(
π
(
A
∣
S
,
θ
)
)
(
q
π
(
S
,
A
)
−
b
(
S
)
)
]
=
E
[
X
]
\nabla_\theta J(\theta) = E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) (q_\pi(S,A) - b(S))] = E[X]
∇θJ(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))(qπ(S,A)−b(S))]=E[X]
这个 baseline 不会使这个梯度发生变化,却能够改变随机变量
X
X
X的方差。
通过推导发现,使随机变量
X
X
X方差最小的
b
∗
(
s
)
=
E
A
∼
π
[
∥
∇
θ
π
(
A
∣
s
,
θ
)
∥
2
q
π
(
s
,
A
)
]
E
A
∼
π
[
∥
∇
θ
π
(
A
∣
s
,
θ
)
∥
2
]
b^*(s) = \Large \frac{E_{A \sim \pi}[\Vert \nabla_\theta \pi(A|s,\theta) \Vert^2 q_\pi(s,A)]}{E_{A \sim \pi}[\Vert \nabla_\theta \pi(A|s,\theta) \Vert^2]}
b∗(s)=EA∼π[∥∇θπ(A∣s,θ)∥2]EA∼π[∥∇θπ(A∣s,θ)∥2qπ(s,A)]
简化得到次优解
b
∗
(
s
)
=
E
A
∼
π
[
q
π
(
s
,
A
)
]
=
v
π
(
s
)
b^*(s) = E_{A \sim \pi}[q_\pi(s,A)] = v_\pi(s)
b∗(s)=EA∼π[qπ(s,A)]=vπ(s)
所以
∇
θ
J
(
θ
)
=
E
S
∼
η
,
A
∼
π
[
∇
θ
l
n
(
π
(
A
∣
S
,
θ
)
)
(
q
π
(
S
,
A
)
−
v
π
(
S
)
)
]
=
E
S
∼
η
,
A
∼
π
[
∇
θ
l
n
(
π
(
A
∣
S
,
θ
)
)
(
R
+
v
π
(
S
′
)
−
v
π
(
S
)
)
]
,
(可以只使用一个网络
V
,避免使用两个网络)
\begin{align} \nabla_\theta J(\theta) &= E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) (q_\pi(S,A) - v_\pi(S))]\\ &=E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) (R + v_\pi(S') - v_\pi(S))],(可以只使用一个网络V,避免使用两个网络)\\ \end{align}
∇θJ(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))(qπ(S,A)−vπ(S))]=ES∼η,A∼π[∇θln(π(A∣S,θ))(R+vπ(S′)−vπ(S))],(可以只使用一个网络V,避免使用两个网络)
并称
δ
π
(
S
,
A
)
=
q
π
(
S
,
A
)
−
v
π
(
S
)
\delta_\pi(S,A) = q_\pi(S,A) - v_\pi(S)
δπ(S,A)=qπ(S,A)−vπ(S)为 Advatage funtion,因为它表示当前动作值与当前状态所有动作值得期望的差。因此该算法也叫 Advantage Actor Critic。
2.1 生成数据
由于目标函数的梯度里的随机变量 A A A需要服从将要更新的策略 π \pi π,所以这是一种 on-policy 的方法。需要使用策略生成 { s t , a t , r t + 1 , s t + 1 } \{s_t,a_t,r_{t+1},s_{t+1}\} {st,at,rt+1,st+1}。
2.2 值更新(value update)(Critic)
因为值可以用来衡量策略好坏,相当于评论家,这步就是 Critic。由于策略用到
v
v
v值,所以采用与 TD 与值函数结合相同的方法更新值。
可以先计算 advantage funtion
δ
t
=
r
t
+
1
+
γ
v
(
s
t
+
1
,
w
t
)
−
v
(
s
t
,
w
t
)
\delta_t = r_{t+1}+\gamma v(s_{t+1},w_t)-v(s_t,w_t)
δt=rt+1+γv(st+1,wt)−v(st,wt)
w
t
+
1
=
w
t
+
α
w
δ
t
∇
w
v
(
s
t
,
w
t
)
w_{t+1} = w_t + \alpha_w \delta_t \nabla_w v(s_t,w_t)
wt+1=wt+αwδt∇wv(st,wt)
2.3 策略更新(policy update)(Actor)
与 PG 算法相同的方式更新策略。将更新后的
δ
\delta
δ值代入。
θ
t
+
1
=
θ
t
+
α
θ
∇
θ
l
n
(
π
(
a
t
∣
s
t
,
θ
t
)
)
δ
t
\theta_{t+1}= \theta_{t} + \alpha_\theta \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) \delta_t
θt+1=θt+αθ∇θln(π(at∣st,θt))δt
3 off-policy AC
前面的 AC 算法都是 on-policy 的,通过重要性采样就可以变成 off-policy。
3.1 重要性采样(important sampling)
为了实现 off-policy 就需要解决策略梯度
∇
θ
J
(
θ
)
=
E
S
∼
η
,
A
∼
π
[
∇
θ
l
n
(
π
(
A
∣
S
,
θ
)
)
q
π
(
S
,
A
)
]
\nabla_\theta J(\theta) = E_{S \sim \eta,A \sim \pi}[\nabla_\theta ln(\pi(A|S,\theta)) q_\pi(S,A)]
∇θJ(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))qπ(S,A)],
A
A
A服从
π
\pi
π的分布。思路是通过不同分布的采样,求到相同的期望。
E
X
∼
p
0
[
X
]
,
E
Y
∼
p
1
[
Y
]
E_{X \sim p_0}[X], E_{Y \sim p_1}[Y]
EX∼p0[X],EY∼p1[Y],
X
X
X和
Y
Y
Y服从不同的分布,但可以通过对
Y
Y
Y进行
p
0
(
y
)
p
1
(
y
)
y
\frac{p_0(y)}{p_1(y)}y
p1(y)p0(y)y称为
f
(
y
)
f(y)
f(y)的采样,求平均
f
ˉ
=
1
n
∑
n
f
(
y
)
≈
E
X
∼
p
0
[
X
]
\displaystyle \bar{f} = \frac{1}{n} \sum_n f(y) \approx E_{X \sim p_0}[X]
fˉ=n1n∑f(y)≈EX∼p0[X]得到
p
0
p_0
p0分布下的期望。
3.2 区别
与 A2C 算法基本相同,有以下几点区别。
- 采样与更新不再需要同一个策略,采样时使用 behavior policy—— β \beta β
- 由于不再动作的采样不再是同个分布,采用重要性采样,值更新时与 A2C 相比变成 w t + 1 = w t + α w π ( a t ∣ s t , θ t ) β ( a t ∣ s t ) δ t ∇ w v ( s t , w t ) w_{t+1} = w_t + \alpha_w \Large{\frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)}} \normalsize \delta_t \nabla_w v(s_t,w_t) wt+1=wt+αwβ(at∣st)π(at∣st,θt)δt∇wv(st,wt)
- 策略更新也采用重要性采样 θ t + 1 = θ t + α θ π ( a t ∣ s t , θ t ) β ( a t ∣ s t ) ∇ θ l n ( π ( a t ∣ s t , θ t ) ) δ t \theta_{t+1}= \theta_{t} + \alpha_\theta \Large{\frac{\pi(a_t|s_t,\theta_t)}{\beta(a_t|s_t)}} \normalsize \nabla_\theta ln(\pi(a_t|s_t,\theta_t)) \delta_t θt+1=θt+αθβ(at∣st)π(at∣st,θt)∇θln(π(at∣st,θt))δt
4 DPG(Deterministic Policy Gradient)
AC 和 PG 算法的策略都是 stochastic policy,为了应对动作空间无穷大时,采用确定性的策略可以更好的应对。
4.1 确定性策略(deterministic policy)
由
π
(
a
∣
s
,
θ
)
\pi(a|s,\theta)
π(a∣s,θ)输出的是一个概率变成
μ
(
s
,
θ
)
\mu(s,\theta)
μ(s,θ)直接输出一个动作值。
目标函数依然是
v
ˉ
μ
\bar v_\mu
vˉμ和
r
ˉ
μ
\bar r_\mu
rˉμ。梯度变成了
∇
J
(
θ
)
=
∑
s
ρ
μ
(
s
)
∇
θ
μ
(
s
)
(
∇
a
q
μ
(
s
,
a
)
)
∣
a
=
μ
(
s
)
=
E
S
∼
ρ
μ
[
∇
θ
μ
(
S
)
(
∇
a
q
μ
(
S
,
a
)
)
∣
a
=
μ
(
s
)
]
\nabla J(\theta) = \displaystyle \sum_s \rho_\mu(s) \nabla_\theta \mu(s)(\nabla_a q_\mu(s,a))|_{a = \mu(s)} = E_{S \sim \rho_\mu}[\nabla_\theta \mu(S)(\nabla_a q_\mu(S,a))|_{a = \mu(s)}]
∇J(θ)=s∑ρμ(s)∇θμ(s)(∇aqμ(s,a))∣a=μ(s)=ES∼ρμ[∇θμ(S)(∇aqμ(S,a))∣a=μ(s)]
由于目标函数梯度不需要对动作进行采样,也就跟策略无关,所以 DPG 是 off-policy 的。
4.2 步骤
- 采样:根据 behaviour policy—— β \beta β采样得到 { s t , a t , r t + 1 , s t + 1 } \{s_t,a_t,r_{t+1},s_{t+1}\} {st,at,rt+1,st+1},再根据 target policy—— μ \mu μ 采样得到 a ~ t + 1 \tilde{a}_{t+1} a~t+1。注意的是 a ~ t + 1 \tilde{a}_{t+1} a~t+1不会被用于下一次与环境的交互,所以它依然是 off-policy 的。
- 值更新: w t + 1 = w t + α w ( r t + 1 + γ q ( s t + 1 , a ~ t + 1 , w t ) − q ( s t , a t , w t ) ) ∇ w q ( s t , a t , w t ) w_{t+1} = w_t + \alpha_w (r_{t+1}+\gamma q(s_{t+1},\tilde{a}_{t+1},w_t)-q(s_t,a_t,w_t))\nabla_w q(s_t,a_t,w_t) wt+1=wt+αw(rt+1+γq(st+1,a~t+1,wt)−q(st,at,wt))∇wq(st,at,wt)
- 策略更新: θ t + 1 = θ t + α θ ∇ θ μ ( s t , θ t ) ( ∇ a q μ ( s t , a , w t + 1 ) ) ∣ a = μ ( s ) \theta_{t+1}= \theta_{t} + \alpha_\theta \nabla_\theta \mu(s_t,\theta_t)(\nabla_a q_\mu(s_t,a,w_{t+1}))|_{a = \mu(s)} θt+1=θt+αθ∇θμ(st,θt)(∇aqμ(st,a,wt+1))∣a=μ(s)