更新记录

2025-12-15:从策略下的系统演进路径$\tau$推导PG为什么不需要对环境迁移概率求导$p(\boldsymbol s_{t},r|\boldsymbol s_{t-1},\boldsymbol a_{t-1})$从而引入baseline

1. 为什么要有Policy Gradient

学习RL(三)当中提到,相比策略评估和策略迭代分开进行的方法,GPI已经有了进步,能够在策略评估的阶段就先把actions: $\mathcal{A}$(离散的)遍历一遍,找到使得action-value$:Q_\pi(s,a)$ (为了把概念表达清晰,这里我想纠正我之前的blog当中对action-value采用的符号:$q(s,a)$)最大的那个$a$ : $\arg\max_{a \in \mathcal{A}} Q_\pi(s, a)$。之前在写blog的时候,脑子里面一直就藏着一个大问号:如果是控制电机的转速这种连续的场景,该怎么遍历 $\mathcal{A}$呢?当时我的想法是将 $\mathcal{A}$分段考虑,但是直到我知道有Policy Gradient

2. 什么是函数的Gradient

梯度一般是在函数自变量空间当中的一个向量(假设函数的自变量是一个向量),坐标系统是在一个垂直正交的系统中,$\nabla$就是一个在坐标系统中有方向有大小的向量,方向代表了自变量沿着该方向移动微小距离$dr$,函数变化最大。$df=||f(\boldsymbol x + dr\cdot \nabla f(\boldsymbol x))-f(\boldsymbol x)|| \geq || f(\boldsymbol x + dr\cdot \boldsymbol \alpha)-f(\boldsymbol x)|| \boldsymbol (\alpha \text{ is any vector in } \boldsymbol X$)。 梯度示意图 图1: 梯度方向示意。$\nabla f(\boldsymbol x)$ 指向函数值变化最快的方向。

3. 从价值函数推导

$$ J(\theta) = \sum_{s \in \mathcal{S}} d_\pi(s) V_\pi(s) = \sum_{s \in \mathcal{S}} d_\pi(s) \sum_{a \in \mathcal{A}} \pi_\theta(a \vert s) Q_\pi(s, a) \tag{1} $$ 对比之前的依据action-value$:Q_\pi(s,a)$寻找$s$上的$a_{best}$,本方法依旧会使用$:Q_\pi(s,a)$,但是并不在每次的迭代中(GDI)去直接做action的选择,而是参与到对(1)的梯度计算当中。

In this chapter we consider methods for learning the policy parameter based on the gradient of some performance measure $J(\theta)$ with respect to the policy parameter. These methods seek to maximize performance, so their updates approximate gradient ascent in $J$: $$ \theta_{t+1} = \theta_{t} + \alpha \hat {\triangledown J(\theta_t)} $$

Sutton’s Book解释了为什么要计算$J(\theta)$的梯度,因为每次迭代的过程其实就是先计算该梯度$\triangledown J(\theta_t)$,然后更新$\theta$, 直到最后更新的变化量很小,终止迭代,完成学习。

  • 为了推导$\nabla J(\theta)$,首先针对$\nabla V_\pi(s)$进行梯度计算。

  • 下面的图作为一个提纲性的指导,把如何迭代地计算某状态$s$的价值函数对$\theta$的梯度进行了分解。

  • 推导过程中,因为策略$\pi$是关于$\theta$的函数,所以$\pi_\theta(a|s)$,$Q_\pi(s,a)$都是关于$\theta$的函数。

  • 使用实际应用的推导 $$ \begin{aligned} & \nabla Q_{\pi}(\boldsymbol s, a)=\nabla \sum_{r \in Reward,s’ \in S}[p(\boldsymbol s’,r|\boldsymbol s,a)(r + \gamma v_{\pi}(\boldsymbol s’))] \\ & = \sum_{r,s’}\nabla [p(\boldsymbol s’,r|\boldsymbol s,a)r] + \sum_{r,s’}\gamma \nabla [p(\boldsymbol s’,r|\boldsymbol s,a)v_{\pi}(\boldsymbol s’)] \\ & =\sum_{r,s’}r\nabla p(\boldsymbol s’,r|\boldsymbol s,a) + \sum_{r,s’}\gamma [\nabla p(\boldsymbol s’,r|\boldsymbol s,a)v_{\pi}(\boldsymbol s’)+p(\boldsymbol s’,r|\boldsymbol s,a)\nabla v_{\pi}(\boldsymbol s’)] \\ & =\boldsymbol 0 + \sum_{r,s’}\gamma p(\boldsymbol s’,r|\boldsymbol s,a)\nabla v_{\pi}(\boldsymbol s’)) \leftarrow \text{ why } p(\boldsymbol s’,r|\boldsymbol s,a) \text{ is not a function of } \theta \\ & =\sum_{s’}\gamma p(\boldsymbol s’|\boldsymbol s,a)\nabla v_{\pi}(\boldsymbol s’)) \leftarrow \gamma \text{ is discount rate } \\ \end{aligned} $$

  • 上面的问题,我从书里找到了答案:$p(\boldsymbol s’,r|\boldsymbol s,a)$是环境的输出,在agent基于$\boldsymbol s$采取行动$a$之后,输出了$r$和新的$\boldsymbol s’$。配合下面的图一起看。

