文章目录
在值函数的方法中,我们迭代计算的是值函数,再根据值函数改善策略;而在策略搜索方法中,我们直接对策略进行迭代计算,也就是迭代更新策略的参数值,直到累积回报的期望最大,此时的参数所对应的策略为最优策略。
Neural network as Actor
用一个Actor(Policy)玩游戏,在一个episode中得到的Total reward:
R
θ
=
∑
t
=
1
T
r
t
R_{\theta}=\sum^T_{t=1}r_t
Rθ=∑t=1Trt
即使是用同一个actor,总奖励每一次都是不一样的,我们定义 R θ ˉ \bar{R_\theta} Rθˉ为 R θ R_\theta Rθ的期望值。该期望值衡量了一个Actor, π θ ( s ) \pi_\theta(s) πθ(s), 的好坏。
- 令 τ \tau τ为一个episode, τ = { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , … , s T , a T , r T } \tau=\{s_1,a_1,r_1,s_2,a_2,r_2,\dots,s_T,a_T,r_T\} τ={s1,a1,r1,s2,a2,r2,…,sT,aT,rT}
- R ( τ ) = ∑ n = 1 N r n R(\tau)=\sum^N_{n=1}r_n R(τ)=∑n=1Nrn
- 用一个Actor玩游戏,每个 τ \tau τ都有一定的可能出现,这个出现的概率由Actor的参数 θ \theta θ决定: P ( τ ∣ θ ) P(\tau|\theta) P(τ∣θ)
- R θ ˉ = ∑ τ R ( τ ) P ( τ ∣ θ ) \bar{R_\theta}=\sum_\tau R(\tau)P(\tau|\theta) Rθˉ=∑τR(τ)P(τ∣θ)
- 用 π θ \pi_\theta πθ玩N场游戏,获得 { τ 1 , τ 2 , … , τ N } \{ \tau^1,\tau^2,\dots,\tau^N\} {τ1,τ2,…,τN}
R ˉ θ = ∑ r R ( τ ) P ( τ ∣ θ ) ≈ 1 N ∑ n = 1 N R ( τ n ) \bar R_\theta=\sum_rR(\tau)P(\tau|\theta) \approx \frac{1}{N}\sum^N_{n=1}R(\tau^n) Rˉθ=∑rR(τ)P(τ∣θ)≈N1∑n=1NR(τn)
Gradient Ascent
- 问题
θ
⋆
=
a
r
g
max
θ
R
ˉ
θ
\theta^\star =arg\text{max}_\theta \bar R_\theta
θ⋆=argmaxθRˉθ
R
ˉ
θ
=
∑
r
R
(
τ
)
P
(
τ
∣
θ
)
\bar R_\theta=\sum_rR(\tau)P(\tau|\theta)
Rˉθ=r∑R(τ)P(τ∣θ)
方法Gradient Ascent - 初始值 θ 0 \theta^0 θ0
- θ 1 ← θ 0 + η ∇ R ˉ θ 0 \theta^1 \leftarrow \theta^0+\eta\nabla \bar R_{\theta_0} θ1←θ0+η∇Rˉθ0
- θ 2 ← θ 1 + η ∇ R ˉ θ 1 \theta^2 \leftarrow \theta^1+\eta\nabla \bar R_{\theta_1} θ2←θ1+η∇Rˉθ1
- … \dots …
那么
∇
R
ˉ
θ
=
?
\nabla \bar R_\theta=?
∇Rˉθ=?
∇
R
ˉ
θ
=
∑
τ
R
(
τ
)
∇
P
(
τ
∣
θ
)
=
∑
τ
R
(
τ
)
P
(
τ
∣
θ
)
∇
P
(
τ
∣
θ
)
P
(
τ
∣
θ
)
=
∑
τ
R
(
τ
)
P
(
τ
∣
θ
)
∇
l
n
P
(
τ
∣
θ
)
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
∇
l
n
p
θ
(
τ
)
]
≈
1
N
∑
n
=
1
N
R
(
τ
n
)
∇
l
n
P
(
τ
n
∣
θ
)
\begin{aligned} \nabla\bar R_\theta &= \sum_\tau R(\tau)\nabla P(\tau|\theta) \\ &= \sum_\tau R(\tau)P(\tau|\theta)\frac{\nabla P(\tau|\theta)}{P(\tau|\theta)} \\ &=\sum_\tau R(\tau) P(\tau|\theta)\nabla lnP(\tau|\theta) \\ &=E_{\tau \sim p_\theta(\tau)}[R(\tau)\nabla ln p_\theta(\tau)] \\ & \approx \frac{1}{N}\sum^N_{n=1}R(\tau^n)\nabla ln P(\tau^n|\theta) \end{aligned}
∇Rˉθ=τ∑R(τ)∇P(τ∣θ)=τ∑R(τ)P(τ∣θ)P(τ∣θ)∇P(τ∣θ)=τ∑R(τ)P(τ∣θ)∇lnP(τ∣θ)=Eτ∼pθ(τ)[R(τ)∇lnpθ(τ)]≈N1n=1∑NR(τn)∇lnP(τn∣θ)
其中 τ = { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , … , s T , r T } \tau=\{s_1,a_1,r_1,s_2,a_2,r_2,\dots,s_T,r_T\} τ={s1,a1,r1,s2,a2,r2,…,sT,rT},
P ( τ ∣ θ ) = p ( s 1 ) p ( a 1 ∣ s 1 , θ ) p ( r 1 , s 2 ∣ s 1 , a 1 ) p ( a 2 ∣ s 2 , θ ) p ( r 2 , s 3 ∣ s 2 , a 2 ) … = p ( s 1 ) ∏ t = 1 T p ( a t ∣ s t , θ ) p ( r t , s t + 1 ∣ s t , a t ) \begin{aligned}P(\tau|\theta)&=p(s_1)p(a_1|s_1,\theta)p(r_1,s_2|s_1,a_1)p(a_2|s_2,\theta)p(r_2,s_3|s_2,a_2)\dots \\ &=p(s_1)\prod^T_{t=1}p(a_t|s_t,\theta)p(r_t,s_{t+1}|s_t,a_t) \end{aligned} P(τ∣θ)=p(s1)p(a1∣s1,θ)p(r1,s2∣s1,a1)p(a2∣s2,θ)p(r2,s3∣s2,a2)…=p(s1)t=1∏Tp(at∣st,θ)p(rt,st+1∣st,at)
下面分别阐述公式中的
∇
l
n
P
(
τ
n
∣
θ
)
,
R
(
τ
)
\nabla lnP(\tau^n|\theta), \ R(\tau)
∇lnP(τn∣θ), R(τ):
第一项
∇
l
n
P
(
τ
n
∣
θ
)
\nabla lnP(\tau^n|\theta)
∇lnP(τn∣θ)是轨迹
τ
\tau
τ的概率随参数
θ
\theta
θ变化最陡的方向。参数在该方向更新时,若沿着正方向,则该轨迹
τ
\tau
τ的概率会变大, 若沿着负方向更新,则该轨迹的概率会变小。
第二项
R
(
τ
)
R(\tau)
R(τ)控制了参数更新的方向和步⻓。
R
(
τ
)
R(\tau)
R(τ)为正且越大则参数更新后该轨迹的概率越大;
R
(
τ
)
R(\tau)
R(τ)为负,则降低该轨迹的概率,抑制该轨迹的发生。
因此,从直观上理解策略梯度时,我们发现策略梯度会增加高回报路径的概率,减小低回报路径的概率。
l
n
P
(
τ
∣
θ
)
=
l
n
p
(
s
1
)
+
∑
t
=
1
T
l
n
p
(
a
t
∣
s
t
,
θ
)
+
l
n
p
(
r
t
,
s
t
+
1
∣
s
t
,
a
t
)
lnP(\tau|\theta)=lnp(s_1)+\sum^T_{t=1}lnp(a_t|s_t,\theta)+lnp(r_t,s_{t+1}|s_t,a_t)
lnP(τ∣θ)=lnp(s1)+∑t=1Tlnp(at∣st,θ)+lnp(rt,st+1∣st,at)
∇ l n P ( τ ∣ θ ) = ∑ t = 1 T ∇ l n p ( a t ∣ s t , θ ) \nabla lnP(\tau|\theta)=\sum^T_{t=1}\nabla lnp(a_t|s_t,\theta) ∇lnP(τ∣θ)=∑t=1T∇lnp(at∣st,θ)
则
∇
R
ˉ
θ
≈
1
N
∑
n
=
1
N
R
(
τ
n
)
∇
l
n
P
(
τ
n
∣
θ
)
=
1
N
∑
n
=
1
N
R
(
τ
n
)
∑
t
=
1
T
n
∇
l
n
p
(
a
t
n
∣
s
t
n
,
θ
)
=
1
N
∑
n
=
1
N
∑
t
=
1
T
n
R
(
τ
n
)
∇
l
n
p
(
a
t
n
∣
s
t
n
,
θ
)
\begin{aligned}\nabla \bar R_\theta &\approx \frac{1}{N}\sum^N_{n=1}R(\tau^n)\nabla lnP(\tau^n|\theta)\\ &=\frac{1}{N}\sum^N_{n=1}R(\tau^n)\sum^{T_n}_{t=1}\nabla ln p(a^n_t|s^n_t,\theta)\\ &=\frac{1}{N}\sum^N_{n=1}\sum^{T_n}_{t=1}R(\tau^n)\nabla lnp(a^n_t|s^n_t,\theta) \end{aligned}
∇Rˉθ≈N1n=1∑NR(τn)∇lnP(τn∣θ)=N1n=1∑NR(τn)t=1∑Tn∇lnp(atn∣stn,θ)=N1n=1∑Nt=1∑TnR(τn)∇lnp(atn∣stn,θ)
在《RL:An Introduction》中,
p
(
a
t
n
∣
s
t
n
,
θ
)
p(a^n_t|s^n_t,\theta)
p(atn∣stn,θ) 写作
π
(
A
t
∣
S
t
,
θ
)
\pi(A_t|S_t,\theta)
π(At∣St,θ).
θ n e w ← θ o l d + η ∇ R ˉ θ o l d \theta^{new}\leftarrow \theta^{old}+\eta\nabla \bar R_{\theta^{old}} θnew←θold+η∇Rˉθold
- 为什么除以几率
p
(
a
t
n
∣
s
t
n
,
θ
)
p(a^n_t|s^n_t,\theta)
p(atn∣stn,θ)?
Monte Carlo Policy Gradient
pseudocode
Add a Baseline
有时候总奖励可能总是正的,比如说一般小奖励有很多而大奖励很少,那么PG的时候小reward的可能更新很多次,但是这样就不能很好的提高大奖励action的几率,那么有什么方法?
可以将回报减去一个Baseline, 形式:
∇
R
ˉ
θ
≈
1
N
∑
n
=
1
N
∑
t
=
1
T
n
(
R
(
τ
n
)
−
b
)
∇
l
n
p
(
a
t
n
∣
s
t
n
,
θ
)
\nabla \bar R_\theta \approx \frac{1}{N}\sum^N_{n=1}\sum^{T_n}_{t=1} (R(\tau^n) -b)\nabla lnp(a^n_t|s^n_t,\theta)
∇Rˉθ≈N1∑n=1N∑t=1Tn(R(τn)−b)∇lnp(atn∣stn,θ)
θ
t
+
1
←
θ
t
+
α
(
G
t
−
b
(
S
t
)
)
∇
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
\theta_{t+1} \leftarrow \theta_t+\alpha(G_t-b(S_t))\frac{\nabla \pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)}
θt+1←θt+α(Gt−b(St))π(At∣St,θt)∇π(At∣St,θt)
当总奖励好过baseline才将其几率增加。这样引入一个量,其策略梯度是不变的,证明提示:
E
τ
∼
p
θ
(
τ
)
[
∇
l
n
p
θ
(
τ
)
⋅
b
]
=
0
E_{\tau \sim p_\theta(\tau)}[\nabla ln p_\theta(\tau)\cdot b]=0
Eτ∼pθ(τ)[∇lnpθ(τ)⋅b]=0
理论上求使策略梯方差最小时的baseline:
令
X
=
∇
l
n
p
⋅
(
R
(
τ
(
n
)
−
b
)
,
则
有
V
a
r
(
X
)
=
E
X
2
−
E
X
ˉ
2
X=\nabla lnp\cdot(R(\tau^{(n)}-b), 则有Var(X)=EX^2-E\bar X^2
X=∇lnp⋅(R(τ(n)−b),则有Var(X)=EX2−EXˉ2,Var(X)对b求导:
∂
V
a
r
(
X
)
∂
b
=
E
(
X
∂
X
∂
b
)
=
0
\frac{\partial Var(X)}{\partial b}=E(X\frac{\partial X}{\partial b})=0
∂b∂Var(X)=E(X∂b∂X)=0
可推出:
b
=
∑
n
=
1
N
[
(
∑
t
=
1
T
n
∇
l
n
p
(
a
t
n
∣
s
t
n
,
θ
)
)
2
R
(
τ
n
)
]
∑
n
=
1
N
[
∑
t
=
1
T
n
∇
l
n
p
(
a
t
n
∣
s
t
n
,
θ
)
)
2
]
b=\frac{\sum^N_{n=1}[(\sum^{T_n}_{t=1}\nabla lnp(a^n_t|s^n_t,\theta))^2R(\tau^n)]} {\sum^N_{n=1}[\sum^{T_n}_{t=1}\nabla lnp(a^n_t|s^n_t,\theta))^2]}
b=∑n=1N[∑t=1Tn∇lnp(atn∣stn,θ))2]∑n=1N[(∑t=1Tn∇lnp(atn∣stn,θ))2R(τn)]
一般情况下baseline选择状态函数 v ^ ( S t , w ) \hat v(S_t,w) v^(St,w),其中 w w w是函数中的参数。
pseudocode
On-policy and Off-policy
importance Sampling
E
x
∼
p
[
f
(
x
)
]
≈
1
N
∑
i
=
1
N
f
(
x
i
)
E_{x \sim p}[f(x)]\approx \frac{1}{N}\sum^N_{i=1}f(x^i)
Ex∼p[f(x)]≈N1∑i=1Nf(xi)
其中
x
i
x^i
xi是从
p
(
x
)
p(x)
p(x)这个分布中采样的。
现在问题是不能从
p
(
x
)
p(x)
p(x)里面采样,那么怎么办呢?
E
x
∼
p
[
f
(
x
)
]
=
∫
f
(
x
)
p
(
x
)
d
x
=
∫
f
(
x
)
p
(
x
)
q
(
x
)
q
(
x
)
d
x
=
E
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
\begin{aligned}E_{x \sim p}[f(x)]&=\int f(x)p(x)dx \\ &=\int f(x)\frac{p(x)}{q(x)}q(x)dx \\ &=E_{x \sim q}[f(x)\frac{p(x)}{q(x)}] \end{aligned}
Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex∼q[f(x)q(x)p(x)]
可以从与p(x)相似的分布q(x)中采样。p(x)与q(x)不能相差太多,
因为虽然
E
x
∼
p
[
f
(
x
)
]
=
E
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
E_{x \sim p}[f(x)]=E_{x \sim q}[f(x)\frac{p(x)}{q(x)}]
Ex∼p[f(x)]=Ex∼q[f(x)q(x)p(x)],但是
V
a
r
x
∼
p
[
f
(
x
)
]
≠
V
a
r
x
∼
q
[
f
(
x
)
p
(
x
)
q
(
x
)
]
Var_{x\sim p}[f(x)] \neq Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}]
Varx∼p[f(x)]=Varx∼q[f(x)q(x)p(x)]
off-policy
∇
R
ˉ
θ
=
E
τ
∼
p
θ
(
τ
)
[
R
(
τ
)
∇
l
n
p
θ
(
τ
)
]
\nabla \bar R_\theta=E_{\tau \sim p_\theta(\tau)}[R(\tau)\nabla ln p_\theta(\tau)]
∇Rˉθ=Eτ∼pθ(τ)[R(τ)∇lnpθ(τ)]可换成:
∇
R
ˉ
θ
=
E
τ
∼
p
θ
′
(
τ
)
[
p
θ
(
τ
)
p
θ
′
(
τ
)
R
(
τ
)
∇
l
n
p
θ
(
τ
)
]
\nabla \bar R_\theta=E_{\tau \sim p_{\theta'}(\tau)}[\frac{p_\theta(\tau)}{p_{\theta'}(\tau)} R(\tau)\nabla ln p_\theta(\tau)]
∇Rˉθ=Eτ∼pθ′(τ)[pθ′(τ)pθ(τ)R(τ)∇lnpθ(τ)]
即由
E
(
s
t
,
a
t
)
∼
π
θ
[
A
θ
(
s
t
,
a
t
)
∇
l
n
p
θ
(
a
t
n
∣
s
t
n
)
]
E_{(s_t,a_t)\sim \pi_\theta}[A^\theta(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]
E(st,at)∼πθ[Aθ(st,at)∇lnpθ(atn∣stn)]换成
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
s
t
,
a
t
)
p
θ
′
(
s
t
,
a
t
)
A
θ
(
s
t
,
a
t
)
∇
l
n
p
θ
(
a
t
n
∣
s
t
n
)
]
E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^\theta(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]
E(st,at)∼πθ′[pθ′(st,at)pθ(st,at)Aθ(st,at)∇lnpθ(atn∣stn)]而实际上Advantage函数
A
(
s
t
,
a
t
)
A(s_t,a_t)
A(st,at)是由
θ
′
\theta'
θ′来的,则准确的式子应为:
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
s
t
,
a
t
)
p
θ
′
(
s
t
,
a
t
)
p
θ
(
s
t
)
p
θ
′
(
s
t
)
A
θ
′
(
s
t
,
a
t
)
∇
l
n
p
θ
(
a
t
n
∣
s
t
n
)
]
E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}\frac{p_\theta(s_t)}{p_{\theta'}(s_t)}A^{\theta'}(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]
E(st,at)∼πθ′[pθ′(st,at)pθ(st,at)pθ′(st)pθ(st)Aθ′(st,at)∇lnpθ(atn∣stn)].
一般为计算方便,取
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
s
t
,
a
t
)
p
θ
′
(
s
t
,
a
t
)
A
θ
′
(
s
t
,
a
t
)
∇
l
n
p
θ
(
a
t
n
∣
s
t
n
)
]
E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^{\theta'}(s_t,a_t)\nabla lnp_\theta(a^n_t|s^n_t)]
E(st,at)∼πθ′[pθ′(st,at)pθ(st,at)Aθ′(st,at)∇lnpθ(atn∣stn)].
J
θ
′
(
θ
)
=
E
(
s
t
,
a
t
)
∼
π
θ
′
[
p
θ
(
s
t
,
a
t
)
p
θ
′
(
s
t
,
a
t
)
A
θ
′
(
s
t
,
a
t
)
]
J^{\theta'}(\theta)=E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^{\theta'}(s_t,a_t)]
Jθ′(θ)=E(st,at)∼πθ′[pθ′(st,at)pθ(st,at)Aθ′(st,at)]
TRPO
#TODO
根据策略梯度的方法,参数更新方程式为:
θ
n
e
w
=
˙
θ
o
l
d
+
α
∇
θ
J
(
θ
)
\theta_{new}\dot=\theta_{old}+\alpha \nabla_\theta J(\theta)
θnew=˙θold+α∇θJ(θ)
策略梯度算法的硬伤就在更新步⻓,当步⻓不合适时,更新的参数所对应的策略是一个更不好的策略,当利用这个更不好的策略采样学习时,再次更新的参数会更差,因此很容易导致越学越差,最后崩溃。所以,合适的步⻓对于强化学习非常关键。
什么才是合适的步⻓?
合适的步⻓是指当策略更新后,回报函数的值不能更差。那么如何选择步⻓?或者说,如何找到新的策略使新的回报函数的值单调增⻓,或单调不减?这就是TRPO要解决的问题。
考虑一个有限MDP,由元组
(
S
,
A
,
P
,
r
,
ρ
0
,
γ
)
(\mathcal {S,A,P,r,\rho_0,\gamma})
(S,A,P,r,ρ0,γ),其中S是状态有限集,A是动作的有限集,
P
:
S
×
A
×
S
→
R
\mathcal {P:S\times A\times S\rightarrow} \R
P:S×A×S→R 是转移概率分布,
r
:
S
→
R
\mathcal {r:S\rightarrow\R}
r:S→R是 奖励函数,
ρ
0
:
S
→
R
\mathcal{\rho_0:S\rightarrow\R}
ρ0:S→R 是初始状态
s
0
s_0
s0的分布,
γ
∈
(
0
,
1
)
\gamma\in(0,1)
γ∈(0,1)是折扣因子。
π
\pi
π表示随机策略
π
:
S
×
A
→
[
0
,
1
]
,
令
η
(
π
)
\mathcal{\pi:S\times A\rightarrow[0,1]}, 令\eta(\pi)
π:S×A→[0,1],令η(π)表示其期望折扣奖励:
η
(
π
)
=
E
s
0
,
a
0
,
s
1
,
…
[
∑
t
=
0
∞
γ
t
r
(
s
t
)
]
\eta(\pi)=E_{s_0,a_0,s_1,\dots}[\sum^\infin_{t=0}\gamma^tr(s_t)]
η(π)=Es0,a0,s1,…[t=0∑∞γtr(st)]
其中
s
0
∼
ρ
0
(
s
o
)
,
a
t
∼
π
(
a
t
∣
s
t
)
,
s
t
+
1
∼
P
(
s
t
+
1
,
a
t
)
s_0\sim\rho_0(s_o),a_t\sim\pi(a_t|s_t),s_{t+1}\sim P(s_{t+1},a_t)
s0∼ρ0(so),at∼π(at∣st),st+1∼P(st+1,at),同时有以下状态动作函数
Q
π
Q_\pi
Qπ,值函数
V
π
V_\pi
Vπ和优势函数
A
π
A_\pi
Aπ:
Q
π
(
s
t
,
a
t
)
=
E
s
t
+
1
,
a
t
+
1
,
…
[
∑
l
=
0
∞
γ
l
r
(
s
t
+
k
)
]
,
Q_\pi(s_t,a_t)=E_{s_{t+1},a_{t+1},\dots}[\sum^\infin_{l=0}\gamma^lr(s_{t+k})],
Qπ(st,at)=Est+1,at+1,…[l=0∑∞γlr(st+k)],
V π ( s t ) = E a t , s t + 1 , … [ ∑ l = 0 ∞ γ l r ( s t + l ] , V_\pi(s_t)=E_{a_t,s_{t+1},\dots}[\sum^\infin_{l=0}\gamma^lr(s_{t+l}], Vπ(st)=Eat,st+1,…[l=0∑∞γlr(st+l],
下面是新的优势策略
π
~
\tilde \pi
π~的期望回报表示:
η
(
π
~
)
=
η
(
π
)
+
E
s
0
,
a
0
,
s
1
,
⋯
∼
π
~
[
∑
t
=
0
∞
γ
t
A
π
(
s
t
,
a
t
)
]
(trpo-1)
\eta(\tilde\pi)=\eta(\pi)+E_{s_0,a_0,s_1,\dots\sim\tilde\pi}[\sum^\infin_{t=0}\gamma^tA_\pi(s_t,a_t)]\tag{trpo-1}
η(π~)=η(π)+Es0,a0,s1,⋯∼π~[t=0∑∞γtAπ(st,at)](trpo-1)
其中 E s 0 , a 0 , s 1 , ⋯ ∼ π ~ E_{s_0,a_0,s_1,\dots\sim\tilde\pi} Es0,a0,s1,⋯∼π~表示动作都是从 a t ∼ π ~ ( ⋅ ∣ s t ) a_t\sim\tilde\pi(\cdot|s_t) at∼π~(⋅∣st)采样的。
A π ( s , a ) = Q π ( s , a ) − V π ( s ) , A_\pi(s,a)=Q_\pi(s,a)-V_\pi(s), Aπ(s,a)=Qπ(s,a)−Vπ(s),
其中
a
t
∼
π
(
a
t
∣
s
t
)
,
s
t
+
1
∼
P
(
s
t
+
1
∣
s
t
,
a
t
)
,
f
o
r
t
≥
0.
a_t\sim\pi(a_t|s_t),s_{t+1}\sim P(s_{t+1}|s_t,a_t),for\ t\ge0.
at∼π(at∣st),st+1∼P(st+1∣st,at),for t≥0.
又是函数
A
π
(
s
,
a
)
=
Q
π
(
s
,
a
)
−
V
π
(
s
)
A_\pi(s,a)=Q_\pi(s,a)-V_\pi(s)
Aπ(s,a)=Qπ(s,a)−Vπ(s)能评价当前动作值函数相对于平均值的大小。所以,这里的优势指的是动作值函数相比于当前状态的值函数的优势。如果优势函数大于零,则说明该动作比平均动作好,如果优势函数小于零,则说明当前动作不如平均动作好。
令
ρ
π
\rho_\pi
ρπ 为折扣访问频率:
ρ
π
(
s
)
=
P
(
s
0
=
s
)
+
γ
P
(
s
1
=
s
)
+
γ
2
P
(
s
2
=
s
)
+
…
,
\rho_\pi(s)=P(s_0=s)+\gamma P(s_1=s)+\gamma^2P(s_2=s)+\dots,
ρπ(s)=P(s0=s)+γP(s1=s)+γ2P(s2=s)+…,
其中
s
0
∼
ρ
0
s_0\sim\rho_0
s0∼ρ0,动作都是根据
π
\pi
π来选择的。现在用加权状态代替时间步长t重写更新等式(trpo-1):
η
(
π
~
)
=
η
(
π
)
+
∑
s
∈
S
P
(
s
t
=
s
∣
π
~
)
∑
a
∈
A
∑
t
=
0
∞
γ
t
A
π
(
s
,
a
)
π
~
(
a
∣
s
)
=
η
(
π
)
+
∑
t
=
0
∞
∑
s
P
(
s
t
=
s
∣
π
~
)
∑
a
π
~
(
a
∣
s
)
γ
t
A
π
(
s
,
a
)
=
η
(
π
)
+
∑
s
∑
t
=
0
∞
γ
t
P
(
s
t
=
s
∣
π
~
)
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
=
η
(
π
)
+
∑
s
ρ
π
~
(
s
)
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
(trpo-2)
\begin{aligned} \eta(\tilde \pi) &= \eta(\pi)+\sum_{s\in\mathcal S}P(s_t=s|\tilde\pi)\sum_{a\in \mathcal A}\sum^\infin_{t=0}\gamma^tA_\pi(s,a)\tilde\pi(a|s) \\ &= \eta(\pi)+\sum^\infin_{t=0}\sum_sP(s_t=s|\tilde\pi)\sum_a\tilde\pi(a|s)\gamma^tA_\pi(s,a)\\ & = \eta(\pi)+\sum_s\sum^\infin_{t=0} \gamma^tP(s_t=s|\tilde\pi)\sum_a\tilde\pi(a|s)A_\pi(s,a)\\ &= \eta(\pi)+\sum_s\rho_{\tilde\pi}(s)\sum_a\tilde\pi(a|s)A_\pi(s,a)\\ \end{aligned}\tag{trpo-2}
η(π~)=η(π)+s∈S∑P(st=s∣π~)a∈A∑t=0∑∞γtAπ(s,a)π~(a∣s)=η(π)+t=0∑∞s∑P(st=s∣π~)a∑π~(a∣s)γtAπ(s,a)=η(π)+s∑t=0∑∞γtP(st=s∣π~)a∑π~(a∣s)Aπ(s,a)=η(π)+s∑ρπ~(s)a∑π~(a∣s)Aπ(s,a)(trpo-2)
这一等式说明了任何
π
→
π
~
\pi\rightarrow\tilde\pi
π→π~ 每个状态s的非负期望优势的策略更新(即
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
≥
0
\sum_a\tilde\pi(a|s)A_\pi(s,a)\ge0
∑aπ~(a∣s)Aπ(s,a)≥0),能保证策略表现是递增的,或至少保持期望不变的其他位置.
在(trpo-2)中,第二项动作a是由新的策略
π
~
\tilde\pi
π~产生的,加入重要性采样,即:
∑
a
π
~
(
a
∣
s
)
A
π
~
(
s
,
a
)
=
∑
a
π
(
a
,
s
)
π
~
(
a
∣
s
)
π
(
a
,
s
)
A
π
(
a
,
s
)
\sum_a\tilde\pi(a|s)A_{\tilde\pi}(s,a)=\sum_a\pi(a,s)\frac{\tilde\pi(a|s)}{\pi(a,s)}A_{\pi}(a,s)
a∑π~(a∣s)Aπ~(s,a)=a∑π(a,s)π(a,s)π~(a∣s)Aπ(a,s)
L π ( π ~ ) = η ( π ) + ∑ s ρ π ( s ) ∑ a π ~ ( a ∣ s ) A π ( s , a ) (trpo-3) L_\pi(\tilde\pi)=\eta(\pi)+\sum_s\rho_\pi(s)\sum_a\tilde\pi(a|s)A_\pi(s,a)\tag{trpo-3} Lπ(π~)=η(π)+s∑ρπ(s)a∑π~(a∣s)Aπ(s,a)(trpo-3)
注意到
L
π
L_\pi
Lπ用的访问频率是
ρ
π
\rho_\pi
ρπ而不是
ρ
π
~
\rho_{\tilde\pi}
ρπ~, 如果策略函数可微,那么
L
π
,
η
L_\pi,\eta
Lπ,η是一阶匹配的,即
L
π
θ
0
(
π
θ
0
)
=
η
(
π
θ
0
)
,
L_{\pi_{\theta_0}}(\pi_{\theta0})=\eta(\pi_{\theta_0}),
Lπθ0(πθ0)=η(πθ0),
∇
θ
L
π
θ
0
(
π
θ
)
∣
θ
=
θ
0
=
∇
θ
η
(
π
θ
)
∣
θ
=
θ
0
.
(trpo-4)
\nabla_\theta L_{\pi_{\theta_0}(\pi_\theta)|_{\theta=\theta_0}}=\nabla_\theta\eta(\pi_\theta)|_{\theta=\theta_0}.\tag{trpo-4}
∇θLπθ0(πθ)∣θ=θ0=∇θη(πθ)∣θ=θ0.(trpo-4)
式子(trpo-4)表明能够使
L
π
θ
o
l
d
L_{\pi_{\theta_{old}}}
Lπθold改进的从
π
θ
0
→
π
~
\pi_{\theta_0}\rightarrow\tilde\pi
πθ0→π~足够小的步长也会改进
η
\eta
η,但是没有确定这个范围是多少。
。。。(to be continued)
J T R P O θ ′ ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( s t , a t ) p θ ′ ( s t , a t ) A θ ′ ( s t , a t ) ] J^{\theta'}_{TRPO}(\theta)=E_{(s_t,a_t)\sim \pi_{\theta'}}[\frac{p_\theta (s_t,a_t)}{p_{\theta'}(s_t,a_t)}A^{\theta'}(s_t,a_t)] JTRPOθ′(θ)=E(st,at)∼πθ′[pθ′(st,at)pθ(st,at)Aθ′(st,at)] , K L ( θ , θ ′ ) < δ KL(\theta,\theta')<\delta KL(θ,θ′)<δ
PPO(Proximal Policy Optimization)
Critic
Q-function
Value function
Action-Value function
Actor-Critic
Actor-Critic算法是一种无模型的,off-policy的方法,其中critic充当价值函数近似器,而actor充当政策函数近似器。在训练时,critic会预测TD误差并指导自身和actor的学习。在实践中,我们使用Advantage函数估算TD误差。为了获得更高的稳定性,我们在两个网络之间使用了共享的计算主干,并采用了折价奖励的N步公式。我们还引入了熵正则化术语(“软”学习)以鼓励探索。尽管A2C简单高效,但由于计算时间长,因此在Atari Games上运行它很快变得棘手
RL书中的内容
尽管REINCORCE-with_baseline方法同时学习了一个policy和一个state-value函数,但是我们不认为它是一个actor-critic方法,因为其状态值函数只作为baseline而不作为critic,不是用作bootsrapping(从后续状态估计值来更新状态值函数)。
首先考虑一步的Actor-Critic情况,类似的TD方法有TD(0),Sarsa(0)和Q-learning. 一步的Actor-Critic方法(用已学习的状态值函数作为baseline)如下:
θ
t
+
1
←
θ
t
+
α
(
G
t
:
t
+
1
−
v
^
(
S
t
,
w
)
)
∇
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
=
θ
t
+
α
(
R
t
+
1
+
γ
v
^
(
S
t
+
1
,
w
)
−
v
^
(
S
t
,
w
)
)
∇
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
=
θ
t
+
α
δ
t
∇
π
(
A
t
∣
S
t
,
θ
t
)
π
(
A
t
∣
S
t
,
θ
t
)
\begin{aligned} \theta_{t+1} &\leftarrow \theta_t+\alpha(G_{t:t+1}-\hat v(S_t,w))\frac{\nabla\pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} \\ &=\theta_t +\alpha(R_{t+1}+\gamma \hat v(S_{t+1},w)-\hat v(S_t,w))\frac{\nabla\pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} \\ &=\theta_t+\alpha \delta_t\frac{\nabla\pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} \end{aligned}
θt+1←θt+α(Gt:t+1−v^(St,w))π(At∣St,θt)∇π(At∣St,θt)=θt+α(Rt+1+γv^(St+1,w)−v^(St,w))π(At∣St,θt)∇π(At∣St,θt)=θt+αδtπ(At∣St,θt)∇π(At∣St,θt)
pseudocode
Hung Yi Li的讲义
在PG算法中,如果我们用Q函数来代替R,同时我们创建一个Critic网络来计算Q函数值,那么我们就得到了Actor-Critic方法。Actor参数的梯度变为
由于
G
t
n
G^n_t
Gtn的期望就是
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^n_t)
Vπθ(stn)代替,那么括号内可写成
Q
π
(
s
t
n
,
a
t
n
)
−
V
π
(
s
t
n
)
Q^\pi(s^n_t,a^n_t)-V^\pi(s^n_t)
Qπ(stn,atn)−Vπ(stn), 又有
Q
π
(
s
t
n
,
a
t
n
)
=
E
[
r
t
n
+
V
π
(
s
t
+
1
n
)
]
Q^\pi(s^n_t,a^n_t)=E[r^n_t+V^\pi(s^n_{t+1})]
Qπ(stn,atn)=E[rtn+Vπ(st+1n)],
在计算的时候每一次获取的
Q
Q
Q值为
Q
π
(
s
t
n
,
a
t
n
)
=
r
t
n
+
V
π
(
s
t
+
1
n
)
Q^\pi(s^n_t,a^n_t)=r^n_t+V^\pi(s^n_{t+1})
Qπ(stn,atn)=rtn+Vπ(st+1n),则
Q
π
(
s
t
n
,
a
t
n
)
−
V
π
(
s
t
n
)
Q^\pi(s^n_t,a^n_t)-V^\pi(s^n_t)
Qπ(stn,atn)−Vπ(stn)可用
r
t
n
+
V
π
(
s
t
+
1
n
)
−
V
π
(
s
t
n
)
r^n_t + V^\pi(s^n_{t+1})-V^\pi(s^n_t)
rtn+Vπ(st+1n)−Vπ(stn)代替.
A2C(Advantage Actor-Critic)
那么Advantage Actor-Critic的 ∇ R ˉ θ ≈ 1 N ∑ n = 1 N ∑ t = 1 T n ( r t n + V π ( s t + 1 n ) − V π ( s t n ) ) ∇ l n p θ ( a t n ∣ s t n ) \nabla \bar R_\theta \approx \frac{1}{N}\sum^N_{n=1}\sum^{T_n}_{t=1}(r^n_t+V^\pi(s^n_{t+1})-V^\pi(s^n_t))\nabla lnp_\theta(a^n_t|s^n_t) ∇Rˉθ≈N1∑n=1N∑t=1Tn(rtn+Vπ(st+1n)−Vπ(stn))∇lnpθ(atn∣stn)
Tips
- Actor π ( s ) \pi(s) π(s)和critic V π ( s ) V^\pi(s) Vπ(s)的参数能被共享
- Assign Suitable Credit. 有时候整场游戏都是正奖励,但是某些action是不好的,怎么解决这样问题?
DPG
Silver, David, Lever, Guy, Heess, Nicolas, Degris, Thomas, Wierstra,Daan, and Riedmiller, Martin. Deterministic policy gradient algorithms. In ICML, 2014
DDPG(DeepDPG)
符号定义:
一个离散时步(discrete timesteps)的环境
E
E
E,
s
t
=
(
x
1
,
a
1
,
…
,
a
t
−
1
,
x
t
)
s_t=(x_1,a_1,\dots,a_{t-1},x_t)
st=(x1,a1,…,at−1,xt),
一个Agent的动作被定义成一个策略
π
\pi
π,
一个初始状态分布
p
(
s
1
)
p(s_1)
p(s1),
状态转移概率
p
(
s
t
+
1
∣
s
t
,
a
t
)
p(s_{t+1}|s_t,a_t)
p(st+1∣st,at),
reward function
r
(
s
t
,
a
t
)
r(s_t,a_t)
r(st,at)
在一个状态的回报return定义为折扣未来奖励之和
R
t
=
∑
i
=
t
T
γ
i
−
t
r
(
s
i
,
a
i
)
,
γ
∈
[
0
,
1
]
R_t=\sum^T_{i=t}\gamma^{i-t}r(s_i,a_i),\gamma\in[0,1]
Rt=∑i=tTγi−tr(si,ai),γ∈[0,1].
注意到回报取决于策略所选择的动作,是随机的。强化学习的目标是学一个策略使一下初始分布的期望回报最大:
J
=
E
r
i
,
s
i
∼
E
,
a
i
∼
π
[
R
1
]
J=\mathbb E_{r_i,s_i\sim E,a_i\sim\pi}[R_1]
J=Eri,si∼E,ai∼π[R1]
再令
ρ
π
\rho^\pi
ρπ表示一个策略
π
\pi
π的折扣状态访问分布.
动作值函数在状态
s
t
s_t
st遵从策略
π
\pi
π采取动作
a
t
a_t
at的期望回报:
Q
π
(
s
t
,
a
t
)
=
E
r
i
≥
t
,
s
i
>
t
∼
E
,
a
i
>
t
∼
π
[
R
t
∣
s
t
,
a
t
]
(DDPG-1)
Q^\pi(s_t,a_t)=\mathbb E_{r_{i\ge t},s_{i>t}\sim E,a_{i>t}\sim\pi}[R_t|s_t,a_t]\tag{DDPG-1}
Qπ(st,at)=Eri≥t,si>t∼E,ai>t∼π[Rt∣st,at](DDPG-1)
强化学习中的许多方法都使用称为Bellman方程的递归关系:
Q
π
(
s
t
,
a
t
)
=
E
r
t
,
s
t
+
1
∼
E
{
r
(
s
t
,
a
t
)
+
γ
E
a
t
+
1
∼
π
[
Q
π
(
s
t
+
1
,
a
t
+
1
)
]
}
(DDPG-2)
Q^\pi(s_t,a_t)=\mathbb E_{r_t,s_{t+1}\sim E}\{r(s_t,a_t)+\gamma\mathbb E_{a_{t+1}\sim\pi}[Q^\pi(s_{t+1},a_{t+1})]\}\tag{DDPG-2}
Qπ(st,at)=Ert,st+1∼E{r(st,at)+γEat+1∼π[Qπ(st+1,at+1)]}(DDPG-2)
如果目标策略是确定性的(发生的概率为1),我们可以将其描述为一个函数
μ
:
S
←
A
\mathcal{\mu:S\leftarrow A}
μ:S←A以及避免内在期望:
Q
μ
(
s
t
,
a
t
)
=
E
r
t
,
s
t
+
1
∼
E
{
r
(
s
t
,
a
t
)
+
γ
Q
μ
(
s
t
+
1
,
μ
(
s
t
+
1
)
]
}
(DDPG-3)
Q^\mu(s_t,a_t)=\mathbb E_{r_t,s_{t+1}\sim E}\{r(s_t,a_t)+\gamma Q^\mu(s_{t+1},\mu(s_{t+1})]\}\tag{DDPG-3}
Qμ(st,at)=Ert,st+1∼E{r(st,at)+γQμ(st+1,μ(st+1)]}(DDPG-3)
这意味着可以去学习
Q
μ
Q^\mu
Qμ off-policy,运用一个不同的随机behavior策略
β
\beta
β产生转移对(s_t,a_t,s_{t+1}).
受到Q-learning的启发(使用一个off-policy算法,用贪婪策略
μ
(
s
)
=
a
r
g
m
a
x
a
Q
(
s
,
a
)
\mu(s)=arg\ max_aQ(s,a)
μ(s)=arg maxaQ(s,a)),我们考虑一个近似函数,七参数为
θ
Q
,
\theta^Q,
θQ,我们去优化减小下面的loss函数:
L
(
θ
Q
)
=
E
s
t
∼
ρ
β
,
a
t
∼
β
,
r
t
∼
E
[
(
Q
(
s
t
,
a
t
∣
θ
Q
)
−
y
t
)
2
]
(DDPG-4)
L(\theta^Q)=\mathbb E_{s_t\sim\rho^\beta,a_t\sim\beta,r_t\sim E}[(Q(s_t,a_t|\theta^Q)-y_t)^2]\tag{DDPG-4}
L(θQ)=Est∼ρβ,at∼β,rt∼E[(Q(st,at∣θQ)−yt)2](DDPG-4)
其中
y
t
=
r
(
s
t
,
a
t
)
+
γ
Q
(
s
t
+
1
,
μ
(
s
t
+
1
)
∣
θ
Q
)
(DDPG-5)
y_t=r(s_t,a_t)+\gamma Q(s_{t+1},\mu(s_{t+1})|\theta^Q)\tag{DDPG-5}
yt=r(st,at)+γQ(st+1,μ(st+1)∣θQ)(DDPG-5)
用基于DPG算法的actor-critic方法。DPG算法包括一个actor函数
μ
(
s
∣
θ
μ
)
\mu(s|\theta^\mu)
μ(s∣θμ),其critic函数
Q
(
s
,
a
)
Q(s,a)
Q(s,a)用Q-learning中的bellman等式去学习。actor更新,基于以下:
∇
θ
μ
J
≈
E
s
t
∼
ρ
β
[
∇
θ
μ
Q
(
s
,
a
∣
θ
Q
)
∣
s
=
s
t
,
a
=
μ
(
s
t
∣
θ
μ
)
]
=
E
s
t
∼
ρ
β
[
∇
a
Q
(
s
,
a
∣
θ
Q
)
∣
s
=
s
t
,
a
=
μ
(
s
t
)
∇
θ
μ
μ
(
s
∣
θ
μ
)
∣
s
=
s
t
]
\begin{aligned}\nabla_{\theta^\mu}J &\approx \mathbb E_{s_t\sim\rho^\beta}[\nabla_{\theta^\mu}Q(s,a|\theta^Q)|_{s=s_t,a=\mu(s_t|\theta^\mu)}]\\ &=\mathbb E_{s_t\sim\rho^\beta}[\nabla_aQ(s,a|\theta^Q)|_{s=s_t,a=\mu(s_t)}\nabla_{\theta_\mu}\mu(s|\theta^\mu)|_{s=s_t}] \end{aligned}
∇θμJ≈Est∼ρβ[∇θμQ(s,a∣θQ)∣s=st,a=μ(st∣θμ)]=Est∼ρβ[∇aQ(s,a∣θQ)∣s=st,a=μ(st)∇θμμ(s∣θμ)∣s=st]
正如DQN中,用回放缓存 R \mathcal R R,状态转移对从环境中根据探索策略来采集, ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1)被存到回放缓存中。当回放缓存满了最老的样本会被扔掉。在每个时间步长,actor和critic都会用缓存中采集的minibatch更新。因为DDPG是off-policy的,缓存可以较大,以允许算法从非相关 状态转移对 中学到东西。
直接将神经网络的Q-learning应用式子DDPG-4在多数环境下被证明是不稳定的,因为用于更新的网络
Q
(
s
,
a
∣
θ
Q
)
Q(s,a|\theta^Q)
Q(s,a∣θQ)也被用于计算目标值(DDPG-5), 其Q的更新容易产生分歧。我们的目标网络与DQN类似,但修改了actor-critic并且用了“soft“目标更新,而不是直接复制参数权值。分别复制actor和critic的网络
Q
′
(
s
,
a
∣
θ
Q
′
)
,
μ
′
(
s
∣
θ
μ
′
)
Q'(s,a|\theta^{Q'}),\mu'(s|\theta^{\mu'})
Q′(s,a∣θQ′),μ′(s∣θμ′), 用于计算目标值。
然后让网络缓慢跟踪学习的网络来更新这些目标网络的权值:
θ
′
←
τ
θ
+
(
1
−
τ
)
θ
′
,
w
i
t
h
τ
≪
1
\theta'\leftarrow\tau\theta+(1-\tau)\theta',\ with\ \tau\ll1
θ′←τθ+(1−τ)θ′, with τ≪1.这使得目标值能被限制缓慢更新,极大改善学习的稳定性。这种简单的变化使学习动作值函数的相对不稳定的问题更接近于监督学习的情况。同时具有目标µ’和Q’必须具有稳定的目标y,以便一致地训练critic而不会产生分歧。这可能会减慢学习速度,因为目标网络会延迟值估计的传播。但是,在实践中,我们发现学习的稳定性远远超过了这一点。
在连续动作空间中学习的主要挑战是探索。诸如DDPG之类的off-policy算法的优势在于,我们可以独立于学习算法来处理探索问题。我们通过将噪声过程
N
\mathcal N
N中采样的噪声添加到我们的actor策略中,构造了探索策略µ’:
μ
′
(
s
t
)
=
μ
(
s
t
∣
θ
t
μ
)
+
N
(DDPG-7)
\mu'(s_t)=\mu(s_t|\theta^\mu_t)+\mathcal N\tag{DDPG-7}
μ′(st)=μ(st∣θtμ)+N(DDPG-7)
可以
N
\mathcal N
N选择以适应环境
pseudocode:
A3C
异步地执行多个 agent, 通过并行的 agent 经历的不同状态,去除训练过程中产生的状态转移样本之间的关联性;
只需一个标准的多核CPU即可实现算法,在效果、时间和资源消耗上都优于传统方法
GA3C
使用gpu的a3c
https://openreview.net/forum?id=r1VGvBcxl¬eId=r1VGvBcxl
https://github.com/NVlabs/GA3C/tree/master/ga3c
Pathwise Derivative Policy Gradient