策略梯度原理

1. 强化学习的目标

强化学习的目标是要找到一个策略 πθ\pi _{\theta },使得总体回报的期望最高:

J(θ)=Eτπθ[R(τ)]J\left ( \theta \right )=\textbf{E}_{\tau \sim \pi _{\theta}}\left [ R\left ( \tau \right ) \right ]

其中,τ\tau 是轨迹,是一系列状态和动作在时间序列上的集合:

τ=(s0,a0,s1,a1,)\tau =\left ( s_0,a_0,s_1,a_1,\cdots \right )

J(θ)J\left ( \theta \right ) 是关于轨迹 τ\tau 的期望,由期望的概念可知:

J(θ)=τpθ(τ)R(τ)dτJ\left ( \theta \right )=\int_{\tau }p_{\theta }\left ( \tau \right )R\left ( \tau \right )d\tau

其中 pθ(τ)p_{\theta }\left ( \tau \right ) 是轨迹 τ\tau 的概率,R(τ)R\left ( \tau \right ) 是轨迹 τ\tau 的回报。对期望的概念不熟悉,可以参见 Appendix 1。

轨迹 τ\tau 是由一系列状态和动作构成,轨迹的概率 pθ(τ)p_{\theta }\left ( \tau \right ) 可以表示成状态和动作的条件概率乘积:

pθ(τ)=ρ(s0)t=0πθ(atst)p(st+1st,at)p_{\theta }\left ( \tau \right )=\rho \left ( s_0 \right )\prod_{t=0}^{\infty }\pi _{\theta }\left ( a_t\mid s_t \right )p\left ( s_{t+1}\mid s_t, a_t \right )

其中,ρ(s0)\rho \left ( s_0 \right ) 是环境给的初始状态的概率,πθ(atst)\pi _{\theta }\left ( a_t\mid s_t \right ) 是策略在状态 sts_t 下选择动作 ata_t 的概率, p(st+1st,at)p\left ( s_{t+1}\mid s_t, a_t \right ) 是状态转移概率。

注意:从一开始,为了便于统一和理解,在表述策略时,都将其表示成与参数 θ\theta 是相关的:πθ\pi _{\theta }

2. 策略梯度

为了求 J(θ)J\left ( \theta \right ) 的最大值,可以使用梯度上升:

θθ+αθJ(θ)\theta \leftarrow \theta +\alpha \nabla _{\theta }J\left ( \theta \right )

那么就是求 θJ(θ)\nabla _{\theta }J\left ( \theta \right )

θJ(θ)=Eτπθ[t=0θlog  πθ(atst)R(τ)]\nabla _{\theta}J\left ( \theta \right )=\textbf{E}_{\tau \sim \pi _{\theta}}\left [ \sum_{t=0}^{\infty }\nabla _{\theta}log\;\pi _{\theta }\left ( a_t\mid s_t \right )R\left ( \tau \right ) \right ]

具体的推导过程可以参见 Appendix 2。

3. 策略梯度的更近一步

至此,我们已经推导出了策略梯度的基本公式,但是差最后一步,先上结论:

θJ(θ)=Eτπθ[tθlog  πθ(atst)G(t)]\nabla _{\theta}J\left ( \theta \right )=\textbf{E}_{\tau \sim \pi _{\theta}}\left [ \sum_{t}\nabla _{\theta}log\;\pi _{\theta }\left ( a_t\mid s_t \right )G\left ( t \right ) \right ]

其中,Gt=k=tγktrkG_t=\sum_{k=t}^{\infty }\gamma ^{k-t}r_k。用大白话讲就是期望回报不能按照整条路径计算,应该从当前往后计算,这个也可以从实际的推导出看出,具体的推导过程可以参见 Appendix 3。

4. Appendix

4.1. 期望

期望是概率论和统计学中的一个核心概念,表示随机变量的平均值。对于离散型随机变量和连续型随机变量有不同的公式形式:

  • 离散型随机变量

