深度强化学习(十)(TRPO与PPO)
一.信赖域方法
原问题:
maxmize
J
(
θ
)
\text{maxmize} \qquad\qquad J(\theta)
maxmizeJ(θ)
J
J
J是个很复杂的函数,我们甚至可能不知道
J
J
J 的解析表达式(比如
J
J
J 是某个函数的期望)
现在我们可对
J
(
θ
)
J(\theta)
J(θ)进行近似成
L
(
θ
)
L(\theta)
L(θ),使用
L
(
θ
)
L(\theta)
L(θ)作为我们的目标函数(比如用均值代替期望),但这个近似仅在一定范围内成立,原问题可转化为以下问题。
maxmize
L
(
θ
)
s.t
∣
∣
θ
−
θ
n
o
w
∣
∣
2
≤
Δ
(
仅在
θ
n
o
w
邻域内成立
)
\begin{aligned} \text{maxmize}&\qquad \qquad L(\theta)\\ \text{s.t}&\qquad \qquad ||\theta-\theta_{now}||^2\leq \Delta \qquad (\text{仅在}\theta_{now}邻域内成立) \end{aligned}
maxmizes.tL(θ)∣∣θ−θnow∣∣2≤Δ(仅在θnow邻域内成立)
这样求得了新问题的解后,将新问题的解记作
θ
n
o
w
\theta_{now}
θnow,继续在
θ
n
o
w
\theta_{now}
θnow邻域内构造新的函数
L
′
(
θ
)
L'(\theta)
L′(θ)使其近似于
J
(
θ
)
J(\theta)
J(θ),继续迭代求解。
除此之外,置信域也有多种多样的选择, 既可以是二范数,也可以是两个概率分布的KL散度。
二.TRPO
Theorem:
目标函数 J ( θ ) J(\boldsymbol{\theta}) J(θ) 可以等价写成:
J ( θ ) = E S [ E A ∼ π ( ⋅ ∣ S ; θ now ) [ π ( A ∣ S ; θ ) π ( A ∣ S ; θ now ) ⋅ Q π ( S , A ) ] ] . J(\boldsymbol{\theta})=\mathbb{E}_S\left[\mathbb{E}_{A \sim \pi\left(\cdot \mid S ; \boldsymbol{\theta}_{\text {now }}\right)}\left[\frac{\pi(A \mid S ; \boldsymbol{\theta})}{\pi\left(A \mid S ; \boldsymbol{\theta}_{\text {now }}\right)} \cdot Q_\pi(S, A)\right]\right] . J(θ)=ES[EA∼π(⋅∣S;θnow )[π(A∣S;θnow )π(A∣S;θ)⋅Qπ(S,A)]].上面 Q π Q_\pi Qπ 中的 π \pi π 指的是 π ( A ∣ S ; θ ) \pi(A \mid S ; \boldsymbol{\theta}) π(A∣S;θ) 。
Proof:
J
(
θ
)
=
E
A
,
S
[
Q
π
(
S
,
A
)
]
=
E
S
[
E
A
∼
π
(
A
∣
S
;
θ
)
[
Q
π
(
S
,
A
)
]
]
=
E
S
[
∑
A
Q
π
(
S
,
a
)
⋅
π
(
a
∣
S
;
θ
)
]
=
E
S
[
∑
A
Q
π
(
S
,
a
)
⋅
π
(
A
∣
S
;
θ
)
π
(
A
∣
S
;
θ
now
)
⋅
π
(
A
∣
S
;
θ
n
o
w
)
]
=
E
S
[
E
A
∼
π
(
⋅
∣
S
;
θ
now
)
[
π
(
A
∣
S
;
θ
)
π
(
A
∣
S
;
θ
now
)
⋅
Q
π
(
S
,
A
)
]
]
\begin{aligned} J(\boldsymbol \theta)&=\Bbb E_{A,S}[Q_{\pi}(S,A)]\\ &=\Bbb E_{S}[\Bbb E_{A\sim\pi(A\mid S;\boldsymbol \theta)}[Q_{\pi}(S,A)]]\\ &=\Bbb E_{S}[\sum_{A}Q_{\pi}(S,a)\cdot\pi(a\mid S;\boldsymbol \theta)]\\ &=\Bbb E_{S}[\sum_{A}Q_{\pi}(S,a)\cdot \frac{\pi(A \mid S ; \boldsymbol{\theta})}{\pi\left(A \mid S ; \boldsymbol{\theta}_{\text {now }}\right)}\cdot \pi(A\mid S;\boldsymbol \theta_{now})]\\ &=\mathbb{E}_S\left[\mathbb{E}_{A \sim \pi\left(\cdot \mid S ; \boldsymbol{\theta}_{\text {now }}\right)}\left[\frac{\pi(A \mid S ; \boldsymbol{\theta})}{\pi\left(A \mid S ; \boldsymbol{\theta}_{\text {now }}\right)} \cdot Q_\pi(S, A)\right]\right] \end{aligned}
J(θ)=EA,S[Qπ(S,A)]=ES[EA∼π(A∣S;θ)[Qπ(S,A)]]=ES[A∑Qπ(S,a)⋅π(a∣S;θ)]=ES[A∑Qπ(S,a)⋅π(A∣S;θnow )π(A∣S;θ)⋅π(A∣S;θnow)]=ES[EA∼π(⋅∣S;θnow )[π(A∣S;θnow )π(A∣S;θ)⋅Qπ(S,A)]]
有了以上的结论,我们可以对期望做蒙特卡洛近似,从而把函数
J
J
J近似成函数
L
L
L。用策略网络
π
(
A
∣
S
;
θ
n
o
w
)
\pi(A|S;\boldsymbol \theta_{now})
π(A∣S;θnow)控制智能体跟环境交互,从头到尾玩完一局游戏, 观测到一条轨迹:
s
1
,
a
1
,
r
1
,
s
2
,
a
2
,
r
2
,
⋯
,
s
n
,
a
n
,
r
n
s_1, a_1, r_1, s_2, a_2, r_2, \cdots, s_n, a_n, r_n
s1,a1,r1,s2,a2,r2,⋯,sn,an,rn
其中的状态
{
s
t
}
t
=
1
n
\left\{s_t\right\}_{t=1}^n
{st}t=1n 都是从环境中观测到的, 其中的动作
{
a
t
}
t
=
1
n
\left\{a_t\right\}_{t=1}^n
{at}t=1n 都是根据策略网络
π
(
⋅
∣
s
t
;
θ
now
)
\pi\left(\cdot \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right)
π(⋅∣st;θnow ) 抽取的样本。所以,
π
(
a
t
∣
s
t
;
θ
)
π
(
a
t
∣
s
t
;
θ
now
)
⋅
Q
π
(
s
t
,
a
t
)
\frac{\pi\left(a_t \mid s_t ; \boldsymbol{\theta}\right)}{\pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right)} \cdot Q_\pi\left(s_t, a_t\right)
π(at∣st;θnow )π(at∣st;θ)⋅Qπ(st,at)
是无偏估计。我们观测到了
n
n
n 组状态和动作, 于是应该求平均, 把得到均值记作:
L
(
θ
∣
θ
now
)
=
1
n
∑
t
=
1
n
π
(
a
t
∣
s
t
;
θ
)
π
(
a
t
∣
s
t
;
θ
now
)
⋅
Q
π
(
s
t
,
a
t
)
⏟
期望的无偏估计
.
L\left(\boldsymbol{\theta} \mid \boldsymbol{\theta}_{\text {now }}\right)=\frac{1}{n} \sum_{t=1}^n \underbrace{\frac{\pi\left(a_t \mid s_t ; \boldsymbol{\theta}\right)}{\pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right)} \cdot Q_\pi\left(s_t, a_t\right)}_{\text { 期望的无偏估计 }} .
L(θ∣θnow )=n1t=1∑n 期望的无偏估计
π(at∣st;θnow )π(at∣st;θ)⋅Qπ(st,at).
既然连加里每一项都是期望的无偏估计, 那么 n n n 项的均值 L L L 也是无偏估计。所以可以拿 L L L 作为目标函数 J J J 的蒙特卡洛近似。
L
(
θ
∣
θ
now
)
L\left(\boldsymbol{\theta} \mid \boldsymbol{\theta}_{\text {now }}\right)
L(θ∣θnow ) 是对目标函数
J
(
θ
)
J(\boldsymbol{\theta})
J(θ) 的近似。可惜我们还无法直接对
L
L
L 求最大化, 原因是我们不知道动作价值
Q
π
(
s
t
,
a
t
)
Q_\pi\left(s_t, a_t\right)
Qπ(st,at) 。解决方法是做两次近似:
Q
π
(
s
t
,
a
t
)
⟹
Q
π
old
(
s
t
,
a
t
)
⟹
u
t
.
Q_\pi\left(s_t, a_t\right) \Longrightarrow Q_{\pi_{\text {old }}}\left(s_t, a_t\right) \Longrightarrow u_t .
Qπ(st,at)⟹Qπold (st,at)⟹ut.
公式中
Q
π
Q_\pi
Qπ 中的策略是
π
(
a
t
∣
s
t
;
θ
)
\pi\left(a_t \mid s_t ; \boldsymbol{\theta}\right)
π(at∣st;θ), 而
Q
π
old
Q_{\pi_{\text {old }}}
Qπold 中的策略则是旧策略
π
(
a
t
∣
s
t
;
θ
now
)
\pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right)
π(at∣st;θnow ) 。我们用旧策略
π
(
a
t
∣
s
t
;
θ
now
)
\pi\left(a_t \mid s_t ; \boldsymbol{\theta}_{\text {now }}\right)
π(at∣st;θnow ) 生成轨迹
{
(
s
j
,
a
j
,
r
j
,
s
j
+
1
)
}
j
=
1
n
\left\{\left(s_j, a_j, r_j, s_{j+1}\right)\right\}_{j=1}^n
{(sj,aj,rj,sj+1)}j=1n, 所以折扣回报
u
t
=
r
t
+
γ
⋅
r
t
+
1
+
γ
2
⋅
r
t
+
2
+
⋯
+
γ
n
−
t
⋅
r
n
u_t=r_t+\gamma \cdot r_{t+1}+\gamma^2 \cdot r_{t+2}+\cdots+\gamma^{n-t} \cdot r_n
ut=rt+γ⋅rt+1+γ2⋅rt+2+⋯+γn−t⋅rn
是对 Q π o l d Q_{\pi_{\mathrm{old}}} Qπold 的近似, 而未必是对 Q π Q_\pi Qπ 的近似。仅当 θ \boldsymbol{\theta} θ 接近 θ now \boldsymbol{\theta}_{\text {now }} θnow 的时候, u t u_t ut 才是 Q π Q_\pi Qπ 的有效近似。这就是为什么要强调置信域, 即 θ \boldsymbol{\theta} θ 在 θ now \boldsymbol{\theta}_{\text {now }} θnow 的邻域中。
三.PPO-惩罚
TRPO求解的原问题是
minmize
−
J
(
θ
∣
θ
n
o
w
)
s.t
KL
(
θ
∣
θ
n
o
w
)
≤
Δ
\begin{aligned} \text{minmize}&\qquad-J(\boldsymbol \theta\mid \boldsymbol \theta_{now})\\ \text{s.t}& \qquad \text{KL}(\boldsymbol\theta\mid \boldsymbol \theta_{now})\leq\Delta \end{aligned}
minmizes.t−J(θ∣θnow)KL(θ∣θnow)≤Δ
我们通过控制信赖域
Δ
\Delta
Δ来获得解。将其转化为等价优化问题,引入拉格朗日乘子
λ
\lambda
λ
maxmize
θ
maxmize
λ
J
(
θ
∣
θ
n
o
w
)
−
λ
(
KL
(
θ
∣
θ
n
o
w
)
−
Δ
)
s.t
λ
≥
0
\begin{aligned} \text{maxmize}_{\boldsymbol \theta}\quad\text{maxmize}_{\lambda}&\qquad J(\boldsymbol \theta\mid \boldsymbol \theta_{now})-\lambda(\text{KL}(\boldsymbol\theta\mid \boldsymbol \theta_{now})-\Delta)\\ \text{s.t}&\qquad \lambda\geq0 \end{aligned}
maxmizeθmaxmizeλs.tJ(θ∣θnow)−λ(KL(θ∣θnow)−Δ)λ≥0
从上式可看出拉格朗日乘子
λ
\lambda
λ与
Δ
\Delta
Δ一一对应,所以我们可以通过调整
λ
\lambda
λ间接控制
Δ
\Delta
Δ。当给定某一
λ
≥
0
\lambda\geq0
λ≥0时(例如
λ
=
1
\lambda=1
λ=1),问题可写成
maxmize
θ
J
(
θ
∣
θ
n
o
w
)
−
λ
KL
(
θ
∣
θ
n
o
w
)
\text{maxmize}_{\theta}\qquad J(\boldsymbol \theta\mid \boldsymbol \theta_{now})-\lambda\text{KL}(\boldsymbol\theta\mid \boldsymbol \theta_{now})
maxmizeθJ(θ∣θnow)−λKL(θ∣θnow)
这样我们成功的把有约束问题写成无约束形式,但如何选取
λ
\lambda
λ的值也是一个问题。我们可以分析一下
Δ
\Delta
Δ与
λ
\lambda
λ的关系。
如果信赖域 Δ \Delta Δ过小(K-L散度过大), KL ( θ ∣ θ n o w ) − Δ ≥ 0 \text{KL}(\boldsymbol\theta\mid \boldsymbol \theta_{now})-\Delta\geq0 KL(θ∣θnow)−Δ≥0,要最大化 J ( θ ∣ θ n o w ) − λ ( KL ( θ ∣ θ n o w ) − Δ ) J(\boldsymbol \theta\mid \boldsymbol \theta_{now})-\lambda(\text{KL}(\boldsymbol\theta\mid \boldsymbol \theta_{now})-\Delta) J(θ∣θnow)−λ(KL(θ∣θnow)−Δ)则 λ \lambda λ只能接近0
如果信赖域 Δ \Delta Δ过大(K-L散度过小), KL ( θ ∣ θ n o w ) − Δ ≤ 0 \text{KL}(\boldsymbol\theta\mid \boldsymbol \theta_{now})-\Delta\leq0 KL(θ∣θnow)−Δ≤0,要最大化 J ( θ ∣ θ n o w ) − λ ( KL ( θ ∣ θ n o w ) − Δ ) J(\boldsymbol \theta\mid \boldsymbol \theta_{now})-\lambda(\text{KL}(\boldsymbol\theta\mid \boldsymbol \theta_{now})-\Delta) J(θ∣θnow)−λ(KL(θ∣θnow)−Δ)则 λ \lambda λ只能接近 + ∞ +\infty +∞
所以我们有如下更新规则
令 d k = KL ( π θ k , π θ ) , λ d_k=\text{KL}\left(\pi_{\theta_k}, \pi_\theta\right) , \lambda dk=KL(πθk,πθ),λ 的更新规则如下:
- 如果 d k < δ / 1.5 d_k<\delta / 1.5 dk<δ/1.5 ,那么 λ k + 1 = λ k / 2 \lambda_{k+1}=\lambda_k / 2 λk+1=λk/2
- 如果 d k > δ × 1.5 d_k>\delta \times 1.5 dk>δ×1.5 ,那么 λ k + 1 = λ k × 2 \lambda_{k+1}=\lambda_k \times 2 λk+1=λk×2
- 否则 λ k + 1 = λ k \lambda_{k+1}=\lambda_k λk+1=λk
其中, δ \delta δ是事先设定的一个超参数,用于限制学习策略和之前一轮策略的差距。
四.PPO-截断
PPO 的另一种形式 PPO-截断(PPO-Clip)更加直接,它在目标函数中进行限制,以保证新的参数和旧的参数的差距不会太大,即:
arg
max
θ
E
S
[
E
A
∼
π
θ
n
o
w
(
⋅
∣
S
)
[
min
(
π
θ
(
A
∣
S
)
π
θ
n
o
w
(
A
∣
S
)
A
π
θ
n
o
w
(
S
,
A
)
,
clip
(
π
θ
(
A
∣
S
)
π
θ
n
o
w
(
A
∣
S
)
,
1
−
ϵ
,
1
+
ϵ
)
A
π
θ
n
o
w
(
S
,
A
)
)
]
]
\underset{\theta}{\arg \max } \mathbb{E}_{S}\left[\mathbb{E}_{A \sim \pi_{\theta_{now}}(\cdot \mid S)}\left[\min \left(\frac{\pi_\theta(A \mid S)}{\pi_{\theta_{now}}(A \mid S)} A^{\pi_{\theta_{now}}}(S, A), \operatorname{clip}\left(\frac{\pi_\theta(A \mid S)}{\pi_{\theta_{now}}(A \mid S)}, 1-\epsilon, 1+\epsilon\right) A^{\pi_{\theta_{now}}}(S, A)\right)\right]\right]
θargmaxES[EA∼πθnow(⋅∣S)[min(πθnow(A∣S)πθ(A∣S)Aπθnow(S,A),clip(πθnow(A∣S)πθ(A∣S),1−ϵ,1+ϵ)Aπθnow(S,A))]]
其中
A
(
S
,
A
)
A(S,A)
A(S,A)是优势函数,
clip
(
x
,
l
,
r
)
:
=
max
(
min
(
x
,
r
)
,
l
)
\operatorname{clip}(x, l, r):=\max (\min (x, r), l)
clip(x,l,r):=max(min(x,r),l) ,即把
x
x
x 限制在
[
l
,
r
]
[l, r]
[l,r] 内。上式中
ϵ
\epsilon
ϵ 是一个超参数,表示进行截断 (clip) 的范围。如果
A
(
s
,
a
)
>
0
A(s, a)>0
A(s,a)>0 ,说明这个动作的价值高于平均,最大化这个式子会增大
π
θ
(
a
∣
s
)
π
θ
n
o
w
(
a
∣
s
)
\frac{\pi_\theta(a \mid s)}{\pi_{\theta_{now}}(a \mid s)}
πθnow(a∣s)πθ(a∣s) ,但不会让其超过
1
+
ϵ
∘
1+\epsilon_{\circ}
1+ϵ∘ 反之,如果
A
(
s
,
a
)
<
0
A(s, a)<0
A(s,a)<0 ,说明这个动作的价值低于平均,最大化这个式子会减少
π
θ
(
a
∣
s
)
π
θ
n
o
w
(
a
∣
s
)
\frac{\pi_\theta(a \mid s)}{\pi_{\theta_{now}}(a \mid s)}
πθnow(a∣s)πθ(a∣s) ,但不会让其小于
1
−
ϵ
1-\epsilon
1−ϵ
)<0$ ,说明这个动作的价值低于平均,最大化这个式子会减少 π θ ( a ∣ s ) π θ n o w ( a ∣ s ) \frac{\pi_\theta(a \mid s)}{\pi_{\theta_{now}}(a \mid s)} πθnow(a∣s)πθ(a∣s) ,但不会让其小于 1 − ϵ 1-\epsilon 1−ϵ