本文的强化学习(Reinforcement Learning,RL)前置知识参考自 Sutton 的《Reinforcement Learning: An Introduction 》。
语言模型的训练过程 在前几篇文章 MLP 与 BP 算法的数学原理 、经典注意力与经典 Transformer 的数学原理 与 Mixture of Experts 的数学原理(~2026 文献综述) 中,我们分别在理论上讨论了 BP 算法、注意力与 Transformer 以及 MoE 架构。本文希望进一步讨论语言模型中偏好优化的数学模型。
一个现代 LLM 的典型训练过程可以被概括为以下几点关键步骤:
Pretraining(预训练):使用海量的文本语料作为训练样本,按自回归语言建模目标
P ( x ; θ ) = ∏ t = 1 T P ( x t ∣ x < t ; θ )
P(\boldsymbol{x};\boldsymbol{\theta})=\prod_{t=1}^{T}P(x_t|\boldsymbol{x}_{<t};\boldsymbol{\theta})
P ( x ; θ ) = t = 1 ∏ T P ( x t ∣ x < t ; θ ) 训练模型,使模型学会根据已有上文预测下一个 token,获得基本的语言表达和推理能力。在完成这一步训练后,模型虽然已经具有大量语言、知识及一定的推理能力,但尚不能稳定地遵循人类指令或作为「AI 助手」交互。
Mid-training(中训练):可选的步骤,针对某些特定领域的数据继续进行预训练,例如编码、数学。
SFT(Supervised Fine-Tuning,监督微调):使用高质量的「问题 → 回答」样本对模型进行微调训练,让模型学会遵循指令、遵循对话格式,从而与人类实现更高效的交互。
Preference Optimization(偏好优化):通过 RL 或 DPO 等方法继续更新模型参数,使模型的输出更符合人类的预期。
其中,Post-training(后训练)通常包括 SFT 与偏好优化,二者均能共同服务于 Alignment(对齐)这一目标。本质上,SFT 是语言模型在一种特殊的数据分布(问题 → 回答)上的继续训练与迁移学习,其训练目标与预训练基本一致,仍为自回归语言建模。在实现细节上可能存在差异,例如通过损失掩码(Loss Mask)消除掉 prompt 的影响,只计算来自回答的损失。
偏好优化则包含多种具体方法,且在训练方式上与预训练有着显著不同,比如 RL 与 DPO。本文先讨论依赖奖励模型的 RLHF 与 PPO,再讨论不显式训练奖励模型的 DPO。
基于奖励的强化学习方法 偏好学习与 Bradley–Terry 模型 1952 年,Bradley 等人在论文《Rank Analysis of Incomplete Block Designs: I. The Method of Paired Comparisons 》中提出了一个用于分析「成对比较」数据的模型。该模型简洁而强大,对于 t t t 个待比较的对象,不要求观测者一次性给出 t t t 个对象的完整次序,只需要进行若干次判断,每次选取两个对象进行判断,便能确定对象的相对顺序。
这里的「顺序」可以是任何弱序关系,但理解为「价值」或许非常合适。
Bradley 与 Terry 为每个对象 i i i 引入一个正的价值 / 强度参数 u i u_i u i ,该参数是设想的、数值未知的,具有尺度不变性,并且对象 i i i 胜出对象 j j j 的概率 p i j p_{ij} p ij 满足
p i j = P ( i ≻ j ) = u i u i + u j
p_{ij}=P(i\succ j)=\frac{u_i}{u_i+u_j}
p ij = P ( i ≻ j ) = u i + u j u i 相应地,p j i = u j u i + u j = 1 − p i j p_{ji}=\frac{u_j}{u_i+u_j}=1-p_{ij} p ji = u i + u j u j = 1 − p ij ,从而可以导出
p i j p j i = u i u j
\frac{p_{ij}}{p_{ji}}=\frac{u_i}{u_j}
p ji p ij = u j u i 以上是文献中的核心假设。不难推导出,对象间的顺序与其价值 / 强度参数的顺序完全相同。
假设对象 i , j i,j i , j 间共进行了 n i j n_{ij} n ij 次两两比较,其中 i i i 胜出 j j j 的次数为 a i j a_{ij} a ij 、j j j 胜出 i i i 的次数为 a j i a_{ji} a ji ,则针对所有的对象对样本,有似然函数
L ( u 1 , u 2 , ⋯ , u t ) = ∏ i < j p i j a i j p j i a j i = ∏ i < j ( u i u i + u j ) a i j ( u j u i + u j ) a j i = ∏ i ≠ j ( u i u i + u j ) a i j
\begin{aligned}\mathcal{L}(u_1,u_2,\cdots,u_t)&=\prod_{i<j}p_{ij}^{a_{ij}}p_{ji}^{a_{ji}}\\&=\prod_{i<j}\bigg(\frac{u_i}{u_i+u_j}\bigg)^{a_{ij}}\bigg(\frac{u_j}{u_i+u_j}\bigg)^{a_{ji}}\\&=\prod_{i\neq j}\bigg(\frac{u_i}{u_i+u_j}\bigg)^{a_{ij}}\end{aligned}
L ( u 1 , u 2 , ⋯ , u t ) = i < j ∏ p ij a ij p ji a ji = i < j ∏ ( u i + u j u i ) a ij ( u i + u j u j ) a ji = i = j ∏ ( u i + u j u i ) a ij 这里考虑对象对存在方向,这也是原文献中考虑的情况。
由于对所有 u i u_i u i 同乘任意正常数都不会改变似然,故 MLE 实际上是一组仅相差整体尺度的等价解。我们可以先计算这组解,再令 ∑ i u ^ i = 1 \sum_i\hat{u}_i=1 ∑ i u ^ i = 1 以选取其中唯一的代表:
u ^ ∈ arg max u > 0 L ( u ) , ∑ i u ^ i = 1
\hat{\boldsymbol{u}}\in\arg\max_{\boldsymbol{u}>0}\mathcal{L}(\boldsymbol{u}),\qquad \sum_i\hat{u}_i=1
u ^ ∈ arg u > 0 max L ( u ) , i ∑ u ^ i = 1 对似然函数取对数,记对象 i i i 的总胜场数为 w i = ∑ i ≠ j a i j \displaystyle w_i=\sum_{i\neq j}a_{ij} w i = i = j ∑ a ij ,得
log L ( u ) = ∑ i < j [ a i j log u i + a j i log u j − n i j log ( u i + u j ) ] = ∑ i w i log u i − ∑ i < j n i j log ( u i + u j )
\begin{aligned}\log\mathcal{L}(\boldsymbol{u})&=\sum_{i<j}\Big[a_{ij}\log u_i+a_{ji}\log u_j-n_{ij}\log(u_i+u_j)\Big]\\&=\sum_i w_i\log u_i-\sum_{i<j}n_{ij}\log(u_i+u_j)\end{aligned}
log L ( u ) = i < j ∑ [ a ij log u i + a ji log u j − n ij log ( u i + u j ) ] = i ∑ w i log u i − i < j ∑ n ij log ( u i + u j ) 上式对 u i u_i u i 求导并令导数为 0 0 0 ,有
∂ log L ( u ) ∂ u i = w i u i − ∑ i ≠ j n i j u i + u j = 0
\frac{\partial\log\mathcal{L}(\boldsymbol{u})}{\partial u_i}=\frac{w_i}{u_i}-\sum_{i\neq j}\frac{n_{ij}}{u_i+u_j}=0
∂ u i ∂ log L ( u ) = u i w i − i = j ∑ u i + u j n ij = 0 整理得
w i = ∑ i ≠ j n i j u i u i + u j = ∑ i ≠ j E [ a i j ∣ n i j , u ]
w_i=\sum_{i\neq j}n_{ij}\frac{u_i}{u_i+u_j}=\sum_{i\neq j}\mathbb{E}[a_{ij}\mid n_{ij},\boldsymbol{u}]
w i = i = j ∑ n ij u i + u j u i = i = j ∑ E [ a ij ∣ n ij , u ] 对似然函数取对数再取相反数后即得到交叉熵。关于这一点,在另一篇文章 对交叉熵损失的见解 中有详细的推导。
为将正参数 u u u 重参数化为任意实数,令 r i = log u i r_i=\log u_i r i = log u i 、r j = log u j r_j=\log u_j r j = log u j ,便能得到后世大名鼎鼎的 Bradley–Terry 偏好模型:
P ( i ≻ j ) = e r i e r i + e r j = σ ( r i − r j )
P(i\succ j)=\frac{e^{r_i}}{e^{r_i}+e^{r_j}}=\sigma(r_i-r_j)
P ( i ≻ j ) = e r i + e r j e r i = σ ( r i − r j ) 其中 σ ( ⋅ ) \sigma(\cdot) σ ( ⋅ ) 指 Sigmoid 函数,此时整体尺度不变性表现为 r \boldsymbol{r} r 的整体平移不变性,故可令 ∑ r i = 0 \sum r_i=0 ∑ r i = 0 。与上文同理,可计算得相应的 MLE
r ^ = arg max r ∈ R t ∑ i r i = 0 ∑ i < j [ a i j log σ ( r i − r j ) + a j i log σ ( r j − r i ) ]
\hat{\boldsymbol{r}}=\arg\max_{\substack{\boldsymbol{r}\in\mathbb{R}^t\\\sum\limits_i r_i=0}}\sum_{i<j}\left[a_{ij}\log\sigma(r_i-r_j)+a_{ji}\log\sigma(r_j-r_i)\right]
r ^ = arg r ∈ R t i ∑ r i = 0 max i < j ∑ [ a ij log σ ( r i − r j ) + a ji log σ ( r j − r i ) ] 不难看出,Bradley–Terry 模型可以写作二元 Logistic 模型的形式。
Bradley 等人的工作告诉了我们:偏好是可量化的 。在 Bradley–Terry 假设下,只要数据足够充分,我们可以通过 MLE 提炼出潜在的价值 / 强度,从而实现预测对象间的相对偏好。应注意,真实的人类偏好仍可能包含上下文依赖、标注噪声与循环不一致,这些现象并不能被基本的 Bradley–Terry 模型完整描述。
Ford 在 1957 年则进一步给出了严格的证明:上述 MLE 有限且唯一(不考虑整体尺度)当且仅当胜负有向图满足强连通条件。这意味着不必对所有对象都进行至少一次两两比较。
本章节参考文献:
Bradley, Ralph Allan and Milton E. Terry. “Rank Analysis of Incomplete Block Designs: I. The Method of Paired Comparisons.” Biometrika 39 (1952): 324–345. Ford, L. R. “Solution of a Ranking Problem from Binary Comparisons.” The American Mathematical Monthly 64, no. 8 (1957): 28–33. 语言建模问题与奖励模型 在本文开头有提到,SFT 与预训练根本上有着一致的训练目标,即自回归语言建模。因此,SFT 的目的仍然是最大化特定样本的自回归语言建模的(对数)似然
log L ( θ ) = log P ( x ; θ ) = ∑ t = 1 T log P ( x t ∣ x < t ; θ )
\log\mathcal{L}(\boldsymbol{\theta})=\log P(\boldsymbol{x};\boldsymbol{\theta})=\sum^T_{t=1}\log P(x_t|\boldsymbol{x}_{<t};\boldsymbol{\theta})
log L ( θ ) = log P ( x ; θ ) = t = 1 ∑ T log P ( x t ∣ x < t ; θ ) 这要求我们有足够的高质量「问题 → 回答」完整参考样本。
然而,许多场景下我们并没有足够多的「参考答案」,或者问题本身根本就无法明确定义「谁才是参考答案」,例如:怎样的回答更有帮助?怎样的回答更安全?怎样的回答更符合人类的偏好?一般而言,人类能够在两份回答中按上述维度进行比较,但不能给出「最正确」的回答。
因此,仅使用 SFT 无法直接利用「回答 A 优于回答 B」这样的成对偏好信息。而这正是偏好优化所擅长的领域。
偏好优化可分为强化学习方法与非强化学习方法,本章节聚焦于强化学习方法,这依赖于奖励模型(Reward Model,RM)。
2017 年,Christiano 等人在《Deep reinforcement learning from human preferences 》中指出,奖励函数设计困难是价值与强化学习系统优化目标之间出现错位的根源之一,这在语言模型的训练上尤是如此。Christiano 的工作表明,我们可以通过偏好样本训练出奖励模型,并将奖励模型的输出作为 RL 奖励信号,从而在无须直接手工设计复杂任务奖励函数的前提下训练 RL 模型。
如果说,Bradley 与 Terry 为量化偏好提供了一个概率模型,那么 Christiano 等人则利用深度学习进一步实现了将偏好转为可供 RL 算法使用的奖励信号 。
假设 agent(智能体)在环境中所经历的 trajectory(轨迹)segment(片段)为 τ = ( s 0 , a 0 , s 1 , a 1 , ⋯ , s T − 1 , a T − 1 ) \tau=(s_0,a_0,s_1,a_1,\cdots,s_{T-1},a_{T-1}) τ = ( s 0 , a 0 , s 1 , a 1 , ⋯ , s T − 1 , a T − 1 ) ,其中 s t s_t s t 是 agent 在时刻 t t t 的状态、a t a_t a t 是 agent 在时刻 t t t 的动作,则对于两段 trajectory segment τ 1 , τ 2 \tau^1,\tau^2 τ 1 , τ 2 ,有
P ^ ( τ 1 ≻ τ 2 ) = exp ( ∑ t r ^ ( s t 1 , a t 1 ) ) exp ( ∑ t r ^ ( s t 1 , a t 1 ) ) + exp ( ∑ t r ^ ( s t 2 , a t 2 ) )
\hat{P}(\tau^1\succ\tau^2)=\frac{\exp\Big(\sum\limits_t\hat{r}\big(s^1_t,a^1_t\big)\Big)}{\exp\Big(\sum\limits_t\hat{r}\big(s^1_t,a^1_t\big)\Big)+\exp\Big(\sum\limits_t\hat{r}\big(s^2_t,a^2_t\big)\Big)}
P ^ ( τ 1 ≻ τ 2 ) = exp ( t ∑ r ^ ( s t 1 , a t 1 ) ) + exp ( t ∑ r ^ ( s t 2 , a t 2 ) ) exp ( t ∑ r ^ ( s t 1 , a t 1 ) ) 其中 r ^ \hat{r} r ^ 是奖励模型的映射,输出逐状态与动作下的即时奖励(Reward),对应一个可训练的神经网络。exp ( ∑ t r ^ ( s t i , a t i ) ) \exp\Big(\sum\limits_t\hat{r}\big(s^i_t,a^i_t\big)\Big) exp ( t ∑ r ^ ( s t i , a t i ) ) 则是属于第 i i i 个 trajectory segment 的价值 / 强度参数。事实上,上式正是一个标准的 Bradley–Terry 模型之形式。
论文原文使用 σ \sigma σ 表示 trajectory segment,并使用定义在 { 1 , 2 } \{1,2\} { 1 , 2 } 上的分布 μ \mu μ 表示人类的偏好,构成记录 { σ 1 , σ 2 , μ } \{\sigma^1,\sigma^2,\mu\} { σ 1 , σ 2 , μ } 。若人类偏好第一个 segment,则 μ = ( 1 , 0 ) \mu=(1,0) μ = ( 1 , 0 ) ;若偏好第二个 segment,则 μ = ( 0 , 1 ) \mu=(0,1) μ = ( 0 , 1 ) ;若认为二者等价,则 μ = ( 0.5 , 0.5 ) \mu=(0.5,0.5) μ = ( 0.5 , 0.5 ) ;无法比较的样本不加入数据集 D \mathcal{D} D 。
由于人类的偏好实质上是一个分类问题,故损失函数考虑交叉熵。对上式取对数再取相反数,立即得
l o s s ( r ^ ) = − ∑ ( τ 1 , τ 2 , μ ) ∈ D ( μ ( 1 ) log P ^ ( τ 1 ≻ τ 2 ) + μ ( 2 ) log P ^ ( τ 2 ≻ τ 1 ) )
\mathrm{loss}(\hat{r})=-\sum_{(\tau^1,\tau^2,\mu)\in\mathcal{D}}\Big(\mu(1)\log\hat{P}(\tau^1\succ\tau^2)+\mu(2)\log\hat{P}(\tau^2\succ\tau^1)\Big)
loss ( r ^ ) = − ( τ 1 , τ 2 , μ ) ∈ D ∑ ( μ ( 1 ) log P ^ ( τ 1 ≻ τ 2 ) + μ ( 2 ) log P ^ ( τ 2 ≻ τ 1 ) ) 将该损失利用 BP 算法反向传播,即可更新并训练奖励模型。
关于似然函数与交叉熵关系的分析与讨论,可以参考另一篇文章 对交叉熵损失的见解 。
原文献考虑异步地进行奖励模型与策略的更新,并在 Atari 任务中使用同步 A3C(即 A2C)、在模拟机器人任务中使用 TRPO。本章节不展开其实验细节,仅保留与主题相关的部分。
ChatGPT 重要的技术前身——2022 年年初所发布的 InstructGPT 则将 RLHF 工程化地应用于 LLM,并规模化验证、推广了「SFT → RM → PPO」这一经典三阶段流程。InstructGPT 的技术论文《Training language models to follow instructions with human feedback 》提到,对用户而言,1.3B 参数量的 InstructGPT 所生成的回答比 175B 参数量的 GPT-3 所生成的回答更受欢迎。
在语言模型场景中,奖励模型 R ϕ ( x , y ) R_{\phi}(x,y) R ϕ ( x , y ) 接受 prompt x x x 与完整 response y y y ,输出一个标量奖励。对于同一 prompt 下偏好回答 y w y_w y w 与非偏好回答 y l y_l y l ,Bradley–Terry 模型给出
P ϕ ( y w ≻ y l ∣ x ) = σ ( R ϕ ( x , y w ) − R ϕ ( x , y l ) )
P_{\phi}(y_w\succ y_l\mid x)=\sigma\Big(R_{\phi}(x,y_w)-R_{\phi}(x,y_l)\Big)
P ϕ ( y w ≻ y l ∣ x ) = σ ( R ϕ ( x , y w ) − R ϕ ( x , y l ) ) 相应的奖励模型损失为
l o s s ( ϕ ) = − E ( x , y w , y l ) ∼ D [ log σ ( R ϕ ( x , y w ) − R ϕ ( x , y l ) ) ]
\mathrm{loss}(\phi)=-\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}}\Big[\log\sigma\Big(R_{\phi}(x,y_w)-R_{\phi}(x,y_l)\Big)\Big]
loss ( ϕ ) = − E ( x , y w , y l ) ∼ D [ log σ ( R ϕ ( x , y w ) − R ϕ ( x , y l ) ) ] 该损失只依赖奖励差,因此对 R ϕ R_{\phi} R ϕ 整体加上任意常数均不会改变损失。InstructGPT 在 RL 训练前通过偏置项对奖励模型的输出进行归一化,使人类示范样本所获得的平均奖励为 0 0 0 。
关于 PPO 将在后文讨论,这里介绍 InstructGPT 如何将 NLP(Natural Language Processing)中的语言生成建模为 RL 问题:
State s s s :Prompt x x x 与已生成 token y < t y_{<t} y < t Action a a a :下一生成 token y t y_t y t Policy π \pi π :π θ ( a t ∣ s t ) = π θ ( y t ∣ x , y < t ) \pi_{\theta}(a_t\mid s_t)=\pi_{\theta}(y_t\mid x,y_{<t}) π θ ( a t ∣ s t ) = π θ ( y t ∣ x , y < t ) Trajectory τ \tau τ :( s 0 , a 0 , s 1 , a 1 , ⋯ s T − 1 , a T − 1 , s T ) (s_0,a_0,s_1,a_1,\cdots s_{T-1},a_{T-1},s_T) ( s 0 , a 0 , s 1 , a 1 , ⋯ s T − 1 , a T − 1 , s T ) Response:一次完整的自回归生成 token,即 ( y 1 , y 2 , ⋯ , y T ) (y_1,y_2,\cdots,y_T) ( y 1 , y 2 , ⋯ , y T ) Reward Model R ϕ ( x , y ) R_{\phi}(x,y) R ϕ ( x , y ) :对每个完整 response 输出一个标量奖励,而非逐 token 输出 在算法上为模型施加优化约束,往往是出于训练的稳定性与减轻过度优化的考量。
直接约束奖励函数 / 奖励模型输出是一种手段。由于 RM 仅仅是由有限的偏好数据训练得到的,因此 RM 对分布外的样本可能打出极端而不合理的评分。通过限制 RM 的输出,在一定程度上可以缓解这一问题。
与此同时,RM 并不能代表真正的人类价值观(何况人类价值观本就不完全一致),RM 仅仅是由有限的偏好数据训练出的代理,因此 RL 不应完全以最大化 RM 输出为唯一的优化目的。如果以 RM 作为策略优化的唯一目标,模型可能为迎合 RM 而过度优化,更倾向于输出低质量但高奖励的内容,甚至于找到 RM 的漏洞,令得分继续上升但偏离人类预期,从而损害模型的语言能力与知识分布。
为应对这一问题,除 response 层级的奖励外,InstructGPT 还在每个 token 上施加了相对 SFT 模型的 KL penalty。将逐 token 项沿 response 求和后,总奖励可以写成
R ~ ( x , y ) = R ϕ ( x , y ) − β log π θ ( y ∣ x ) π r e f ( y ∣ x )
\widetilde{R}(x,y)=R_{\phi}(x,y)-\beta\log\frac{\pi_{\theta}(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}
R ( x , y ) = R ϕ ( x , y ) − β log π ref ( y ∣ x ) π θ ( y ∣ x ) 其中 π r e f \pi_{\mathrm{ref}} π ref 通常是冻结的 SFT 模型。
这也表明了 RLHF 中 RM 的局限性。
后文将讨论的 TRPO 的 KL 散度约束及 PPO 的 clipping 目的均为限制策略的更新幅度,机制上与 RM 无关。请务必区分。
需要进一步强调的是,二者限制的是策略的更新幅度,而非策略参数的更新幅度,切勿混淆。
本章节参考文献:
Christiano, Paul Francis, Jan Leike, Tom B. Brown, Miljan Martic, Shane Legg and Dario Amodei. “Deep Reinforcement Learning from Human Preferences.” ArXiv abs/1706.03741 (2017): n. pag.
Ouyang, Long, Jeff Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke E. Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul Francis Christiano, Jan Leike and Ryan J. Lowe. “Training language models to follow instructions with human feedback.” ArXiv abs/2203.02155 (2022): n. pag.
策略梯度与 Actor-Critic 本章节是经典强化学习算法的回顾。基于值函数的方法与策略梯度(Policy Gradient)方法是 RL 中长期并行发展的两条路线,Actor-Critic 则同时结合了二者。本章节依次介绍显式参数化策略、Actor-Critic 与 TRPO,应注意这仅仅是本文的撰写顺序,并非算法的发展时间线。
如果在意时间线的话,看看参考文献里标注的发布日期吧。
传统的基于值函数的方法,比如 SARSA、Q-learning 与 DQN,以状态价值或动作价值的估计为核心,且常根据价值估计隐式地导出策略,例如贪婪策略 a ∗ = arg max a Q ( s , a ) a^{\ast}=\arg\max_a Q(s,a) a ∗ = arg max a Q ( s , a ) 或 ε \varepsilon ε -greedy 策略。SARSA 估计当前策略的 Q π Q^{\pi} Q π ,Q-learning 与 DQN 则以最优动作价值 Q ∗ Q^{\ast} Q ∗ 为学习目标。显然,这类策略的质量严重依赖于价值估计的优劣,例如
SARSA(1994):通过与环境的交互,使用 on-policy 的 TD(Temporal Difference)更新,基于下一时刻实际执行的动作 a ′ a' a ′ 修正 Q ( s , a ) Q(s,a) Q ( s , a ) ; Q-learning(1992):通过与环境的交互,使用 off-policy 的 TD 更新,基于下一状态最大动作价值 max a ′ Q ( s ′ , a ′ ) \max_{a'}Q(s',a') max a ′ Q ( s ′ , a ′ ) 修正 Q ( s , a ) Q(s,a) Q ( s , a ) ; DQN(2013):在 Q-learning 的 off-policy TD 框架下,使用深度神经网络 Q ( s , a ; θ ) Q(s,a;\theta) Q ( s , a ; θ ) 替代动作价值函数表,同时引入经验回放与目标网络以稳定训练。 基于策略梯度的方法则显式地参数化策略。对于依赖参数 θ \theta θ 的策略 π θ \pi_{\theta} π θ ,记 π θ ( a ∣ s ) \pi_{\theta}(a\mid s) π θ ( a ∣ s ) 表示在状态 s s s 下选择动作 a a a 的概率、J ( θ ) J(\theta) J ( θ ) 表示策略的期望折扣回报,直接按
θ ← θ + α ∇ θ J ( θ )
\theta\leftarrow\theta+\alpha\nabla_{\theta}J(\theta)
θ ← θ + α ∇ θ J ( θ ) 优化策略参数,而不再从价值函数中导出策略。应注意,这并不意味着策略梯度不使用价值函数;事实上,Q π Q^{\pi} Q π 或 A π A^{\pi} A π 通常仍是策略梯度的重要权重。
定义未归一化的折扣状态访问频率 ρ π ( s ) = ∑ t = 0 ∞ γ t P ( s t = s ∣ π ) \rho_{\pi}(s)=\sum\limits_{t=0}^{\infty}\gamma^tP(s_t=s\mid\pi) ρ π ( s ) = t = 0 ∑ ∞ γ t P ( s t = s ∣ π ) ,策略梯度定理(Policy Gradient Theorem)告诉我们
∇ θ J ( θ ) = ∑ s ρ π ( s ) ∑ a π θ ( a ∣ s ) Q π ( s , a ) ∇ θ log π θ ( a ∣ s )
\nabla_{\theta}J(\theta)=\sum_s\rho_{\pi}(s)\sum_a\pi_{\theta}(a\mid s)Q^{\pi}(s,a)\nabla_{\theta}\log \pi_{\theta}(a\mid s)
∇ θ J ( θ ) = s ∑ ρ π ( s ) a ∑ π θ ( a ∣ s ) Q π ( s , a ) ∇ θ log π θ ( a ∣ s ) 必须指出,尽管状态转移概率 P ( s ′ ∣ s , a ) P(s'\mid s,a) P ( s ′ ∣ s , a ) 仍通过 ρ π \rho_{\pi} ρ π 与 Q π Q^{\pi} Q π 影响策略梯度,但公式中不存在状态访问频率对参数的导数,也不要求显式知道环境动力学或计算其梯度。因此,我们能够直接通过与环境交互得到的 trajectory 估计策略梯度。
策略梯度定理的证明需要一定的篇幅,可参考 1999 年 Sutton 等人发表的会议论文《Policy Gradient Methods for Reinforcement Learning with Function Approximation 》。
上述原始的策略梯度使用 Q π ( s , a ) Q^{\pi}(s,a) Q π ( s , a ) 作为权重,但直接估计 Q π Q^{\pi} Q π 往往具有较高方差,从而导致策略更新不稳定。Actor-Critic 模型是解决该问题的一种思路,它结合了策略梯度方法与基于值函数的方法:通过策略梯度训练负责决策动作的 Actor,并通过 TD 等方法训练负责评估价值的 Critic。
Critic 的职责是输出对 E [ G t ∣ s t ] \mathbb{E}[G_t\mid s_t] E [ G t ∣ s t ] 的估计,其中 G t = ∑ i = t + 1 T γ i − t − 1 R i G_t=\sum\limits^{T}_{i=t+1}\gamma^{i-t-1}R_{i} G t = i = t + 1 ∑ T γ i − t − 1 R i 为折扣累积回报(Return)、γ \gamma γ 为折扣因子(Discount Factor)、R t + 1 R_{t+1} R t + 1 为在状态 s t s_t s t 下执行动作 a t a_t a t 后获得的即时奖励。记 Critic 的输出值为 V ϕ ( s t ) V_{\phi}(s_t) V ϕ ( s t ) ,定义 Advantage(优势)为
A π ( s t , a t ) = Q π ( s t , a t ) − V π ( s t )
A^{\pi}(s_t,a_t)=Q^{\pi}(s_t,a_t)-V^{\pi}(s_t)
A π ( s t , a t ) = Q π ( s t , a t ) − V π ( s t ) 一种简单的做法是使用采样回报构造 MC 估计
A ^ t = G t − V ϕ ( s t )
\hat{A}_t=G_t-V_{\phi}(s_t)
A ^ t = G t − V ϕ ( s t ) 可以证明,如果用优势代替 Q π Q^{\pi} Q π ,则策略梯度的期望不变;选择适当的 baseline 通常可以降低梯度估计的方差,更利于稳定训练。这里只证明期望不变:
E [ A π ( S , A ) ∇ θ log π θ ( A ∣ S ) ] = E [ Q π ( S , A ) ∇ θ log π θ ( A ∣ S ) ] − E [ V π ( S ) ∇ θ log π θ ( A ∣ S ) ] = E [ Q π ( S , A ) ∇ θ log π θ ( A ∣ S ) ] − E S [ V π ( S ) E A [ ∇ θ log π θ ( A ∣ S ) ] ⏟ = 0 ] = E [ Q π ( S , A ) ∇ θ log π θ ( A ∣ S ) ]
\begin{aligned}
&\ \ \ \ \,\,\mathbb{E}\left[ A^{\pi}(S,A)\nabla_{\theta}\log\pi_{\theta}(A\mid S) \right]\\
&= \mathbb{E}\left[ Q^{\pi}(S,A)\nabla_{\theta}\log\pi_{\theta}(A\mid S) \right] -
\mathbb{E}\left[ V^{\pi}(S)\nabla_{\theta}\log\pi_{\theta}(A\mid S) \right] \\
&= \mathbb{E}\left[ Q^{\pi}(S,A)\nabla_{\theta}\log\pi_{\theta}(A\mid S) \right] -
\mathbb{E}_{S}\Big[ V^{\pi}(S)\,\underbrace{\mathbb{E}_{A}\left[ \nabla_{\theta}\log\pi_{\theta}(A\mid S) \right]}_{=0}\Big] \\
&= \mathbb{E}\left[ Q^{\pi}(S,A)\nabla_{\theta}\log\pi_{\theta}(A\mid S) \right]
\end{aligned}
E [ A π ( S , A ) ∇ θ log π θ ( A ∣ S ) ] = E [ Q π ( S , A ) ∇ θ log π θ ( A ∣ S ) ] − E [ V π ( S ) ∇ θ log π θ ( A ∣ S ) ] = E [ Q π ( S , A ) ∇ θ log π θ ( A ∣ S ) ] − E S [ V π ( S ) = 0 E A [ ∇ θ log π θ ( A ∣ S ) ] ] = E [ Q π ( S , A ) ∇ θ log π θ ( A ∣ S ) ] 用优势替代 Q π Q^{\pi} Q π 后,策略梯度为
∇ θ J ( θ ) ≈ 1 N ∑ t = 1 N A ^ t ∇ θ log π θ ( a t ∣ s t )
\nabla_{\theta}J(\theta)\approx\frac{1}{N}\sum_{t=1}^{N}\hat{A}_t\nabla_{\theta}\log \pi_{\theta}(a_t\mid s_t)
∇ θ J ( θ ) ≈ N 1 t = 1 ∑ N A ^ t ∇ θ log π θ ( a t ∣ s t ) 更一般地,在策略梯度中可以用 Q π ( S , A ) − b ( S ) Q^{\pi}(S,A)-b(S) Q π ( S , A ) − b ( S ) 替代 Q π ( S , A ) Q^{\pi}(S,A) Q π ( S , A ) ,其中任何不依赖于动作 A A A 的 b ( S ) b(S) b ( S ) 称为 baseline。对于任何 baseline,做替代后均不会改变梯度的期望。Advantage 则特指 A π ( S , A ) = Q π ( S , A ) − V π ( S ) A^{\pi}(S,A)=Q^{\pi}(S,A)-V^{\pi}(S) A π ( S , A ) = Q π ( S , A ) − V π ( S ) 。在 Actor-Critic 模型中,通常使用 V ϕ ( s t ) V_{\phi}(s_t) V ϕ ( s t ) 作为 baseline,尽管它不一定是最小化方差的最优 baseline,但往往也能缩减相当程度的方差。关于最优 baseline 与方差的讨论可参考《Variance Reduction Techniques for Gradient Estimates in Reinforcement Learning 》。
A3C(Asynchronous Advantage Actor-Critic)是将异步训练与优势函数结合到 Actor-Critic 框架中的代表性工作之一。由于单个环境产生的 trajectory 可能存在高度相关的问题,因此 A3C 使用多个 worker 独立并行采样,异步地更新全局参数。
经典的 A3C 使用 n-step TD error 构造对优势 A π A^{\pi} A π 的估计:
A ^ t = ∑ i = 0 n − 1 γ i R t + i + 1 + γ n V ϕ ( s t + n ) − V ϕ ( s t )
\hat{A}_t = \sum_{i=0}^{n-1}\gamma^i R_{t+i+1} + \gamma^n V_{\phi}(s_{t+n}) - V_{\phi}(s_t)
A ^ t = i = 0 ∑ n − 1 γ i R t + i + 1 + γ n V ϕ ( s t + n ) − V ϕ ( s t ) A2C(Synchronous Advantage Actor-Critic)则是 A3C 的同步版本,所有 worker 同时采集数据,采样完成后统一组成 batch,再一次性地更新参数。相比 A3C,这样的操作对硬件更友好。
在 TRPO 与 PPO 中,更常见的是使用 GAE(Generalized Advantage Estimation,广义优势估计)构造 A ^ t \hat{A}_t A ^ t 。定义单步 TD error
δ t = R t + 1 + γ V ϕ ( s t + 1 ) − V ϕ ( s t )
\delta_t=R_{t+1}+\gamma V_{\phi}(s_{t+1})-V_{\phi}(s_t)
δ t = R t + 1 + γ V ϕ ( s t + 1 ) − V ϕ ( s t ) 则 GAE 为
A ^ t G A E ( γ , λ ) = ∑ l = 0 T − t − 1 ( γ λ ) l δ t + l
\hat{A}^{\mathrm{GAE}(\gamma,\lambda)}_t=\sum_{l=0}^{T-t-1}(\gamma\lambda)^l\delta_{t+l}
A ^ t GAE ( γ , λ ) = l = 0 ∑ T − t − 1 ( γλ ) l δ t + l 其中 λ ∈ [ 0 , 1 ] \lambda\in[0,1] λ ∈ [ 0 , 1 ] 用于权衡偏差与方差。λ \lambda λ 较小时更接近低方差但有偏的 TD 估计,λ \lambda λ 较大时则更接近低偏差但高方差的 MC 估计。
本章节参考文献:
Sutton, Richard S. and Andrew G. Barto. “Reinforcement learning - an introduction, 2nd Edition.” (2018). Watkins, Christopher and Peter Dayan. “Q-learning.” Machine Learning 8 (1992): 279-292. Mnih, Volodymyr, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra and Martin A. Riedmiller. “Playing Atari with Deep Reinforcement Learning.” ArXiv abs/1312.5602 (2013): n. pag. Sutton, Richard S., David A. McAllester, Satinder Singh and Y. Mansour. “Policy Gradient Methods for Reinforcement Learning with Function Approximation.” Neural Information Processing Systems (1999). Greensmith, Evan, Peter L. Bartlett and Jonathan Baxter. “Variance Reduction Techniques for Gradient Estimates in Reinforcement Learning.” Journal of Machine Learning Research 5 (2004): 1471–1530. Mnih, Volodymyr, Adrià Puigdomènech Badia, Mehdi Mirza, Alex Graves, Timothy P. Lillicrap, Tim Harley, David Silver and Koray Kavukcuoglu. “Asynchronous Methods for Deep Reinforcement Learning.” ArXiv abs/1602.01783 (2016): n. pag. Schulman, John, Philipp Moritz, Sergey Levine, Michael I. Jordan and Pieter Abbeel. “High-Dimensional Continuous Control Using Generalized Advantage Estimation.” ArXiv abs/1506.02438 (2015): n. pag. TRPO TRPO(Trust Region Policy Optimization)也是一种策略梯度算法,通常应用于 Actor-Critic 架构。策略梯度定理给出了策略参数的优化方向,但未给出优化的学习率 α \alpha α 。在 A3C 原始文献中,作者团队人工选取基础学习率超参数,并通过 Shared RMSProp 根据历史梯度的平方统计量,对各参数的有效学习率进行动态、自适应放缩。
然而,针对神经网络参数空间中的一次参数更新,我们却很难判断对应的策略究竟改变了多少,相同的参数更新范数 ∥ ∇ θ ∥ \Vert\nabla\theta\Vert ∥∇ θ ∥ 在不同位置上可能对应完全不同的动作概率变化。若更新过大,新策略会进入旧策略几乎没有采样过的区域,此时基于旧策略 trajectory 得到的梯度与优势估计将不再可靠,策略性能可能断崖式下降;若更新过小,训练又会变得十分缓慢。因此,解决问题的关键不在于寻找更合适的学习率,而是在策略分布变化(平均 KL 散度)不超过预算的条件下沿自然策略梯度最大化代理目标 。
为导出这样的约束,记策略 π \pi π 的期望折扣回报为
J ( π ) = E τ ∼ π [ ∑ t = 0 ∞ γ t R t + 1 ]
J(\pi)=\mathbb{E}_{\tau\sim\pi}\left[\sum_{t=0}^{\infty}\gamma^tR_{t+1}\right]
J ( π ) = E τ ∼ π [ t = 0 ∑ ∞ γ t R t + 1 ] 定义未归一化的折扣状态访问频率
ρ π ( s ) = ∑ t = 0 ∞ γ t P ( s t = s ∣ π )
\rho_{\pi}(s)=\sum_{t=0}^{\infty}\gamma^tP(s_t=s\mid\pi)
ρ π ( s ) = t = 0 ∑ ∞ γ t P ( s t = s ∣ π ) 根据性能差异引理(Performance Difference Lemma),任意新旧策略 π n e w , π o l d \pi_{\mathrm{new}},\pi_{\mathrm{old}} π new , π old 的性能差可以表示为
J ( π n e w ) = J ( π o l d ) + ∑ s ρ π n e w ( s ) ∑ a π n e w ( a ∣ s ) A π o l d ( s , a )
J(\pi_{\mathrm{new}})=J(\pi_{\mathrm{old}})+\sum_s\rho_{\pi_{\mathrm{new}}}(s)\sum_a\pi_{\mathrm{new}}(a\mid s)A^{\pi_{\mathrm{old}}}(s,a)
J ( π new ) = J ( π old ) + s ∑ ρ π new ( s ) a ∑ π new ( a ∣ s ) A π old ( s , a ) 上式直观地说明了,如果新策略在其可能访问的状态下倾向于选择优势为正的动作,其性能将优于旧策略。然而,考虑到 ρ π n e w \rho_{\pi_{\mathrm{new}}} ρ π new 本身依赖于尚未确定的新策略,直接优化是困难的。
一种自然的局部近似是将新策略的状态访问频率替换为旧策略的状态访问频率,定义 surrogate objective(代理目标)
L π o l d ( π n e w ) = J ( π o l d ) + ∑ s ρ π o l d ( s ) ∑ a π n e w ( a ∣ s ) A π o l d ( s , a )
L_{\pi_{\mathrm{old}}}(\pi_{\mathrm{new}})=J(\pi_{\mathrm{old}})+\sum_s\rho_{\pi_{\mathrm{old}}}(s)\sum_a\pi_{\mathrm{new}}(a\mid s)A^{\pi_{\mathrm{old}}}(s,a)
L π old ( π new ) = J ( π old ) + s ∑ ρ π old ( s ) a ∑ π new ( a ∣ s ) A π old ( s , a ) 在 π n e w = π o l d \pi_{\mathrm{new}}=\pi_{\mathrm{old}} π new = π old 处,L π o l d L_{\pi_{\mathrm{old}}} L π old 与真实目标 J J J 的函数值及一阶梯度均相等。因此,当新旧策略足够接近时,增大 L L L 通常也能增大 J J J 。
实际训练时,状态与动作均采样自旧策略。利用重要性采样(Importance Sampling),可以将忽略常数 J ( π o l d ) J(\pi_{\mathrm{old}}) J ( π old ) 后的代理目标写为
L ( θ ) = E ( s t , a t ) ∼ π θ o l d [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ]
L(\theta)=\mathbb{E}_{(s_t,a_t)\sim\pi_{\theta_{\mathrm{old}}}}\left[
\frac{\pi_{\theta}(a_t\mid s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}\hat{A}_t
\right]
L ( θ ) = E ( s t , a t ) ∼ π θ old [ π θ old ( a t ∣ s t ) π θ ( a t ∣ s t ) A ^ t ] 其中 A ^ t \hat{A}_t A ^ t 是由旧策略采样数据得到的优势估计。记其中的概率比值 r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta)=\frac{\pi_{\theta}(a_t\mid s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)} r t ( θ ) = π θ old ( a t ∣ s t ) π θ ( a t ∣ s t ) 修正了「动作来自旧策略、目标却评价新策略」所造成的分布差异。r t ( θ ) A ^ t r_t(\theta)\hat{A}_t r t ( θ ) A ^ t 也是 PPO 中最重要的数学结构。
从测度变换的角度理解重要性采样是很有必要的,在另一篇文章 泛函分析与测度论视角下的方差缩减技术 中有详细的讨论。
实际上,仅优化代理目标仍不足以保证真实性能提升,因为当新旧策略相差过大时,ρ π o l d \rho_{\pi_{\mathrm{old}}} ρ π old 与 ρ π n e w \rho_{\pi_{\mathrm{new}}} ρ π new 间将存在较大偏差。TRPO 的理论结果给出了二者误差的上界,定义
D K L max ( π o l d , π n e w ) = max s D K L ( π o l d ( ⋅ ∣ s ) ∥ π n e w ( ⋅ ∣ s ) )
D_{\mathrm{KL}}^{\max}(\pi_{\mathrm{old}},\pi_{\mathrm{new}})=\max_s D_{\mathrm{KL}}\big(\pi_{\mathrm{old}}(\cdot\mid s)\,\big\|\,\pi_{\mathrm{new}}(\cdot\mid s)\big)
D KL m a x ( π old , π new ) = s max D KL ( π old ( ⋅ ∣ s ) π new ( ⋅ ∣ s ) ) 则存在与优势上界、折扣因子有关的常数 C C C ,使得
J ( π n e w ) ⩾ L π o l d ( π n e w ) − C ⋅ D K L max ( π o l d , π n e w )
J(\pi_{\mathrm{new}})\geqslant L_{\pi_{\mathrm{old}}}(\pi_{\mathrm{new}})-C\cdot D_{\mathrm{KL}}^{\max}(\pi_{\mathrm{old}},\pi_{\mathrm{new}})
J ( π new ) ⩾ L π old ( π new ) − C ⋅ D KL m a x ( π old , π new ) 特别地,令 ε = max s , a ∣ A π o l d ( s , a ) ∣ \varepsilon=\max\limits_{s,a}\big|A^{\pi_{\mathrm{old}}}(s,a)\big| ε = s , a max A π old ( s , a ) ,原论文给出了一个保守的理论上界 C = 4 ε γ ( 1 − γ ) 2 C=\frac{4\varepsilon\gamma}{(1-\gamma)^2} C = ( 1 − γ ) 2 4 ε γ 。这意味着,只要在提高代理目标的同时限制新旧策略间的最大 KL 散度(KL divergence),便能控制局部近似的误差并获得单调策略改进的理论保证。
然而,理论上导出的 C C C 过于保守,使用该惩罚系数会导致极小的更新步长,且惩罚系数难以稳健调节。为此,TRPO 采取了两处工程近似:
将 KL 惩罚改为硬约束 将最大 KL 散度替换为旧策略状态分布下的平均 KL 散度 最终得到
max θ E ( s t , a t ) ∼ π θ o l d [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ] s . t . E s t ∼ π θ o l d [ D K L ( π θ o l d ( ⋅ ∣ s t ) ∥ π θ ( ⋅ ∣ s t ) ) ] ⩽ δ
\boxed{\begin{aligned}
\max_{\theta}\quad &\mathbb{E}_{(s_t,a_t)\sim\pi_{\theta_{\mathrm{old}}}}\left[
\frac{\pi_{\theta}(a_t\mid s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}\hat{A}_t
\right]\\
\mathrm{s.t.}\quad &\mathbb{E}_{s_t\sim\pi_{\theta_{\mathrm{old}}}}\Big[
D_{\mathrm{KL}}\Big(\pi_{\theta_{\mathrm{old}}}(\cdot\mid s_t)\,\Big\|\,\pi_{\theta}(\cdot\mid s_t)\Big)
\Big]\leqslant\delta
\end{aligned}}
θ max s.t. E ( s t , a t ) ∼ π θ old [ π θ old ( a t ∣ s t ) π θ ( a t ∣ s t ) A ^ t ] E s t ∼ π θ old [ D KL ( π θ old ( ⋅ ∣ s t ) π θ ( ⋅ ∣ s t ) ) ] ⩽ δ 其中 δ \delta δ 是控制信赖域大小的超参数。所谓「信赖域」,即代理目标足以近似真实目标且旧策略采样数据仍然可信的局部策略空间。
考虑到上述带约束问题是高维非线性目标、高维非线性约束的复杂情形,对大型神经网络的庞大规模参数求解该问题十分困难,因此 TRPO 算法只在 θ o l d \theta_{\mathrm{old}} θ old 的邻域内近似该问题。记 Δ θ = θ − θ o l d \Delta\theta=\theta-\theta_{\mathrm{old}} Δ θ = θ − θ old 、g = ∇ θ L ( θ ) ∣ θ = θ o l d g=\nabla_{\theta}L(\theta)\big|_{\theta=\theta_{\mathrm{old}}} g = ∇ θ L ( θ ) θ = θ old ,将约束中的平均 KL 散度记作 D ˉ K L ( θ o l d , θ ) \bar{D}_{\mathrm{KL}}(\theta_{\mathrm{old}},\theta) D ˉ KL ( θ old , θ ) ,对代理目标作一阶近似、对平均 KL 散度作二阶近似,有
{ L ( θ o l d + Δ θ ) ≈ L ( θ o l d ) + g T Δ θ D ˉ K L ( θ o l d , θ o l d + Δ θ ) ≈ 1 2 Δ θ T F Δ θ F ≔ ∇ θ 2 D ˉ K L ( θ o l d , θ ) ∣ θ = θ o l d
\left\{\begin{aligned}&L(\theta_{\mathrm{old}}+\Delta\theta)\approx L(\theta_{\mathrm{old}})+g^{T}\Delta\theta
\\\\&\bar{D}_{\mathrm{KL}}(\theta_{\mathrm{old}},\theta_{\mathrm{old}}+\Delta\theta)\approx \frac12\Delta\theta^{T}F\Delta\theta\\\\&F\coloneqq\nabla^2_{\theta}\bar{D}_{\mathrm{KL}}(\theta_{\mathrm{old}},\theta)\Big|_{\theta=\theta_{\mathrm{old}}}\end{aligned}\right.
⎩ ⎨ ⎧ L ( θ old + Δ θ ) ≈ L ( θ old ) + g T Δ θ D ˉ KL ( θ old , θ old + Δ θ ) ≈ 2 1 Δ θ T F Δ θ F : = ∇ θ 2 D ˉ KL ( θ old , θ ) θ = θ old 由于 KL 散度非负且当 θ = θ o l d \theta=\theta_{\mathrm{old}} θ = θ old 时取得最小值 0 0 0 ,所以平均 KL 散度在该点的一阶偏导为 0 0 0 ,其局部变化主要由二阶项决定。对于满足常规正则条件的随机策略,该 Hessian 矩阵可以进一步写为
{ F = ∇ θ 2 D ˉ K L ( θ o l d , θ ) ∣ θ = θ o l d [ t ] = − E ( s t , a t ) ∼ π θ o l d [ ∇ θ 2 log π θ ( a t ∣ s t ) ∣ θ = θ o l d ] ⏟ Negative Expected Hessian = E ( s t , a t ) ∼ π θ o l d [ g t g t T ] ⏟ Fisher Information Matrix g t ≔ ∇ θ log π θ ( a t ∣ s t ) ∣ θ = θ o l d ⏟ Score Function
\left\{
\begin{aligned}
F &=\left. \nabla_\theta^2 \bar D_{\mathrm{KL}} (\theta_{\mathrm{old}},\theta) \right|_{\theta=\theta_{\mathrm{old}}}
\begin{aligned}[t]
&= -\underbrace{%
\mathbb{E}_{(s_t,a_t)\sim\pi_{\theta_{\mathrm{old}}}}
\left[ \left. \nabla_\theta^2 \log\pi_\theta(a_t \mid s_t) \right|_{\theta=\theta_{\mathrm{old}}} \right]%
}_{\text{Negative Expected Hessian}} \\
&= \underbrace{%
\mathbb{E}_{(s_t,a_t)\sim\pi_{\theta_{\mathrm{old}}}}
\left[ g_t g_t^T \right]%
}_{\text{Fisher Information Matrix }}\\
\end{aligned}\\\\\\
g_t &\coloneqq\underbrace{\left. \nabla_\theta \log\pi_\theta(a_t \mid s_t) \right|_{\theta=\theta_{\mathrm{old}}}}_{\text{Score Function}}
\end{aligned}
\right.
⎩ ⎨ ⎧ F g t = ∇ θ 2 D ˉ KL ( θ old , θ ) θ = θ old [ t ] = − Negative Expected Hessian E ( s t , a t ) ∼ π θ old [ ∇ θ 2 log π θ ( a t ∣ s t ) θ = θ old ] = Fisher Information Matrix E ( s t , a t ) ∼ π θ old [ g t g t T ] : = Score Function ∇ θ log π θ ( a t ∣ s t ) ∣ θ = θ old 由此可见,F F F 正是策略的 Fisher 信息矩阵,描述了平均 KL 散度在旧参数附近的曲率。将上述近似代入原约束优化问题,得到
max Δ θ g T Δ θ s . t . 1 2 Δ θ T F Δ θ ⩽ δ
\boxed{\begin{aligned}\max_{\Delta\theta}\quad&g^{T}\Delta\theta
\\\mathrm{s.t.}\quad&\frac12\Delta\theta^{T}F\Delta\theta\leqslant\delta\end{aligned}}
Δ θ max s.t. g T Δ θ 2 1 Δ θ T F Δ θ ⩽ δ 利用拉格朗日乘子法,不难得到该问题的最优更新为
Δ θ ∗ = 2 δ g T F − 1 g F − 1 g ⏟ Natural Policy Gradient
\Delta\theta^{\ast}=\sqrt{\frac{2\delta}{g^{T}F^{-1}g}}\underbrace{F^{-1}g}_{\substack{\text{Natural}\\ \text{Policy}\\ \text{Gradient}}}
Δ θ ∗ = g T F − 1 g 2 δ Natural Policy Gradient F − 1 g 其中 F − 1 g F^{-1}g F − 1 g 称为自然策略梯度(Natural Policy Gradient)方向。原始的策略梯度 g g g 是参数空间中的上升方向,Fisher 信息矩阵则根据策略分布对各参数方向的敏感程度对其进行缩放,根式系数进一步根据 KL 预算 δ \delta δ 决定更新长度。因此,TRPO 所使用的二阶信息来自 KL 约束的 Hessian 矩阵,但其代理目标仍只作一阶近似。
在大型神经网络中,显式构造 Fisher 信息矩阵并求逆的计算成本仍然过高。TRPO 实际使用 Fisher-vector product 与共轭梯度法近似求解 F x = g Fx=g F x = g ,再通过 回溯线搜索(Backtracking Line Search)寻找同时提高实际代理目标并满足实际 KL 约束的步长,本文不再展开这些数值优化的细节。Critic 则仍然负责拟合状态价值 V ϕ V_{\phi} V ϕ ,为 Actor 提供优势估计。
从 TRPO 到 PPO,被继承的是代理目标中的概率比率与「限制新旧策略变化」的思想。TRPO 通过平均 KL 散度的硬约束间接限制策略分布的整体变化,但共轭梯度与回溯线搜索使其实现较复杂;PPO 则尝试直接在代理目标中限制 r t ( θ ) r_t(\theta) r t ( θ ) ,从而将带约束的二阶优化问题近似为更易实现的一阶优化问题。下一章节将详细讨论这一变化。
本章节参考文献:
Schulman, John, Sergey Levine, P. Abbeel, Michael I. Jordan and Philipp Moritz. “Trust Region Policy Optimization.” International Conference on Machine Learning (2015). PPO 2017 年,Schulman 等人在论文《Proximal Policy Optimization Algorithms 》中提出了 PPO(Proximal Policy Optimization,近端策略优化),该算法目前在 LLM 训练的场景下已经有了非常广泛的运用,属于典型的 Actor–Critic 架构。Proximal(近端)与 TRPO 的信赖域一脉相承,均暗示算法中新策略应停留在旧策略附近。不同之处在于,PPO 不再显式求解带 KL 约束的二阶优化问题,转而构造能够使用一阶方法直接优化的代理目标 。
原论文实际上给出了两类 PPO,一类在目标函数中加入 KL penalty 并根据实际 KL 散度自适应地调整惩罚系数,一类则直接对概率比率进行 clipping。论文的实验结果表明后者的表现更佳,这也成为了今天通常意义所指代的 PPO,因此下文主要讨论 PPO-Clip。
沿用 TRPO 章节的记号,记旧策略采样得到 ( s t , a t ) (s_t,a_t) ( s t , a t ) 与优势估计 A ^ t \hat{A}_t A ^ t ,则新旧策略对该动作的概率比率为
r t ( θ ) = π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t )
r_t(\theta)=\frac{\pi_{\theta}(a_t\mid s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)}
r t ( θ ) = π θ old ( a t ∣ s t ) π θ ( a t ∣ s t ) 未经约束的代理目标为
L C P I ( θ ) = E t [ r t ( θ ) A ^ t ]
L^{\mathrm{CPI}}(\theta)=\mathbb{E}_t\big[r_t(\theta)\hat{A}_t\big]
L CPI ( θ ) = E t [ r t ( θ ) A ^ t ] 其中 CPI 指 Conservative Policy Iteration(保守策略迭代)。在每轮优化开始时有 θ = θ o l d \theta=\theta_{\mathrm{old}} θ = θ old ,因而 r t ( θ ) = 1 r_t(\theta)=1 r t ( θ ) = 1 ,该目标的一阶梯度正是普通策略梯度。
若只对每批数据进行一次很小的梯度更新,r t r_t r t 通常不会明显偏离 1 1 1 。但我们希望提高样本利用率,在同一批 trajectory 上进行多个 epoch 的 minibatch 更新。随着参数不断变化,r t r_t r t 将逐渐远离 1 1 1 ,而 A ^ t \hat{A}_t A ^ t 与状态分布却仍来自旧策略,此时继续最大化 L C P I L^{\mathrm{CPI}} L CPI 有可能导致破坏性的大幅更新。
为此,PPO-Clip 将代理目标修改为
L C L I P ( θ ) = E t [ min ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ε , 1 + ε ) A ^ t ) ]
\boxed{L^{\mathrm{CLIP}}(\theta)=\mathbb{E}_t\left[
\min\left(
r_t(\theta)\hat{A}_t,
\operatorname{clip}\big(r_t(\theta),1-\varepsilon,1+\varepsilon\big)\hat{A}_t
\right)
\right]}
L CLIP ( θ ) = E t [ min ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ε , 1 + ε ) A ^ t ) ] 其中 ε > 0 \varepsilon>0 ε > 0 为 clipping 超参数,原论文给出的典型取值为 0.2 0.2 0.2 。clip ( r , 1 − ε , 1 + ε ) \operatorname{clip}(r,1-\varepsilon,1+\varepsilon) clip ( r , 1 − ε , 1 + ε ) 则将 r r r 截断至区间 [ 1 − ε , 1 + ε ] [1-\varepsilon,1+\varepsilon] [ 1 − ε , 1 + ε ] ,min \min min 负责在原始目标与截断目标间选取更小、更悲观的结果。
为分析 min \min min 的作用,记单个 timestep 对目标的贡献为 ℓ t C L I P \ell_t^{\mathrm{CLIP}} ℓ t CLIP ,那么根据优势的正负可以将其等价地写为
ℓ t C L I P ( θ ) = { min ( r t ( θ ) , 1 + ε ) A ^ t , A ^ t ⩾ 0 max ( r t ( θ ) , 1 − ε ) A ^ t , A ^ t < 0
\ell_t^{\mathrm{CLIP}}(\theta)=
\begin{cases}
\min\big(r_t(\theta),1+\varepsilon\big)\hat{A}_t,&\hat{A}_t\geqslant 0\\
\max\big(r_t(\theta),1-\varepsilon\big)\hat{A}_t,&\hat{A}_t<0
\end{cases}
ℓ t CLIP ( θ ) = { min ( r t ( θ ) , 1 + ε ) A ^ t , max ( r t ( θ ) , 1 − ε ) A ^ t , A ^ t ⩾ 0 A ^ t < 0 当 A ^ t > 0 \hat{A}_t>0 A ^ t > 0 时,动作 a t a_t a t 比该状态下的平均动作更好,故应提高其概率。随着 r t r_t r t 从 1 1 1 增大,目标随之增大;但当 r t > 1 + ε r_t>1+\varepsilon r t > 1 + ε 后,目标固定为 ( 1 + ε ) A ^ t (1+\varepsilon)\hat{A}_t ( 1 + ε ) A ^ t ,继续提高该动作概率不再带来额外收益。反之,如果 r t < 1 − ε r_t<1-\varepsilon r t < 1 − ε ,PPO 不会截断这个方向,因为降低好动作的概率会使目标变差,梯度仍应推动 r t r_t r t 回升。
当 A ^ t < 0 \hat{A}_t<0 A ^ t < 0 时,动作 a t a_t a t 比平均动作更差,故应降低其概率。随着 r t r_t r t 从 1 1 1 减小,目标得到改善;但当 r t < 1 − ε r_t<1-\varepsilon r t < 1 − ε 后,目标固定为 ( 1 − ε ) A ^ t (1-\varepsilon)\hat{A}_t ( 1 − ε ) A ^ t ,继续降低该动作概率也不再带来额外收益。反之,如果 r t > 1 + ε r_t>1+\varepsilon r t > 1 + ε ,增加坏动作的概率会使目标继续恶化,PPO 同样不会将这个方向截断。
因此,clipping 移除那些因策略变化过大而继续改善代理目标的激励,同时完整保留使代理目标恶化的变化 ,而不会不分方向地把所有 r t r_t r t 强制限制在区间内。由 min \min min 可知,L C L I P L^{\mathrm{CLIP}} L CLIP 是未截断代理目标 L C P I L^{\mathrm{CPI}} L CPI 的逐样本悲观近似,但它并不是真实性能 J ( θ ) J(\theta) J ( θ ) 的严格下界,也不能提供 TRPO 那样的单调改进保证。
PPO-Clip 并不严格确保每个 r t r_t r t 最终都落在 [ 1 − ε , 1 + ε ] [1-\varepsilon,1+\varepsilon] [ 1 − ε , 1 + ε ] 内。神经网络参数由所有样本共同更新,而且在使目标变差的方向上 clipping 不会生效。因此,实际实现仍可能监控新旧策略间的近似 KL 散度,并在其过大时提前停止本轮优化。
PPO 的重要优势在于允许重复利用同一批 on-policy 数据。一次典型的 Actor-Critic 风格 PPO 迭代可以概括为:
保存当前策略为 π θ o l d \pi_{\theta_{\mathrm{old}}} π θ old ,用它与环境交互并采集一批 trajectory; 根据采样奖励与 Critic 的输出计算 return,并利用 GAE 得到优势估计 A ^ t \hat{A}_t A ^ t ; 固定 π θ o l d \pi_{\theta_{\mathrm{old}}} π θ old 、return 与 A ^ t \hat{A}_t A ^ t ,将采样数据打乱并划分为多个 minibatch; 对同一批数据执行多个 epoch,使用 Adam 等一阶优化器最大化 clipped surrogate objective; 本轮结束后令 θ o l d ← θ \theta_{\mathrm{old}}\leftarrow\theta θ old ← θ ,丢弃旧数据并重新采样。 即使有 clipping,仍不应无限次地复用数据。随着 epoch 数增加,当前策略与采样策略逐渐分离,clipping 区域外的样本越来越多,代理目标提供的有效梯度随之减少。本质上,minibatch size、epoch 数、学习率与 ε \varepsilon ε 共同决定了单轮更新幅度。
PPO 通常还需要同时训练价值函数,若 Actor 与 Critic 共享部分网络参数,则可以联合优化。PPO 原论文给出的联合目标可以写为
J P P O ( θ , ϕ ) = E t [ ℓ t C L I P ( θ ) − c v ( V ϕ ( s t ) − V ^ t t a r g e t ) 2 + c H H ( π θ ( ⋅ ∣ s t ) ) ]
J^{\mathrm{PPO}}(\theta,\phi)=\mathbb{E}_t\left[
\ell_t^{\mathrm{CLIP}}(\theta)
-c_v\Big(V_{\phi}(s_t)-\hat{V}^{\mathrm{target}}_t\Big)^2
+c_H\mathcal{H}\big(\pi_{\theta}(\cdot\mid s_t)\big)
\right]
J PPO ( θ , ϕ ) = E t [ ℓ t CLIP ( θ ) − c v ( V ϕ ( s t ) − V ^ t target ) 2 + c H H ( π θ ( ⋅ ∣ s t ) ) ] 其中 c v , c H c_v,c_H c v , c H 为权重,V ^ t t a r g e t \hat{V}^{\mathrm{target}}_t V ^ t target 是由 return 构造的价值目标,H \mathcal{H} H 是策略的熵。第一项更新 Actor,第二项训练 Critic,第三项鼓励探索、防止策略过早退化为近似确定性分布。
该联合目标应最大化。
回到 LLM 的 RLHF 场景,一次 response 生成可以视为一条 trajectory,在每个状态 s t = ( x , y < t ) s_t=(x,y_{<t}) s t = ( x , y < t ) 下,动作为下一个 token y t y_t y t 。采样阶段使用本轮冻结的旧策略 π θ o l d \pi_{\theta_{\mathrm{old}}} π θ old ,逐 token 的概率比率为
r t ( θ ) = π θ ( y t ∣ x , y < t ) π θ o l d ( y t ∣ x , y < t )
r_t(\theta)=\frac{\pi_{\theta}(y_t\mid x,y_{<t})}{\pi_{\theta_{\mathrm{old}}}(y_t\mid x,y_{<t})}
r t ( θ ) = π θ old ( y t ∣ x , y < t ) π θ ( y t ∣ x , y < t ) 必须强调,RLHF 场景下奖励模型只在完整 response 结束后给出标量奖励,而相对的,参考模型(Reference Model,通常是 SFT 后被冻结不训练的模型)的 KL penalty 则可以逐 token 计算。因此,对于采样自旧策略的 response,一种常见的奖励写法为
R ~ t + 1 = − β log π θ o l d ( y t ∣ x , y < t ) π r e f ( y t ∣ x , y < t ) + I { t = T − 1 } R ϕ ( x , y )
\widetilde{R}_{t+1}=
-\beta\log\frac{\pi_{\theta_{\mathrm{old}}}(y_t\mid x,y_{<t})}{\pi_{\mathrm{ref}}(y_t\mid x,y_{<t})}
+I_{\{t=T-1\}}R_{\phi}(x,y)
R t + 1 = − β log π ref ( y t ∣ x , y < t ) π θ old ( y t ∣ x , y < t ) + I { t = T − 1 } R ϕ ( x , y ) 其中仅最后一个 token 获得奖励,所有 token 均加入 reference KL penalty 的逐样本估计项。需要注意,单个 token 的 log-ratio 可能为负;对旧策略的动作分布取期望后,该项才对应非负的 KL 散度。Critic 根据这些奖励估计各 token 状态的价值,GAE 再将 response 末端的偏好信号向前传,构造每个 token 的 A ^ t \hat{A}_t A ^ t ,最终用于 PPO-Clip 更新。
这里同时出现了三个策略,应明确区分:
π θ \pi_{\theta} π θ :正在通过梯度更新的新策略;π θ o l d \pi_{\theta_{\mathrm{old}}} π θ old :本轮采样时冻结的旧策略,用于计算 PPO probability ratio,并在下一轮更新前被替换;π r e f \pi_{\mathrm{ref}} π ref :通常由 SFT 模型冻结得到的参考策略(Reference Policy),在整个 RLHF 过程中保持不变,用于约束策略不要远离初始语言分布。换言之,PPO clipping 旨在抑制单轮更新中新旧策略的过度变化 ,reference KL 则约束当前策略相对固定 SFT 模型的总体偏离 。二者虽然都表现为「不要离原策略太远」,但参照对象、作用尺度与数学形式均不相同。InstructGPT 还在 PPO 梯度中混入预训练目标,得到 PPO-ptx,以期缓解在通用 NLP benchmark 上的能力回退。
现在重新观察 A2C 与 PPO 的关系。A2C 的策略梯度为
∇ θ L A 2 C ( θ ) = E t [ ∇ θ log π θ ( a t ∣ s t ) A ^ t ]
\nabla_{\theta}L^{\mathrm{A2C}}(\theta)=\mathbb{E}_t\left[\nabla_{\theta}\log\pi_{\theta}(a_t\mid s_t)\hat{A}_t\right]
∇ θ L A2C ( θ ) = E t [ ∇ θ log π θ ( a t ∣ s t ) A ^ t ] 而在 PPO 每轮开始的 θ = θ o l d \theta=\theta_{\mathrm{old}} θ = θ old 处都有 r t ( θ ) = 1 r_t(\theta)=1 r t ( θ ) = 1 且 clipping 尚未触发,同时有
∇ θ E t [ r t ( θ ) A ^ t ] ∣ θ = θ o l d = E t [ ∇ θ log π θ o l d ( a t ∣ s t ) A ^ t ]
\nabla_{\theta}\mathbb{E}_t\big[r_t(\theta)\hat{A}_t\big]\Big|_{\theta=\theta_{\mathrm{old}}}
=\mathbb{E}_t\big[\nabla_{\theta}\log\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)\hat{A}_t\big]
∇ θ E t [ r t ( θ ) A ^ t ] θ = θ old = E t [ ∇ θ log π θ old ( a t ∣ s t ) A ^ t ] 故二者在第一次完整 batch 更新时具有相同的策略梯度。
2022 年的论文《A2C is a special case of PPO 》进一步指出:若令 PPO 只进行一个 epoch、使用整个 batch 而不拆分 minibatch,并对齐优化器、rollout 长度、优势估计、价值损失与归一化等配置,则 PPO 可以退化为 A2C,甚至产生完全相同的参数更新。
PPO 相比 A2C 的关键改进并非第一次梯度更新,而是此后仍能借助 clipping 较为稳定地复用同一批数据进行多轮更新。相比 TRPO,它避免了 Fisher 信息矩阵、共轭梯度与回溯线搜索;相比普通 A2C,它又具有更高的样本利用率。代价是 PPO-Clip 只是一种启发式近似,其训练效果仍对 ε \varepsilon ε 、学习率、epoch 数、优势归一化及奖励尺度等实现细节较为敏感。
本章节参考文献:
Schulman, John, Filip Wolski, Prafulla Dhariwal, Alec Radford and Oleg Klimov. “Proximal Policy Optimization Algorithms.” ArXiv abs/1707.06347 (2017): n. pag.
Ouyang, Long, Jeff Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke E. Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul Francis Christiano, Jan Leike and Ryan J. Lowe. “Training language models to follow instructions with human feedback.” ArXiv abs/2203.02155 (2022): n. pag.
Huang, Shengyi, Anssi Kanervisto, Antonin Raffin, Weixun Wang, Santiago Ontan’on and Rousslan Fernand Julien Dossa. “A2C is a special case of PPO.” ArXiv abs/2205.09123 (2022): n. pag.
不显式训练奖励模型的方法(DPO) 2023 年,Rafailov 等人在论文《Direct Preference Optimization: Your Language Model is Secretly a Reward Model 》中提出 DPO(Direct Preference Optimization,直接偏好优化)。经典 RLHF 需要先用偏好数据训练奖励模型、再用 RL 方法优化该奖励,DPO 则将这两个阶段改写为一个直接作用于语言模型的二元分类损失。
DPO 并未否定潜在奖励对偏好的解释,而是将奖励隐式地表示在了策略中。DPO 绝不是简单地对偏好回答做 SFT,除了提高 preferred response 相对于 dispreferred response 的概率,DPO 还通过参考策略表示了与 RLHF 相同的 KL 正则化结构。
一言以蔽之,在 Bradley-Terry 偏好模型下,如果奖励函数固定,则偏好概率只依赖于奖励差。对于两份回答,RLHF 目标的最优策略与参考策略的对数比之差和奖励差是线性相关的,DPO 正是利用这一点,绕开了对奖励值的依赖 。
回到前文 PPO 所优化的 KL 正则化奖励最大化问题。对于 prompt 分布 x ∼ D x\sim\mathcal{D} x ∼ D 、任意奖励函数 r ( x , y ) r(x,y) r ( x , y ) 与固定的参考策略 π r e f \pi_{\mathrm{ref}} π ref ,考虑目标
max π E x ∼ D [ E y ∼ π ( ⋅ ∣ x ) [ r ( x , y ) ] − β D K L ( π ( ⋅ ∣ x ) ∥ π r e f ( ⋅ ∣ x ) ) ]
\max_{\pi}\ \mathbb{E}_{x\sim\mathcal{D}}\Big[
\mathbb{E}_{y\sim\pi(\cdot\mid x)}[r(x,y)]
-\beta D_{\mathrm{KL}}\Big(\pi(\cdot\mid x)\,\Big\|\,\pi_{\mathrm{ref}}(\cdot\mid x)\Big)
\Big]
π max E x ∼ D [ E y ∼ π ( ⋅ ∣ x ) [ r ( x , y )] − β D KL ( π ( ⋅ ∣ x ) π ref ( ⋅ ∣ x ) ) ] 其中 β > 0 \beta>0 β > 0 ,控制奖励最大化与偏离参考策略之间的权衡。与 PPO 不同,我们不必考虑如何用神经网络和策略梯度近似求解,而是将 π ( ⋅ ∣ x ) \pi(\cdot\mid x) π ( ⋅ ∣ x ) 视为任意概率分布,尝试直接寻找这个变分问题的闭式最优解。
定义配分函数(Partition Function)
Z ( x ) = ∑ y π r e f ( y ∣ x ) exp ( 1 β r ( x , y ) )
Z(x)=\sum_y\pi_{\mathrm{ref}}(y\mid x)\exp\left(\frac{1}{\beta}r(x,y)\right)
Z ( x ) = y ∑ π ref ( y ∣ x ) exp ( β 1 r ( x , y ) ) 及概率分布
π r ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) exp ( 1 β r ( x , y ) )
\pi_r(y\mid x)=\frac{1}{Z(x)}\pi_{\mathrm{ref}}(y\mid x)
\exp\left(\frac{1}{\beta}r(x,y)\right)
π r ( y ∣ x ) = Z ( x ) 1 π ref ( y ∣ x ) exp ( β 1 r ( x , y ) ) 对于任意策略 π \pi π ,固定 prompt x x x 后的目标可以改写为
E y ∼ π [ r ( x , y ) − β log π ( y ∣ x ) π r e f ( y ∣ x ) ] = E y ∼ π [ − β log π ( y ∣ x ) π r ( y ∣ x ) + β log Z ( x ) ] = − β D K L ( π ( ⋅ ∣ x ) ∥ π r ( ⋅ ∣ x ) ) + β log Z ( x )
\begin{aligned}
&\ \ \ \ \,\,\mathbb{E}_{y\sim\pi}\left[r(x,y)-\beta\log\frac{\pi(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}\right]\\
&=\mathbb{E}_{y\sim\pi}\left[-\beta\log\frac{\pi(y\mid x)}{\pi_r(y\mid x)}+\beta\log Z(x)\right]\\
&=-\beta D_{\mathrm{KL}}\Big(\pi(\cdot\mid x)\,\big\|\,\pi_r(\cdot\mid x)\Big)+\beta\log Z(x)
\end{aligned}
E y ∼ π [ r ( x , y ) − β log π ref ( y ∣ x ) π ( y ∣ x ) ] = E y ∼ π [ − β log π r ( y ∣ x ) π ( y ∣ x ) + β log Z ( x ) ] = − β D KL ( π ( ⋅ ∣ x ) π r ( ⋅ ∣ x ) ) + β log Z ( x ) 由于 KL 散度非负,且 Z ( x ) Z(x) Z ( x ) 与待优化的 π \pi π 无关,故上式当且仅当 π = π r \pi=\pi_r π = π r 时取得最大值。特别地,对于产生真实偏好的、我们未知的潜在奖励 r ∗ r^{*} r ∗ ,该 KL 正则化奖励最大化问题的最优策略具有闭式解
π ∗ ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) exp ( 1 β r ∗ ( x , y ) )
\pi^{*}(y\mid x)=\frac{1}{Z(x)}\pi_{\mathrm{ref}}(y\mid x)
\exp\bigg(\frac{1}{\beta}r^{*}(x,y)\bigg)
π ∗ ( y ∣ x ) = Z ( x ) 1 π ref ( y ∣ x ) exp ( β 1 r ∗ ( x , y ) ) 实际上,这是一个以参考策略为基底测度的 Gibbs 分布:奖励越高的 response 被乘以越大的指数权重,参考策略则提供语言模型原有的生成分布作为基准。在该精确优化问题中,β \beta β 越大,则奖励对参考策略的指数倾斜越弱,最优策略越接近 π r e f \pi_{\mathrm{ref}} π ref 。
然而,response y y y 的可能取值数量极其庞大,Z ( x ) Z(x) Z ( x ) 无法显式求和,且 r ∗ r^{*} r ∗ 是我们未知的真实奖励。如果只停在这一步,闭式解并不能直接转化为可用的训练算法。DPO 的关键是不尝试计算这两个量,而是将上述映射反转,用最优策略表示奖励。
对最优策略公式取对数并整理,得
r ∗ ( x , y ) = β log π ∗ ( y ∣ x ) π r e f ( y ∣ x ) + β log Z ( x )
r^{*}(x,y)=\beta\log\frac{\pi^{*}(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}+\beta\log Z(x)
r ∗ ( x , y ) = β log π ref ( y ∣ x ) π ∗ ( y ∣ x ) + β log Z ( x ) 对于同一 prompt x x x 下的胜负 response y w , y l y_w,y_l y w , y l ,Bradley–Terry 偏好概率只依赖奖励差
P ( y w ≻ y l ∣ x ) = σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) )
P(y_w\succ y_l\mid x)=\sigma\Big(r^{*}(x,y_w)-r^{*}(x,y_l)\Big)
P ( y w ≻ y l ∣ x ) = σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) 而 β log Z ( x ) \beta\log Z(x) β log Z ( x ) 只与 prompt 有关,在两个奖励相减时会完全消去 。于是
P ( y w ≻ y l ∣ x ) = σ ( β log π ∗ ( y w ∣ x ) π r e f ( y w ∣ x ) − β log π ∗ ( y l ∣ x ) π r e f ( y l ∣ x ) )
P(y_w\succ y_l\mid x)
=\sigma\Bigg(\beta\log\frac{\pi^{*}(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)}-\beta\log\frac{\pi^{*}(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)}\Bigg)
P ( y w ≻ y l ∣ x ) = σ ( β log π ref ( y w ∣ x ) π ∗ ( y w ∣ x ) − β log π ref ( y l ∣ x ) π ∗ ( y l ∣ x ) ) 注意,上式不存在显式的奖励函数与配分函数,唯一依赖奖励值的 β log Z ( x ) \beta\log Z(x) β log Z ( x ) 被消去了。将未知的最优策略 π ∗ \pi^{*} π ∗ 替换为可训练的语言模型 π θ \pi_{\theta} π θ ,再对偏好数据做 MLE,即得 DPO 损失
L D P O ( θ ) = − E ( x , y w , y l ) ∼ D [ log σ ( β log π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β log π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ]
\boxed{\mathcal{L}_{\mathrm{DPO}}(\theta)=-\mathbb{E}_{(x,y_w,y_l)\sim\mathcal{D}}
\left[\log\sigma\left(
\beta\log\frac{\pi_{\theta}(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)}
-\beta\log\frac{\pi_{\theta}(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)}
\right)\right]}
L DPO ( θ ) = − E ( x , y w , y l ) ∼ D [ log σ ( β log π ref ( y w ∣ x ) π θ ( y w ∣ x ) − β log π ref ( y l ∣ x ) π θ ( y l ∣ x ) ) ] 从形式上看,这与前文奖励模型的二元交叉熵几乎相同,区别在于 DPO 使用
r ^ θ ( x , y ) = β log π θ ( y ∣ x ) π r e f ( y ∣ x )
\hat{r}_{\theta}(x,y)=\beta\log\frac{\pi_{\theta}(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}
r ^ θ ( x , y ) = β log π ref ( y ∣ x ) π θ ( y ∣ x ) 作为隐式奖励。这也正是论文标题「Your Language Model is Secretly a Reward Model」的含义:同一个参数化策略,既表示语言模型,也通过其相对参考策略的 log-ratio 表示奖励 。
若记偏好模型的 logit 为 z = β log π θ ( y w ∣ x ) π r e f ( y w ∣ x ) − β log π θ ( y l ∣ x ) π r e f ( y l ∣ x ) z=\beta\log\frac{\pi_{\theta}(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)}-\beta\log\frac{\pi_{\theta}(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)} z = β log π ref ( y w ∣ x ) π θ ( y w ∣ x ) − β log π ref ( y l ∣ x ) π θ ( y l ∣ x ) ,则对于单个 preference pair,定义 ℓ D P O ( θ ) = − log σ ( z ) \ell_{\mathrm{DPO}}(\theta)=-\log\sigma(z) ℓ DPO ( θ ) = − log σ ( z ) ,其对参数 θ \theta θ 的梯度为
∇ θ ℓ D P O ( θ ) = − β ( 1 − σ ( z ) ⏟ weight ) [ ∇ θ log π θ ( y w ∣ x ) − ∇ θ log π θ ( y l ∣ x ) ⏟ difference ]
\nabla_{\theta}\ell_{\mathrm{DPO}}(\theta)=-\beta\big(\underbrace{1-\sigma(z)}_{\text{weight}}\big)\big[\underbrace{\nabla_{\theta}\log\pi_{\theta}(y_{w}\mid x)-\nabla_{\theta}\log\pi_{\theta}(y_{l}\mid x)}_{\text{difference}}\big]
∇ θ ℓ DPO ( θ ) = − β ( weight 1 − σ ( z ) ) [ difference ∇ θ log π θ ( y w ∣ x ) − ∇ θ log π θ ( y l ∣ x ) ] 从上式中可以提炼出以下三点内容:
∇ θ log π θ ( y w ∣ x ) − ∇ θ log π θ ( y l ∣ x ) \nabla_{\theta}\log\pi_{\theta}(y_{w}\mid x)-\nabla_{\theta}\log\pi_{\theta}(y_{l}\mid x) ∇ θ log π θ ( y w ∣ x ) − ∇ θ log π θ ( y l ∣ x ) 为参数更新的方向,即梯度下降的反方向——使模型的输出更偏向 y w y_w y w 、更远离 y l y_l y l ;我们还可以将 1 − σ ( z ) 1-\sigma(z) 1 − σ ( z ) 解释为一种自适应的权重,假设模型输出已经足够偏好 y w y_w y w ,则 z z z 将充分大,1 − σ ( z ) 1-\sigma(z) 1 − σ ( z ) 趋于 0 0 0 ,更新幅度小;若反之,则 z z z 将充分小,1 − σ ( z ) 1-\sigma(z) 1 − σ ( z ) 趋于 1 1 1 ,模型参数将获得较大幅度的更新; β \beta β 在 RLHF 目标中表示 KL 正则化的强度,但在 DPO 损失梯度中,β \beta β 也直接参与缩放 logit z z z 与梯度本身。DPO 的实现与 SFT 较为接近:将 ( x , y w ) (x,y_w) ( x , y w ) 与 ( x , y l ) (x,y_l) ( x , y l ) 分别送入当前策略和冻结的参考策略,求出四个 response log-probability,即可计算上述交叉熵并通过 BP 算法更新 π θ \pi_{\theta} π θ 。对固定数据集,reference log-probability 还可以预先计算并缓存。
一次典型的 DPO 训练流程为:
使用 SFT 模型生成 response,收集 ( x , y w , y l ) (x,y_w,y_l) ( x , y w , y l ) 形式的离线偏好数据; 用 SFT 模型初始化 π θ \pi_{\theta} π θ ,并冻结一份副本作为 π r e f \pi_{\mathrm{ref}} π ref ; 在偏好数据上最小化 L D P O \mathcal{L}_{\mathrm{DPO}} L DPO ,训练过程中不再需要奖励模型、Critic、GAE 或 on-policy rollout。 这使 DPO 可以像普通监督学习一样直接使用 minibatch 反复遍历固定数据集,避免了 PPO 中在线生成、奖励估计、价值函数训练与多模型协同带来的系统复杂度。但需要注意,DPO 损失中并没有一个在每次更新时显式计算的 KL 约束;它与 KL 正则化 RLHF 目标的对应,来自上述闭式最优策略与奖励重参数化。
DPO 的推导包含了几个应当明确强调的假设:
人类的成对偏好能够由 Bradley–Terry 等基于潜在标量奖励的模型描述; 闭式解先在不受参数化限制的概率分布空间中导出,而有限参数的神经网络只能近似表示并优化该解; π r e f ( y ∣ x ) \pi_{\mathrm{ref}}(y\mid x) π ref ( y ∣ x ) 需要在目标 response 上具有非零概率,否则 log-ratio 无定义;离线偏好数据需要对所希望的策略行为有足够覆盖。DPO 训练时不会主动生成新 response 并获取新反馈,故难以自动修补数据分布之外的偏好误差。 不能认为 DPO 是比 PPO 更先进的算法。DPO 更像是一种离线的偏好分类,有实现简洁、训练稳定的优点,并能够直接复用已有偏好数据,而 PPO 则有能力持续从当前策略生成新 response 并优化任意可计算的序列级奖励,但需要更昂贵、更复杂的在线 RL 系统。2024 年的研究《Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study 》表明,经过充分调优的 PPO 可以在实验中超过 DPO 等方法。因此,算法选择应取决于数据是否固定、奖励是否能够显式计算,以及是否愿意承担 on-policy 生成与 Actor-Critic 训练的成本。
本章节参考文献:
Rafailov, Rafael, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D. Manning and Chelsea Finn. “Direct Preference Optimization: Your Language Model is Secretly a Reward Model.” ArXiv abs/2305.18290 (2023): n. pag.
Xu, Shusheng, Wei Fu, Jiaxuan Gao, Wenjie Ye, Weilin Liu, Zhiyu Mei, Guangju Wang, Chao Yu and Yi Wu. “Is DPO Superior to PPO for LLM Alignment? A Comprehensive Study.” International Conference on Machine Learning (2024).