⭐ 9.4 Monte Carlo policy gradient (REINFORCE)
如何用基于梯度的方法来 优化指标 以获得最优策略?
最大化 J ( θ ) J(\theta) J(θ) 的梯度上升算法
θ t + 1 = θ t + α ∇ θ J ( θ t ) = θ t + α E [ ∇ θ ln π ( A ∣ S , θ t ) q π ( S , A ) ] ( 9.31 ) \begin{aligned}\theta_{t+1}&=\theta_t+\alpha\nabla_\theta J(\theta_t)\\ &=\theta_t+\alpha{\mathbb E}\Big[\nabla_\theta \ln\pi(A|S,\theta_t)q_\pi(S,A)\Big]~~~~~~~~~~(9.31)\end{aligned} θt+1=θt+α∇θJ(θt)=θt+αE[∇θlnπ(A∣S,θt)qπ(S,A)] (9.31)
其中 α > 0 \alpha>0 α>0 是一个常数学习率。
由于式 (9.31) 的真实梯度是未知的 〔 环境模型无法获知 〕,我们可以用 通过以下算法得到的随机梯度 代替。
θ t + 1 = θ t + α ∇ θ ln π ( a t ∣ s t , θ t ) q t ( s t , a t ) ( 9.32 ) \theta_{t+1}=\theta_t+\alpha\nabla_\theta \ln\pi(a_t|s_t,\theta_t)q_t(s_t,a_t)~~~~~~~~~~(9.32) θt+1=θt+α∇θlnπ(at∣st,θt)qt(st,at) (9.32)
- 其中 q t ( s t , a t ) q_t(s_t,a_t) qt(st,at) 是 q π ( s t , a t ) q_\pi(s_t,a_t) qπ(st,at) 的近似
因为 ∇ θ ln π ( a t ∣ s t , θ t ) = ∇ θ π ( a t ∣ s t , θ t ) π ( a t ∣ s t , θ t ) \nabla_\theta\ln\pi(a_t|s_t,\theta_t)=\frac{\nabla_\theta \pi(a_t|s_t,\theta_t)}{\pi(a_t|s_t,\theta_t)} ∇θlnπ(at∣st,θt)=π(at∣st,θt)∇θπ(at∣st,θt)
将 式 (9.32) 重写为
θ t + 1 = θ t + α ∇ θ π ( a t ∣ s t , θ t ) π ( a t ∣ s t , θ t ) q t ( s t , a t ) = θ t + α q t ( s t , a t ) π ( a t ∣ s t , θ t ) ⏟ 定义为 β t ∇ θ π ( a t ∣ s t , θ t ) = θ t + α β t ∇ θ π ( a t ∣ s t , θ t ) ( 9.33 ) \begin{aligned}\theta_{t+1}&=\theta_t+\alpha\frac{\nabla_\theta \pi(a_t|s_t,\theta_t)}{\pi(a_t|s_t,\theta_t)}q_t(s_t,a_t)\\ &=\theta_t+\alpha\underbrace{\frac{q_t(s_t,a_t)}{\pi(a_t|s_t,\theta_t)}}_{定义为 ~\beta_t}\nabla_\theta \pi(a_t|s_t,\theta_t)\\ &=\theta_t+\alpha\beta_t\nabla_\theta \pi(a_t|s_t,\theta_t)~~~~~~~~~~(9.33)\end{aligned} θt+1=θt+απ(at∣st,θt)∇θπ(at∣st,θt)qt(st,at)=θt+α定义为 βt π(at∣st,θt)qt(st,at)∇θπ(at∣st,θt)=θt+αβt∇θπ(at∣st,θt) (9.33)
- 〔 通过改变 θ \theta θ 优化 π ( a t ∣ s t ) \pi(a_t|s_t) π(at∣st) 的值 〕
1、 如果 β t ≥ 0 \beta_t\geq 0 βt≥0, 选择 ( s t , a t ) (s_t,a_t) (st,at) 的概率增大。即 π ( a t ∣ s t , θ t + 1 ) ≥ π ( a t ∣ s t , θ t ) \pi(a_t|s_t,\theta_{\textcolor{blue}{t+1}})\geq\pi(a_t|s_t,\theta_{\textcolor{blue}{t}}) π(at∣st,θt+1)≥π(at∣st,θt)。 〔 梯度上升 〕
- 如果 β t < 0 \beta_t< 0 βt<0, 选择 ( s t , a t ) (s_t,a_t) (st,at) 的概率减小。即 π ( a t ∣ s t , θ t + 1 ) < π ( a t ∣ s t , θ t ) \pi(a_t|s_t,\theta_{\textcolor{blue}{t+1}})<\pi(a_t|s_t,\theta_{\textcolor{blue}{t}}) π(at∣st,θt+1)<π(at∣st,θt)。 〔 梯度下降 〕
证明上面的 直觉 ——> 数学表示
当 θ t + 1 − θ t \theta_{t+1}-\theta_t θt+1−θt 足够小,进行泰勒展开,有
~
π ( a t ∣ s t , θ t + 1 ) ≈ π ( a t ∣ s t , θ t ) + ( ∇ θ π ( a t ∣ s t , θ t ) ) T ( θ t + 1 − θ t ) = π ( a t ∣ s t , θ t ) + ( ∇ θ π ( a t ∣ s t , θ t ) ) T ⋅ α β t ∇ θ π ( a t ∣ s t , θ t ) 将式 ( 9.33 ) 代入 = π ( a t ∣ s t , θ t ) + α β t ∥ ∇ θ π ( a t ∣ s t , θ t ) ∥ 2 2 \begin{aligned}\pi(a_t|s_t,\theta_{t+1})&\approx \pi(a_t|s_t,\theta_t)+(\nabla_\theta \pi(a_t|s_t,\theta_t))^T(\theta_{t+1}-\theta_t)\\ &=\pi(a_t|s_t,\theta_t)+(\nabla_\theta \pi(a_t|s_t,\theta_t))^T·\alpha\beta_t\nabla_\theta \pi(a_t|s_t,\theta_t)~~~~~\textcolor{blue}{将 式~ (9.33)~代入} \\ &=\pi(a_t|s_t,\theta_t)+\alpha\beta_t\Vert\nabla_\theta \pi(a_t|s_t,\theta_t)\Vert_2^2\end{aligned} π(at∣st,θt+1)≈π(at∣st,θt)+(∇θπ(at∣st,θt))T(θt+1−θt)=π(at∣st,θt)+(∇θπ(at∣st,θt))T⋅αβt∇θπ(at∣st,θt) 将式 (9.33) 代入=π(at∣st,θt)+αβt∥∇θπ(at∣st,θt)∥22
显然,当 β t ≥ 0 \beta_t \geq 0 βt≥0 时, π ( a t ∣ s t , θ t + 1 ) ≥ π ( a t ∣ s t , θ t ) \pi(a_t|s_t,\theta_{\textcolor{blue}{t+1}})\geq\pi(a_t|s_t,\theta_{\textcolor{blue}{t}}) π(at∣st,θt+1)≥π(at∣st,θt)
当 β t < 0 \beta_t < 0 βt<0 时, π ( a t ∣ s t , θ t + 1 ) < π ( a t ∣ s t , θ t ) \pi(a_t|s_t,\theta_{\textcolor{blue}{t+1}})<\pi(a_t|s_t,\theta_{\textcolor{blue}{t}}) π(at∣st,θt+1)<π(at∣st,θt)
探索与利用 的折衷
2、由于 β t = q t ( s t , a t ) π ( a t ∣ s t , θ t ) \beta_t=\frac{q_t(s_t,a_t)}{\pi(a_t|s_t,\theta_t)} βt=π(at∣st,θt)qt(st,at), 该算法在某种程度上权衡了探索和利用。
- 一方面
β
t
\beta_t
βt 和
q
t
(
s
t
,
a
t
)
q_t(s_t,a_t)
qt(st,at) 成正比,如果
(
s
t
,
a
t
)
(s_t,a_t)
(st,at) 的动作价值很大,则
β
t
↑
=
q
t
(
s
t
,
a
t
)
↑
π
(
a
t
∣
s
t
,
θ
t
)
\textcolor{blue}{\beta_t↑}=\frac{q_t(s_t,a_t)↑}{\pi(a_t|s_t,\theta_t)}
βt↑=π(at∣st,θt)qt(st,at)↑,更新后的策略将增大选择
a
t
a_t
at 的概率。即
π
(
a
t
∣
s
t
,
θ
t
+
1
)
↑
=
π
(
a
t
∣
s
t
,
θ
t
)
+
α
β
t
↑
∥
∇
θ
π
(
a
t
∣
s
t
,
θ
t
)
∥
2
2
\textcolor{blue}{\pi(a_t|s_t,\theta_{t+1})↑}=\pi(a_t|s_t,\theta_t)+\alpha\beta_t↑\Vert\nabla_\theta \pi(a_t|s_t,\theta_t)\Vert_2^2
π(at∣st,θt+1)↑=π(at∣st,θt)+αβt↑∥∇θπ(at∣st,θt)∥22
即 该算法倾向于 利用 具有更大价值的动作。 - 当
q
t
(
s
t
,
a
t
)
>
0
q_t(s_t,a_t)>0
qt(st,at)>0, 如果选择
a
t
a_t
at 的概率很小,即
π
(
a
t
∣
s
t
,
θ
t
)
\pi(a_t|s_t,\theta_t)
π(at∣st,θt) 很小,将会使得
β
t
\beta_t
βt 变大 〔
β
t
↑
=
q
t
(
s
t
,
a
t
)
π
(
a
t
∣
s
t
,
θ
t
)
↓
\textcolor{blue}{\beta_t↑}=\frac{q_t(s_t,a_t)}{\pi(a_t|s_t,\theta_t)↓}
βt↑=π(at∣st,θt)↓qt(st,at)〕,更新后的策略会增大这个动作的选择概率。类似地,
π
(
a
t
∣
s
t
,
θ
t
+
1
)
↑
\pi(a_t|s_t,\theta_{t+1})↑
π(at∣st,θt+1)↑
即该算法倾向于探索具有低概率的动作。
————————
梯度近似需要的样本 如何获取?
采样 S S S: S ∼ η S\sim\eta S∼η。不是 d π d_\pi dπ 就是 ρ π \rho_\pi ρπ,表示策略 π \pi π 下的长期行为。
采样
A
A
A: 遵循
π
(
a
∣
s
t
,
θ
t
)
\pi(a|s_t,\theta_t)
π(a∣st,θt) 选择
a
t
a_t
at
on-policy 同策略。
实际代码实现中:首先通过 遵循 π ( θ ) \pi(\theta) π(θ) 生成一个回合。然后,使用回合中的每个经验样本多次更新 θ \theta θ。
伪码
算法 9.1:REINFORCE
初始化: 策略网络权重参数 θ \theta θ;折扣因子 γ ∈ ( 0 , 1 ) \gamma \in (0,1) γ∈(0,1); 优化学习率 α > 0 \alpha>0 α>0
目标: 学习可将 J ( θ ) J(\theta) J(θ) 最大化的最优策略
对每个回合, d o \bf do do:
~~~~~~~ 遵循策略 π ( θ ) \pi(\theta) π(θ) 生成一个回合 { s 0 , a 0 , r 1 , ⋯ , s T − 1 , a T − 1 , r T } \{\textcolor{blue}{s_0,a_0,r_1},\cdots,\textcolor{blue}{s_{T-1},a_{T-1},r_T}\} {s0,a0,r1,⋯,sT−1,aT−1,rT}
~~~~~~~ 对于 t = 0 , 1 , ⋯ , T − 1 : t=0,1,\cdots,T-1: t=0,1,⋯,T−1:
~~~~~~~~~~~~~~ 价值更新: q t ( s t , a t ) = ∑ k = t + 1 T γ k − t − 1 r k = r t + 1 + γ r t + 2 + γ 2 r t + 3 + ⋯ q_t(s_t,a_t)=\sum\limits_{k=t+1}^T\gamma^{k-t-1}r_k=r_{t+1}+\gamma r_{t+2}+\gamma^2 r_{t+3}+\cdots qt(st,at)=k=t+1∑Tγk−t−1rk=rt+1+γrt+2+γ2rt+3+⋯
~~~~~~~~~~~~~~ 策略更新: θ ← θ + α ∇ θ ln π ( a t ∣ s t , θ ) q t ( s t , a t ) \theta\leftarrow\theta+\alpha\nabla_\theta\ln\pi(a_t|s_t,\theta)q_t(s_t,a_t) θ←θ+α∇θlnπ(at∣st,θ)qt(st,at)
9.5 总结
梯度在不同情况下的表达式是相似的。
9.6 Q & A
策略梯度方法的基本思想: 即定义合适的标量指标,推导其梯度,然后使用梯度上升方法对指标进行优化。
策略梯度方法常见指标: v ˉ π \bar v_\pi vˉπ, v ˉ π 0 \bar v_\pi^0 vˉπ0, r ˉ π \bar r_\pi rˉπ
策略梯度里包含自然对数的原因: 引入自然对数函数,将梯度表示为期望值。通过这种方式,我们可以用随机梯度近似真实的梯度。