深度强化学习(十)(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−ϵ