这个事件发生的概率$p(\boldsymbol s’,r|\boldsymbol s,a)$是纯粹由环境决定的,跟agent采取什么样的策略无关。所以,该概率不是$\theta$的函数,从而求梯度为0。

Agent与环境交互示意 图2: Agent与环境交互。Agent 依据策略 $\pi_\theta(\boldsymbol a|\boldsymbol s)$ 选择动作,环境依据状态转移概率 $p(\boldsymbol s’,\boldsymbol r|\boldsymbol s,\boldsymbol a)$ 决定下一状态和奖励。注意状态转移概率仅由环境决定,与策略参数 $\theta$ 无关。

  • 继续推导,把上面对行动价值的梯度结果写入到对价值函数的梯度当中,如下图Policy Gradient的第一个公式,观察该公式是遍历了状态$\boldsymbol s$之后的所有可能$a$。

  • $\phi(s)$和$\rho_\pi(s_0 \rightarrow x|1)$都是关于状态的函数,跟action无关,最后推导的结果是$\nabla_\theta V_\pi(s)=\sum_{x\in\mathcal{S}}\sum_{k=0}^\infty \rho^\pi(s \to x, k) \phi(x)$,把action隐藏起来了。

  • 直接对策略优化的方法,是on-policy的一种。由于$J(\theta)$事先并不知道,在一个episode开始的时候,从某一个状态$\boldsymbol s_0$起步,把$V_\pi(\boldsymbol s_0)$当作是$J(\theta)$,所以:$\nabla_\theta J(\theta)=\nabla_\theta V_\pi(\boldsymbol s_0)$

  • 下图解释了在状态离散的情况下,$\eta(s)$是某种状态$s$出现的次数,通过归一化,就可以计算该状态出现的概率,从而可以扩展到连续状态下,该状态出现的概率密度。

图3: On-policy 状态分布示意。$\eta(s)$ 表示状态 $s$ 的 visitation count,通过归一化可得状态出现的概率密度。

图4: Policy Gradient 核心公式。策略梯度定理将 $\nabla_\theta V_\pi(\boldsymbol s)$ 分解为状态分布加权和与动作梯度之和。

4. baseline的引入

先放上让人望而生畏的公式:

$$ \theta ^{\star} = \arg _{\theta} max \mathbb{E} _{\pi _{\theta}} \big( \sum _{t=0}^{T-1}\gamma ^t r_t\big) $$

只看这个没有思路。