E[X]=xxP(X=x)\textbf{E}\left [ X \right ]=\sum _xxP\left ( X=x \right )

  • 连续型随机变量

E[X]=xp(x)dx\textbf{E}\left [ X \right ]=\int xp\left ( x \right )dx

4.2. 回报的期望的求导

θJ(θ)=θτpθ(τ)R(τ)dτ=τθpθ(τ)R(τ)dτ\begin{align*} \nabla _{\theta}J\left ( \theta \right ) &= \nabla _{\theta}\int _{\tau }p_{\theta }\left ( \tau \right )\cdot R\left ( \tau \right )d\tau \\ &= \int _{\tau }\nabla _{\theta}p_{\theta }\left ( \tau \right )\cdot R\left ( \tau \right )d\tau\\ \end{align*}

由对数的导数可知:

θlog  pθ(τ)=θpθ(τ)pθ(τ)\nabla _{\theta }log\; p_{\theta }\left ( \tau \right ) =\frac{\nabla _{\theta }p_{\theta }\left ( \tau \right )}{p_{\theta }\left ( \tau \right )}

因此:

θpθ(τ)=pθ(τ)θlog  pθ(τ)\nabla _{\theta }p_{\theta }\left ( \tau \right )= p_{\theta }\left ( \tau \right )\nabla _{\theta }log\; p_{\theta }\left ( \tau \right )

代入到上式中:

θJ(θ)=τpθ(τ)θlog  pθ(τ)R(τ)dτ=Eτπθ[θlog  pθ(τ)R(τ)]\begin{align*} \nabla _{\theta}J\left ( \theta \right ) &= \int _{\tau } p_{\theta }\left ( \tau \right )\nabla _{\theta }log\; p_{\theta }\left ( \tau \right )\cdot R\left ( \tau \right )d\tau \\ &= \textbf{E}_{\tau \sim \pi _{\theta}}\left [ \nabla _{\theta}log\;p_{\theta }\left ( \tau \right )R\left ( \tau \right ) \right ]\\ \end{align*}

再将 log  pθ(τ)log\;p_{\theta }\left ( \tau \right ) 展开:

log  pθ(τ)=log[ρ(s0)t=0πθ(atst)p(st+1st,at)]=log  ρ(s0)+t=0log  πθ(atst)+t=0log  p(st+1st,at)\begin{align*} log\;p_{\theta }\left ( \tau \right ) &= log\left [ \rho \left ( s_0 \right )\prod_{t=0}^{\infty }\pi _{\theta}\left ( a_t\mid s_t \right )p\left ( s_{t+1}\mid s_t, a_t \right ) \right ] \\ &= log\;\rho \left ( s_0 \right )+\sum_{t=0}^{\infty }log\;\pi _{\theta}\left ( a_t\mid s_t \right )+\sum_{t=0}^{\infty }log\;p\left ( s_{t+1}\mid s_t, a_t \right )\\ \end{align*}

带入到 θlog  pθ(τ)\nabla _{\theta}log\;p_{\theta }\left ( \tau \right ) 中,由于 log  ρ(s0)log\;\rho \left ( s_0 \right )t=0log  p(st+1st,at)\sum_{t=0}^{\infty }log\;p\left ( s_{t+1}\mid s_t, a_t \right ) 均和 θ\theta 无关,因此:

θlog  pθ(τ)=t=0θlog  πθ(atst)\nabla _{\theta}log\;p_{\theta }\left ( \tau \right )=\sum_{t=0}^{\infty }\nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )

最终得到:

θJ(θ)=Eτπθ[t=0θlog  πθ(atst)R(τ)]\nabla _{\theta}J\left ( \theta \right )=\textbf{E}_{\tau \sim \pi _{\theta}}\left [ \sum_{t=0}^{\infty }\nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )R\left ( \tau \right ) \right ]

4.3. 回报的期望计算

我们从 θJ(θ)\nabla _{\theta}J\left ( \theta \right ) 开始:

θJ(θ)=Eτπθ[t=0θlog  πθ(atst)R(τ)]=tEτπθ[θlog  πθ(atst)R(τ)]\begin{align*} \nabla _{\theta}J\left ( \theta \right ) &= \textbf{E}_{\tau \sim \pi _{\theta}}\left [ \sum_{t=0}^{\infty }\nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )R\left ( \tau \right ) \right ]\\ &= \sum_{t}\textbf{E}_{\tau \sim \pi _{\theta}}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )R\left ( \tau \right ) \right ] \end{align*}

将总回报 R(τ)R\left ( \tau \right ) 拆分成两个部分:

R(τ)=k<tγkrk+ktγkrkR\left ( \tau \right )=\sum _{k< t}\gamma ^kr_k+\sum _{k\geq t}\gamma ^kr_k

带入到原公式中:

θJ(θ)=t(Eτπθ[θlog  πθ(atst)k<tγkrk]+Eτπθ[θlog  πθ(atst)ktγkrk])\nabla _{\theta}J\left ( \theta \right )=\sum_{t}\left ( \textbf{E}_{\tau \sim \pi _{\theta}}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )\sum _{k< t}\gamma ^kr_k \right ]+\textbf{E}_{\tau \sim \pi _{\theta}}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )\sum _{k\geq t}\gamma ^kr_k \right ] \right )

现在需要证明的是 Eτπθ[θlog  πθ(atst)k<tγkrk]=0\textbf{E}_{\tau \sim \pi _{\theta}}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )\sum _{k< t}\gamma ^kr_k \right ]=0,这里使用到了全期望公式(Law of Total Expectation):

全期望公式(Law of Total Expectation):设$ X 是随机变量,是随机变量, Y $是另一个随机变量,只要期望存在,则有:

E[X]=E[E[XY]]\textbf{E}\left [ X \right ]=\textbf{E}\left [ \textbf{E}\left [ X\mid Y \right ] \right ]

根据上面的公式,为了简洁,令:Bt=k<tγkrkB_t=\sum _{k< t}\gamma ^kr_k,则有:

E[θlog  πθ(atst)Bt]=E[E[θlog  πθ(atst)Btst]]\textbf{E}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )B_t \right ]=\textbf{E}\left [ \textbf{E}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )B_t\mid s_t \right ] \right ]

在这里,BtB_t 只依赖于 (s0,a0,,st1,at1)\left ( s_0,a_0,\cdots ,s_{t-1},a_{t-1} \right ),与 sts_t 无关,因此,

E[θlog  πθ(atst)Btst]=BtE[θlog  πθ(atst)st]\textbf{E}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )B_t\mid s_t \right ]=B_t\cdot \textbf{E}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )\mid s_t \right ]

将后面的期望展开:

E[θlog  πθ(atst)st]=aπθ(ast)θlog  πθ(ast)=aθπθ(ast)=0\begin{align*} \textbf{E}\left [ \nabla _{\theta}log\;\pi _{\theta}\left ( a_t\mid s_t \right )\mid s_t \right ]&=\sum _a\pi _{\theta }\left ( a\mid s_t \right )\nabla _{\theta}log\;\pi _{\theta}\left ( a\mid s_t \right ) \\&= \sum _a \nabla _{\theta}\pi _{\theta}\left ( a\mid s_t \right )=0 \end{align*}

因此,就有了:

θJ(θ)=Eτπθ[tθlog  πθ(atst)G(t)]\nabla _{\theta}J\left ( \theta \right )=\textbf{E}_{\tau \sim \pi _{\theta}}\left [ \sum_{t}\nabla _{\theta}log\;\pi _{\theta }\left ( a_t\mid s_t \right )G\left ( t \right ) \right ]

其中,Gt=k=tγktrkG_t=\sum_{k=t}^{\infty }\gamma ^{k-t}r_k。注意这边折扣因子 γ\gamma 的含义。

全期望公式(Law of Total Expectation)很重要,后面还会使用到。

参考文献

[1] http://incompleteideas.net/book/RLbook2020.pdf