上一篇记录了策略梯度算法的目标:通过梯度上升的方法执行策略更新,目标是最大化期望奖励,数学形式为:

\[ \nabla\overline{R_\theta}=\mathbb{E}_{\tau\sim p_\theta(\tau)}[R(\tau)\nabla\log p_\theta(\tau)] \]

由于策略梯度算法是 on-policy 的,因此要求行为策略\(\mu\)和目标策略\(\pi_\theta\)相同。每次将策略\(\theta\)更新为\(\theta'\)时,来源于上一轮采样数据的概率\(p_\theta(\tau)\)不能再使用,需要重新采样;这说明 on-policy 算法每次采样的数据在更新参数时只能使用一次。耗时巨大。能不能转为 off-policy 算法呢?

一个想法是使用冻结的策略\(\pi_{\theta'}\)专门与环境交互,使用\(\theta'\)采样的数据训练优化目标\(\pi_\theta\). 引入重要性采样(importance sampling)的概念。

重要性采样

“采样是概率密度函数的逆向应用。”对于具备分布\(p\) 的随机变量\(x\),可以通过从\(p\)中采样若干数据\(x^i\)后代入\(f(x)\),用于近似\(\mathbb{E}[f(x)]\).

可不可以通过从分布\(q\)中采样的数据\(x^i\),计算符合分布\(p\)\(\mathbb{E}[f(x)]\)呢?(on-policy 转向 off-policy)有:

\[ \mathbb{E}_{x\sim p}[f(x)]=\int f(x)p(x)dx=\int f(x)\frac{p(x)}{q(x)}q(x)dx=\mathbb{E}_{x\sim q}[f(x)\frac{p(x)}{q(x)}] \]

上式通过 重要性权重\(\frac{p(x)}{q(x)}\) 修正两个分布的差异。

虽然上式左右两端的期望值在数学上等价,但是方差随着\(p\)\(q\)的差异而变化。有:

\[ Var_{x\sim p}[f(x)]=\mathbb{E}_{x\sim p}[f(x)^2]-(\mathbb{E}_{x\sim p}[f(x)])^2 \]

\[ \begin{align*} Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}]&=\mathbb{E}_{x\sim q}[(f(x)\frac{p(x)}{q(x)})^2]-(\mathbb{E}_{x\sim q}[f(x)\frac{p(x)}{q(x)}])^2 \\ &=\mathbb{E}_{x\sim p}[f(x)^2\frac{p(x)}{q(x)}]-(\mathbb{E}_{x\sim p}[f(x)])^2 \end{align*} \]

\(Var_{x\sim p}[f(x)]\)\(Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}]\)的差异在于第一项:如果\(\frac{p(x)}{q(x)}\)的差距较大,则方差较大;当采样次数不足够多时,可能得到差距非常大的结果,此时该近似方法不准确。

使用重要性采样将 on-policy 算法改为 off-policy.