衡量一个策略$\pi_{\boldsymbol \theta}$是否好(some performance measure of policy)$J(\boldsymbol \theta)$从回合制(Episodic)来讲,就是看积累的收益$G_{\boldsymbol \theta}=\sum_{t=0}^{t=T-1} \gamma^t r_t$的期望:$\mathbb E(G_{\boldsymbol \theta})$大还是小;好的$\pi_{\boldsymbol \theta}$能够提升$\mathbb E(G_{\boldsymbol \theta})$,那么就存在一个$\boldsymbol \theta$使得$\mathbb E(G_{\boldsymbol \theta})$最大化。不同的策略会导致在环境当中的路径不同:如何定义路径?如果只是状态$\boldsymbol s$和$r$,那就跟策略没关系了,我们需要把策略连带进来:在相同的状态下,不同策略选择的行动是不一样的,按照某一种策略行动所得到的$G$和按照另外一种策略行动所得到$G’$是不一样的,这个过程是靠积累才慢慢看出来的,所以,就是靠路径区分不同策略。Going Deeper Into Reinforcement Learning: Fundamentals of Policy Gradients。后面的推导,其实是建立在这个想法的基础上的。我觉得文章作者的这个Trajectory:$\tau$的提出非常好,既跟环境联系,也跟策略联系起来。 $$ \tau = (s_0, a_0, r_0, s_1, a_1, r_1, \ldots, s_{T-1}, a_{T-1}, r_{T-1}, s_T) $$ 某种策略某次试验下的收益:既然外部环境是混沌的,就代表,就算是相同状态相同策略下,每次实验得到的$G$是不一样的。为了准确建模每一次,我们需要改一下上面的$G_{\boldsymbol \theta}$:改为$G_{\boldsymbol \theta}(\tau)$ 这个概念看作一种元数据,就是暂时先不关心每次状态-行动-奖励-状态-行动的传导细节,只关心更长的一个传导链条$\tau$。

  • 强调的是环境的反馈,但是相同状态$\boldsymbol s$下,采取不同的$\boldsymbol a$得到的$r$不同,所以,后面会牵扯进来$\pi_{\boldsymbol \theta}(\boldsymbol a|\boldsymbol s)$,但是现在不会。
  • 不需要一步直接找到$\boldsymbol \theta^\star$,通过求$\nabla J(\boldsymbol \theta)=\nabla \mathbb E_{\tau \sim \pi_{\boldsymbol \theta}} (G_{\boldsymbol \theta}(\tau))$去更新
  • 先不着急展开$G_{\boldsymbol \theta}(\tau)$,先整体看: $$ \begin{aligned} & \nabla J(\boldsymbol \theta)=\nabla \mathbb E_{\tau \sim \pi_{\boldsymbol \theta}} (G_{\boldsymbol \theta}(\tau)) \\ & = \nabla \int p_{\boldsymbol \theta}(\tau)G(\tau)d\tau \leftarrow Not \ pretty \ sure \ G_{\boldsymbol \theta}(\tau)\doteq G(\tau)\\ &= \int\nabla [p_{\boldsymbol \theta}(\tau)G(\tau)]d\tau \\ &= \int \frac{p_{\boldsymbol \theta(\tau)}}{p_{\boldsymbol \theta(\tau)}}\nabla [p_{\boldsymbol \theta}(\tau)G(\tau)]d\tau \\ &= \int p_{\boldsymbol \theta(\tau)}G(\tau)\nabla \ln(p_{\boldsymbol \theta}(\tau))d(\tau) \\ & =\mathbb E_{\tau \sim \pi_{\boldsymbol \theta}}[G(\tau)\nabla \ln(p_{\boldsymbol \theta}(\tau)] \end{aligned} $$ 梯度变为了一个期望。但是$\tau$还太粗糙,需要继续细化:$\tau$代表一个路径,路径拆分成一串独立的SARSA: $$ (\boldsymbol s_t,r_t) \xrightarrow{policy \ determines:\ \pi_{\boldsymbol \theta}} \boldsymbol a_t \xrightarrow{env. \ determines: \ p(\boldsymbol s_{t+1}|\boldsymbol s_{t},\boldsymbol a_{t})} (\boldsymbol s_{t+1},r_{t+1}) \xrightarrow{policy \ determines:\ \pi_{\boldsymbol \theta}} \boldsymbol a_{t+1} $$
  • 单独看$\nabla\ln p_{\boldsymbol \theta}(\tau)$(计算:策略$\pi_{\boldsymbol \theta}$下形成$\tau$的概率的对数对策略参数$\boldsymbol \theta$的梯度),顺便就把整个对数计算了: $$ \begin{aligned} & \nabla_{\boldsymbol \theta} \ln[p_{\boldsymbol \theta}(\tau)] \\ & = \nabla_{\boldsymbol \theta} \ln \prod_{t=0}^{T-1}[p(\boldsymbol s_{t+1}|\boldsymbol s_{t},\boldsymbol a_{t})\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)] \\ & =\nabla_{\boldsymbol \theta} \sum_{t=0}^{T-1}[\ln p(\boldsymbol s_{t+1}|\boldsymbol s_{t},\boldsymbol a_{t})+\ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)]\\ & =\sum_{t=0}^{T-1}[\nabla_{\boldsymbol \theta} \ln p(\boldsymbol s_{t+1}|\boldsymbol s_{t},\boldsymbol a_{t})+ \nabla_{\boldsymbol \theta} \ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)] \leftarrow \nabla_{\boldsymbol \theta} \ln p(\boldsymbol s_{t+1}|\boldsymbol s_{t},\boldsymbol a_{t})=0 \\ & \ because \ env. \ evolves \ from \ (\boldsymbol s_{t},\boldsymbol a_{t})\ to \ \boldsymbol s_{t+1} \ only \ determined\ by \ itself \\ & =\sum_{t=0}^{T-1}[\nabla_{\boldsymbol \theta} \ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)] \\ \end{aligned} $$
  • 从而(下面的公式中,$\nabla$等同于$\nabla_{\boldsymbol \theta}$): $$ \begin{aligned} & \nabla J(\boldsymbol \theta)=\mathbb E_{\tau \sim \pi_{\boldsymbol \theta}}[G(\tau)\sum_{t=0}^{T-1}[\nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)]] \end{aligned} \label{eq1}\tag{1} $$
  • 到这里,$G(\tau)$还不够精细,我们希望摆脱走整条轨迹之后,才可以计算期望,看看能不能每一步(step)都可以计算出来这个期望。本能地,拆开看看: $$ G(\tau)=\sum_{t=0}^{T-1}\gamma^tr_t \label{eq2}\tag{2} $$ $(\ref{eq2})$代入$(\ref{eq1})$,得到

$$ \begin{aligned} & \nabla J(\boldsymbol \theta)=\mathbb E_{\tau \sim \pi_{\boldsymbol \theta}}{\sum_{t=0}^{T-1}\gamma^t r_t\sum_{t=0}^{T-1}[\nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)]} \end{aligned} \tag{3}\label{eq3} $$

$$ \begin{aligned} & \nabla J(\boldsymbol \theta)=\mathbb E_{\tau \sim \pi_{\boldsymbol \theta}}{\sum_{t’=0}^{T-1}\gamma^{t’} r_{t’}\sum_{t=0}^{T-1}[\nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)]} \end{aligned} \label{eq4}\tag{4} $$ 两组连加相乘可以转为各个项目相乘再连加,$(\ref{eq4})$变为: $$ \begin{aligned} & \nabla J(\boldsymbol \theta)=\mathbb E_{\tau \sim \pi_{\boldsymbol \theta}}[\gamma^0r_0 \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_0|\boldsymbol s_0)+\gamma^0r_0 \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_1|\boldsymbol s_1)+\cdots+\gamma^0r_0 \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_{T-1}|\boldsymbol s_{T-1}) \\ & + \gamma^1r_1 \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_0|\boldsymbol s_0) + \gamma^1r_1 \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_1|\boldsymbol s_1)+ \cdots + \gamma^1r_1 \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_{T-1}|\boldsymbol s_{T-1}) \\ & \vdots \\ & \gamma^{T-1}r_{T-1} \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_0|\boldsymbol s_0) + \gamma^{T-1}r_{T-1} \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_1|\boldsymbol s_1) + \cdots \\ & +\gamma^{T-1}r_{T-1} \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_{T-1}|\boldsymbol s_{T-1})] \\ \end{aligned} $$ 到这里,困扰我的问题(如何得到的($\ref{eq5}$))自然就得到了解决。还是从轨迹的形成过程来看,我们取$t’\in(0,T-1)$时刻,当$t>t’$时,$\mathbb E(\gamma^{t’}r_{t’} \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t))=0$,因为从$t’$时刻之后的动作选择是跟当前时刻的奖励无关的,即 $$ p[r_{T=t’}={r_t’},g_{T=t}=\nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)]=p(r_{T=t’}={r_t’})p(g_{T=t}=\nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)) $$ 还有: $$\mathbb E(\gamma^{t’}r_{t’} \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t))=\mathbb E(\gamma^{t’}r_{t’}) \mathbb E(\nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)) $$