假设有另外一个 Actor 采用策略\(\pi_{\theta'}\)做采样,有:

\[ \nabla\overline{R_\theta}=\mathbb{E}_{\tau\sim p_\theta'(\tau)}[\frac{p_\theta(\tau)}{p_\theta'(\tau)}R(\tau)\nabla\log p_\theta(\tau)] \]

重要性权重为\(\frac{p_\theta(\tau)}{p_\theta'(\tau)}\). 采用\(\theta'\)与环境交互采样大量的数据,用于更新\(\theta\).

优势函数

价值函数\(V_{\pi_\theta}(s)\) 的含义为:在某个状态\(s\)一直与环境交互直至游戏结束的期望奖励。有:

\[ R(\theta)=\mathbb{E}[V_{\pi_\theta}(s_0)]=\mathbb{E}_{\pi_\theta}[\sum_{t=0}^\infty\gamma^t r(s_t, a_t)] \]

在策略\(\pi_\theta\)下的优化目标写成在\(\pi_{\theta'}\)下的形式(初始状态\(s_0\)的分布与策略无关):

\[ \begin{align*} R(\theta)&=\mathbb{E}[V_{\pi_\theta}(s_0)] \\ &=\mathbb{E}_{\pi_{\theta'}}[\sum_{t=0}^\infty\gamma^t V_{\pi_\theta}(s_t)-\sum_{t=1}^\infty\gamma^t V_{\pi_\theta}(s_t)] \\ &=-\mathbb{E}_{\pi_{\theta'}}[\sum_{t=0}^\infty\gamma^t(\gamma V_{\pi_\theta}(s_{t+1})-V_{\pi_\theta}(s_t))] \end{align*} \]

策略\(\theta\)\(\theta'\)的目标函数差距为:

\[ \begin{align*} R(\theta')-R(\theta)&=\mathbb{E}[V_{\pi_\theta'}(s_0)]-\mathbb{E}[V_{\pi_\theta}(s_0)] \\ &=\mathbb{E}_{\pi_\theta'}[\sum_{t=0}^\infty\gamma^t r(s_t, a_t)]+\mathbb{E}_{\pi_{\theta'}}[\sum_{t=0}^\infty\gamma^t(\gamma V_{\pi_\theta}(s_{t+1})-V_{\pi_\theta}(s_t))] \\ &=\mathbb{E}_{\pi_\theta'}[\sum_{t=0}^\infty\gamma^t[r(s_t, a_t)+\gamma V_{\pi_\theta}(s_{t+1})-V_{\pi_\theta}(s_t)]] \end{align*} \]

当前状态-动作对的优势函数(Advantage)\(A^\theta(s_t, a_t)\) 定义为:

\[ A=r(s_t, a_t)+\gamma V_{\pi_\theta}(s_{t+1})-V_{\pi_\theta}(s_t) \]

这一项为时序差分残差,使用累积奖励减去 baseline,用于估测:在状态\(s_t\)采取动作\(a_t\)的优劣。

梯度更新过程为:

\[ \mathbb{E}_{(s_t, a_t)\sim\pi_\theta}[A^\theta(s_t, a_t)\nabla\log p_\theta(a_t^n|s_t^n)] \]

如果\(A^\theta(s_t, a_t)\)为正,增加概率;反之则降低概率。

使用重要性采样技术将 on-policy 转为 off-policy 时:

\[ \mathbb{E}_{(s_t, a_t)\sim\pi_\theta'}[\frac{p_\theta(s_t, a_t)}{p_{\theta'}(s_t, a_t)}A^\theta(s_t, a_t)\nabla\log p_\theta(a_t^n|s_t^n)] \]

这里采用\(A^{\theta'}(s_t, a_t)\)近似\(A^{\theta}(s_t, a_t)\).

继续转化为:

\[ \mathbb{E}_{(s_t, a_t)\sim\pi_\theta'}[\frac{p_\theta(a_t|s_t)}{p_{\theta'}(a_t|s_t)}\frac{p_\theta(s_t)}{p_{\theta'}(s_t)}A^{\theta'}(s_t, a_t)\nabla\log p_\theta(a_t^n|s_t^n)] \]

这里采用\(p_{\theta'}(s_t)\)近似\(p_\theta(s_t)\).

从以上梯度更新的公式反推待优化的目标函数:

\[ R^{\theta'}(\theta)=\mathbb{E}_{(s_t, a_t)\sim\pi_{\theta'}}[\frac{p_\theta(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t, a_t)] \]

其含义为:使用\(\theta'\)与环境交互,采样得到\(s_t\), \(a_t\),计算优势\(A^{\theta}(s_t, a_t)\);最后用于更新\(\theta\).

也即:

\[ R^{\theta'}(\theta)=\mathbb{E}_{s\sim\nu^{\pi_{\theta'}}}\mathbb{E}_{a\sim\pi_{\theta'}(·|s)}[\frac{\pi_{\theta}(a|s)}{\pi_{\theta'}(a|s)}A^{\pi_{\theta'}}(s, a)] \]

广义优势估计(GAE)

优势函数衡量某个动作相对于其他动作的好坏程度,即:在某个状态下采取某个动作,是否比策略中其他动作表现地更好。通常定义为:

\[ A(s, a)=Q(s, a)-V(s) \]

  1. 采用蒙特卡洛方法估计优势:采样完整轨迹,利用从状态\(s\) 到结束的总回报\(R(s,a)\)进行无偏估计,即:

    \[ A(s, a)=R(s, a)-V(s) \]

    方差大,单次采样容易受到偶然因素的影响。

  2. 采用时序差分方法估计优势:采用一步/多步预测估计,即:

    \[ A(s, a)=r+\gamma V(s')-V(s) \]

    其中\(V(s')\)是下一个状态\(s'\)的价值。方差小(依赖多个小步骤的估计),偏差大(使用估计的价值函数更新)

广义优势估计(GAE)同时结合蒙特卡洛和时序差分,引入一个混合系数\(\lambda\)在方差和偏差之间灵活调节。GAE 的核心思想是:利用多个 TD 步骤的加权和估计优势。定义为:

\[ A_t^{GAE}=\sum_{l=0}^\infty(\gamma\lambda)^l\delta_{t+l} \]

其中,\(\delta_t=r_t+\gamma V(s_{t+1})-V(s_t)\)是时序差分误差。当\(\lambda=1\)时,退化为蒙特卡洛,方差较大但无偏;当\(\lambda=0\)时,退化为时序差分,偏差大但方差小。

根据多步时序差分思想,有:

\[ \begin{align*} A_t^{(1)}=\delta_t &=-V(s_t)+r_t+\gamma V(s_{t+1}) \\ A_t^{(2)}=\delta_t+\gamma\delta_{t+1} &=-V(s_t)+r_t+\gamma r_{t+1}+\gamma^2 V(s_{t+2}) \\ A_t^{(2)}=\delta_t+\gamma\delta_{t+1}+\gamma^2\delta_{t+2} &=-V(s_t)+r_t+\gamma r_{t+1}+\gamma^2r_{t+2}+ \gamma^3V(s_{t+3}) \\ A_t^{(k)}=\sum_{l=0}^{k-1}\gamma^l\delta_{t+l} &=-V(s_t)+r_t+\gamma r_{t+1}+...+\gamma^{k-1}r_{t+k-1}+\gamma^k V(s_{t+k}) \end{align*} \]

将不同步数的优势估计进行指数加权平均:

\[ \begin{align*} A_t^{GAE}&=(1-\lambda)(A_t^{(1)}+\lambda A_t^{(2)}+\lambda^2 A_t^{(3)}+...) \\ &=(1-\lambda)(\delta_t+\lambda(\delta_t+\gamma\delta_{t+1})+\lambda^2(\delta_t+\gamma\delta_{t+1}+\gamma^2\delta_{t+2})...) \\ &=(1-\lambda)(\delta_t(1+\lambda+\lambda^2+...)+\gamma\delta_{t+1}(\lambda+\lambda^2+\lambda^3+...)+\gamma^2\delta_{t+2}(\lambda^2+\lambda^3+\lambda^4+...)) \\ &=(1-\lambda)(\delta_t\frac{1}{1-\lambda}+\gamma\delta_{t+1}\frac{\lambda}{1-\lambda}+\gamma^2\delta_{t+2}\frac{\lambda^2}{1-\lambda}+...) \\ &=\sum_{l=0}^\infty(\gamma\lambda)^l\delta_{t+l} \end{align*} \]

\(\lambda=0\)时,\(A_t^{GAE}=\delta_t=r_t+\gamma V(s_{t+1})-V(s_t)\),只看一步差分;当\(\lambda=1\)时,\(A_t^{GAE}=\sum_{l=0}^\infty\gamma^l\delta_{t+l}=\sum_{l=0}^\infty\gamma^lr_{t+l}-V(s_t)\),看每一步差分的完全平均值。

KL 散度

回到重要性采样谈到的一个观点:使用\(\theta'\)近似\(\theta\)时,其分布不宜相差太多;这里意为:最新策略\(\pi_\theta\) 不宜离采样策略\(\pi_{\theta'}\)太远,否则影响重要性采样的拟合效果。因此需要在训练时加一个约束项。

TRPO 采用 KL 散度衡量策略之间的距离,整体优化公式为:

\[ \max_{\theta}R^{\theta'}(\theta) \\ s.t. \\ \mathbb{E}_{s\sim\nu^{\pi_{\theta_k}}}[D_{KL}(\pi_{\theta_k}(·|s), \pi_{\theta}(·|s))]\leq \delta \]

其中,\(\nu^{\pi}(s)=(1-\gamma)\sum_{t=0}^\infty\gamma^t P_t^\pi(s)\)是状态分布的定义。

上述优化目标中的 KL 约束定义了策略空间中的一个 KL 球,称为信任区域

近似求解:

假设\(\theta_k\)为第\(k\)次迭代后的目标策略。对目标函数和 KL 约束分别在\(\theta_k\)处执行泰勒展开,分别使用一阶、二阶近似:

\[ R^{\theta'}(\theta)\approx g^T(\theta-\theta_k) \\ \mathbb{E}_{s\sim\nu^{\pi_{\theta_k}}}[D_{KL}(\pi_{\theta_k}(·|s), \pi_{\theta}(·|s))]\approx \frac{1}{2}(\theta-\theta_k)^T H(\theta-\theta_k) \]

其中:\(g=\nabla_{\theta}\mathbb{E}_{s\sim\nu^{\pi_{\theta_k}}}\mathbb{E}_{a\sim\pi_{\theta_k}(·|s)}[\frac{\pi_{\theta}(a|s)}{\pi_{\theta_k}(a|s)}A^{\pi_{\theta_k}}(s, a)]\),即目标函数的梯度;\(H=\bold{H}[\mathbb{E}_{s\sim\nu^{\pi_{\theta_k}}}[D_{KL}(\pi_{\theta_k}(·|s), \pi_{\theta}(·|s))]]\)表示策略之间平均 KL 距离的黑塞矩阵。

优化目标转为: \[ \theta_{k+1}=\argmax_{\theta}g^T(\theta-\theta_k) \\ s.t. \\ \frac{1}{2}(\theta-\theta_k)^T H(\theta-\theta_k)\leq\delta \]

可以用 KKT 条件直接导出上述问题的解。

TRPO 的约束并不好处理。如果放在目标函数中呢?这就是 PPO.

\[ R_{PPO}^{\theta'}(\theta)=R^{\theta'}(\theta)-\beta KL(\theta, \theta') \]

注意:这里的\(KL(\theta, \theta')\)并非参数上的距离,而是行为上的距离(给定相同状态,输出动作的差距)

PPO

PPO-penalty

对于 off-policy 策略,使用\(\theta_k\)采样一次得到的数据,多次用于目标策略\(\theta\)的更新。即:

\[ R_{PPO}^{\theta_k}(\theta)=R^{\theta_k}(\theta)-\beta KL(\theta, \theta_k) \]

采用自适应 KL 散度(动态调整\(\beta\))。假设优化完成后, KL 散度值太大,说明惩罚项\(\beta KL(\theta, \theta_k)\)没有发挥作用,应该增大\(\beta\);如果优化后 KL 散度值太小,说明惩罚项太强,应该减小\(\beta\).即:

  • 如果 \(KL(\theta, \theta_k)>KL_{max}\),增大\(\beta\)
  • 如果 \(KL(\theta, \theta_k)<KL_{min}\),减小\(\beta\).

优化目标为:

\[ R_{PPO}^{\theta_k}=R_{PPO}^{\theta}-\beta KL(\theta, \theta_k) \\ R^{\theta_k}(\theta)\approx\sum_{(s_t, a_t)}\frac{p_\theta(a_t|s_t)}{p_{\theta_k}(a_t|s_t)}A^{\theta_k}(s_t, a_t) \]

PPO-clip

计算 KL 散度太复杂,目标函数改写为:

\[ R_{PPO}^{\theta_k}(\theta)\approx\sum_{(s_t, a_t)}\min(\frac{p_\theta(a_t|s_t)}{p_{\theta_k}(a_t|s_t)}A^{\theta_k}(s_t, a_t), clip(\frac{p_\theta(a_t|s_t)}{p_{\theta_k}(a_t|s_t)}, 1-\epsilon, 1+\epsilon)A^{\theta_k}(s_t, a_t)) \]

clip 的意义是使得\(p_\theta(a_t|s_t)\)\(p_{\theta_k}(a_t|s_t)\)尽可能接近,优化后差距不太大。

如上图,在大多数 RL 任务中,PPO 算法效果较好。

参考

【前沿追踪】从两策略到三策略:行为策略和参考策略不一致下的 TRPO 扩展