$$ \begin{aligned} & \mathbb E(\nabla_{\boldsymbol \theta} \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t))\\ & \leftarrow value \ \nabla_{\boldsymbol \theta} \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)\ at\ timestamp \ t \ is \ a \ random \ variable \ and \ PDF \ is \ \pi_{\boldsymbol \theta}\\ & = \sum_{\boldsymbol a \in \mathbb A,\boldsymbol s \in \mathbb S}[\pi_{\boldsymbol \theta}(\boldsymbol a|\boldsymbol s)\nabla_{\boldsymbol \theta} \ln \pi_{\boldsymbol \theta}(\boldsymbol a|\boldsymbol s)] \\ & =\sum_{\boldsymbol a \in \mathbb A,\boldsymbol s \in \mathbb S}\nabla_{\boldsymbol \theta} \pi_{\boldsymbol \theta}(\boldsymbol a|\boldsymbol s) \\ & = \nabla_{\boldsymbol \theta} \sum_{\boldsymbol a \in \mathbb A,\boldsymbol s \in \mathbb S}\pi_{\boldsymbol \theta}(\boldsymbol a|\boldsymbol s) \\ & = \nabla_{\boldsymbol \theta}1 \\ & = 0 & Q.E.D. \end{aligned} $$

所以,得到下面的简化版本,每一行是按照$\gamma^kr_k$和$\nabla\ln_\pi$相乘,逐行项目增加1。第$k$列提取出$\nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_k|\boldsymbol s_k)$,跟其相乘的提取到连加:

$$ \begin{aligned} & \nabla J(\boldsymbol \theta)=\mathbb E_{\tau \sim \pi_{\boldsymbol \theta}}[\gamma^0r_0 \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_0|\boldsymbol s_0)\\ & + \gamma^1r_1 \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_0|\boldsymbol s_0) + \gamma^1r_1 \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_1|\boldsymbol s_1)\\ & \vdots \\ & \gamma^{T-1}r_{T-1} \nabla \ln\pi_{\boldsymbol \theta}(\boldsymbol a_0|\boldsymbol s_0) + \gamma^{T-1}r_{T-1} \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_1|\boldsymbol s_1) + \cdots \\ & +\gamma^{T-1}r_{T-1} \nabla \ln \pi_{\boldsymbol \theta}(\boldsymbol a_{T-1}|\boldsymbol s_{T-1})] \\ & = \mathbb E_{\boldsymbol a \sim \pi_\boldsymbol \theta,\boldsymbol s \sim d_\boldsymbol \theta}\sum_{t=0}^{T-1}[\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}] \\ & \mathbb E \ lost \ \tau \sim \pi_{\boldsymbol \theta} \ because \ the \ first \ \sum \ has \ replaced \ it.\ IMPORTANT \\ \end{aligned} \label{eq5}\tag{5} $$

上面的推导在OpenAI Spinning Up–Don’t Let the Past Distract You里面是相同的结果。

根据状态-动作价值函数的定义State-Action-Fucntion,$Q_{\pi_{\boldsymbol \theta}}(\boldsymbol s_t,\boldsymbol a_t)=\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}$

2026-01-12:这里更正一下,状态-动作价值函数定义是下式,是对多个轨迹求期望的结果。(Q的真实值,像是只有上帝才知道的量,我们人类只能尽量去估计) $$ Q_\pi(\boldsymbol s, \boldsymbol a)=\mathbb E(G_t|S_t=\boldsymbol s, A_t =\boldsymbol a)=\mathbb E(\sum_{t’=t}^{t’=T-1}\gamma^{t’-t}r_{t’}|S_t=s,A_t=a) $$

$\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}$是说,在这一条轨迹上,$t$时刻之后的衰减收益。所以,总结这里的问题就是,在$t$时刻的状态收益并不等于在$t$时刻的状态收益的期望。只不过,在后续的基于策略梯度的改进框架中,例如A2C,不断改进的策略会影响环境对动作的奖励,从而单条轨迹上的收益越来越接近很多条轨迹的期望收益。

从时间先后看,假设$T=1000$,当$t=10$的时候,计算出来的$\nabla J(\boldsymbol \theta)$很不稳定。因为我们并不能很好预测未来很远的情况。能不能把一个和当前时刻强相关的概念加进来,去抵消一下未来的不确定性?而且这个量自己也具有不确定性,因为如果确定了,那就没有意义了。

图5: Baseline 降低方差的直观示意。左图无 baseline,奖励值波动大;右图引入 baseline 后,优势值 $R_t - b(s_t)$ 集中在零附近,方差显著降低。1

baseline

上面的问题,就开辟出了很大的想象空间。

$(\ref{eq5})$中,reward那里加入baseline:

$$ \begin{aligned} & \nabla J(\boldsymbol \theta)= \mathbb E\sum_{t=0}^{T-1}[\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}] \\ & =\mathbb E\sum_{t=0}^{T-1}[\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)(\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}-b(\boldsymbol s_t))] \\ &=\mathbb E\sum_{t=0}^{T-1}[\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}-\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)b(\boldsymbol s_t)] \\ &=\mathbb E(\sum_{t=0}^{T-1}\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’})-\mathbb E\sum_{t=0}^{T-1}(\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)b(\boldsymbol s_t)) \\ \end{aligned} \label{eq6}\tag{6} $$ $b(\boldsymbol s_t)$就是baseline。 单独看第二个期望: $$ \begin{aligned} & \mathbb E\sum_{t=0}^{T-1}(\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)b(\boldsymbol s_t)) \\ & = \sum_{t=0}^{T-1}\mathbb E[\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)b(\boldsymbol s_t)] \\ & at \ given\ t\ select \ \mathcal A=\boldsymbol a_t \ has \ nothing \ to \ do\ with \ what \ \mathcal S \ is: \\ & =\sum_{t=0}^{T-1}[\mathbb E(\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t))\mathbb E b(\boldsymbol s_t)] \leftarrow \mathbb E(\nabla\ln\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t))=0 \\ & = \sum_{t=0}^{T-1}[0\mathbb E b(\boldsymbol s_t)] \\ & = 0 & Q.E.D. \end{aligned} $$

上面的推导证明了引入baseline不会导致对梯度的估计产生偏差(bias)。重点是,为什么会减小波动,提高估计的稳定性?那就看看方差

$$ \begin{aligned} & VAR(\nabla J(\boldsymbol \theta))=\mathbb E[\nabla J(\boldsymbol \theta)-\mathbb E(\nabla J(\boldsymbol \theta))]^2 \ & =\mathbb E\big(\nabla J(\boldsymbol \theta)^2\big)-\big(\mathbb E\nabla J(\boldsymbol \theta)\big)^2 \end{aligned} $$

实际上,一个期望的方差是0,因为期望是一个常数,并不会随着期望里面的变量性质变化而变化,但是实际操作,期望会有很大的变动,原因是求和后面的因素导致了不稳定。所以就跨过严格的数学定义,直接看求和的实际变动。 [chapter: Understanding the Baseline](https://danieltakeshi.github.io/2017/03/28/going-deeper-into-reinforcement-learning-fundamentals-of-policy-gradients/Understanding the Baseline)

(下面的公式引自链接文章!)公式中$R_t(\tau)=\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}$

$$ \begin{align} & {\rm Var}\big (\sum _{t=0}^{T-1}\nabla _{\theta} \log \pi _{\theta}(a_t|s_t) (R_t(\tau)-b(s_t))\big) \\ & \overset{(i)}{\approx}\ \sum _{t=0}^{T-1} \mathbb{E} \tau [\Big(\nabla _{\theta} \log \pi _{\theta}(a_t|s_t) (R_t(\tau)-b(s_t))\Big)^2] \\ &{\overset {(ii)}{\approx}}\ \sum _{t=0}^{T-1} \mathbb{E} _{\tau} \left[\Big(\nabla _{\theta} \log \pi _{\theta}(a_t|s_t)\Big)^2\right]\mathbb{E} _{\tau}\left [\Big(R_t(\tau) - b(s_t)\Big)^2\right] \end{align} \label{eq7}\tag{7} $$

$(\ref{eq7})$中,当$\mathbb{E}_\tau\left[\Big(R_t(\tau) - b(s_t)\Big)^2\right]$较小时,方差较小;所以,当在$t$时候,尽可能根据$\boldsymbol s_t$找到和$R_t(\tau)$接近的,最理想的$b(\boldsymbol s_t)$就是:$b^\star(\boldsymbol s_t)=\mathbb E(R_t(\tau))$。更通俗的话来说,就是每次迭代,动态给定一个望向未来的“海平面”或者“基准线”,我们把眼睛贴近到这个东西上面去,那么未来的($t,t+1,t+2,\cdots,T-1$)的所谓的收益会因为这个基准的设定而要么浮在上面,要么沉在下面,且不会距离基准特别远。

向实际应用考虑

$(\ref{eq6})$中,$\sum_{t’=t}^{T-1}\gamma^{t’}r_{t’}-b(\boldsymbol s_t))$如何去选择就决定最终迭代$\boldsymbol \theta$的方向。类似于,该函数的具体形式决定了优化过程的“山”的形态,不同的山,也就决定了每一步的方向。

Advantage Function

State-Action-Fucntion里面: $$ \begin{aligned} & V_\pi(\boldsymbol s)=\mathbb E(G_t|S_t=s)\ & Q_\pi(\boldsymbol s, \boldsymbol a)=\mathbb E(G_t|S_t=\boldsymbol s, A_t =\boldsymbol a) \ \end{aligned} $$ Advantage Function的定义: $$ A_\pi(\boldsymbol s,\boldsymbol a)=Q_\pi(\boldsymbol s, \boldsymbol a)-V_\pi(\boldsymbol s) $$ 从直觉理解,这个函数能够评价采取行动$\boldsymbol a$的预期收益“大于”采取“平均行动(Avg. Action)”所获得的预期收益的程度。某种程度上,状态的价值函数$V_\pi(\boldsymbol s)$就是在该状态下,采取平均行动(Avg. Action)”所获得的预期收益:和状态-行动价值形成一致的理解。

这篇论文generalized advantage estimation(GAE)详细介绍了如何更好地通过估计Advantage Function 来实现策略梯度。

Quote from GAE:

The choice $\Psi_t = A_\pi(\boldsymbol s_t, \boldsymbol a_t)$ yields almost the lowest possible variance, though in practice, the advantage function is not known and must be estimated. This statement can be intuitively justified by the following interpretation of the policy gradient: that a step in the policy gradient direction should increase the probability of better-than-average actions and decrease the probability of worse-than-average actions. The advantage function, by it’s definition$A_\pi(\boldsymbol s, \boldsymbol a) = Q_\pi(\boldsymbol s, \boldsymbol a) − V_\pi(\boldsymbol s)$ , measures whether or not the action is better or worse than the policy’s default behavior. Hence, we should choose $\Psi_t$ to be the advantage function $A_\pi(\boldsymbol s_t, \boldsymbol a_t)$, so that the gradient term$\Psi_t\nabla \boldsymbol \theta \ln \pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)$ points in the direction of increased $\pi_{\boldsymbol \theta}(\boldsymbol a_t|\boldsymbol s_t)$ if and only if $A_\pi(\boldsymbol s_t,\boldsymbol a_t) > 0$. See Greensmith et al. (2004) for a more rigorous analysis of the variance of policy gradient estimators and the effect of using a baseline.

总结

$(\ref{eq5})$的得到,和Policy Gradient最后的结果是一致的。后续基于这个理论的改良,都是想办法降低期望的方差,尽量找到对的$\Delta \boldsymbol \theta$。

参考


  1. Greensmith, Evan, Bartlett, Peter L, and Baxter, Jonathan. Variance reduction techniques for gradient estimates in reinforcement learning. JMLR, 2004. ↩︎