强化学习基础 — 策略梯度、优势函数、重要性采样与KL散度惩罚
“理解PPO等强化学习算法之前,必须先理解它试图解决什么问题,以及它站在了哪些巨人的肩膀上。“
一、策略梯度(Policy Gradient)
1.1 从价值方法到策略方法
强化学习的核心目标是找到一个最优策略——即智能体在给定状态下应该采取什么行动。
早期的价值方法(如Q-learning、DQN)占据了主导地位:先估计每个状态-动作对的价值函数Q(s,a),再从中推导出策略(通常是ϵ-贪婪策略)。
但价值方法存在几个根本性的局限:
- 连续动作空间的困境:如果动作空间是连续的(如机器人关节角度),maxaQ(s,a)无法通过穷举计算,需要通过复杂的优化过程求解。
- 策略表达能力的限制:确定性策略π(s)=argmaxaQ(s,a)无法表达随机策略——而在部分可观测环境或需要探索的场景中,随机策略可能是最优的。
- 价值函数对策略的直接优化并不等价:最优价值函数maxπQπ的优化目标与策略的最终性能之间隔着一层间接关系。
近期的策略梯度方法则直接对策略进行参数化,然后沿着提升期望累积奖励的方向更新参数。设策略为πθ(a∣s),其中θ是参数(如神经网络的权重),目标是最大化期望累积奖励:
J(θ)=Eτ∼πθ[R(τ)]=Eτ∼πθ[∑t=0Tγtrt]
其中τ=(s0,a0,r0,s1,a1,r1,...)是轨迹,R(τ)是折扣累积奖励。
1.2 策略梯度定理的完整推导
策略梯度定理(Policy Gradient Theorem,Sutton et al., 1999)是这一切的数学基石。它告诉我们:即使J(θ)对θ的依赖通过轨迹分布τ∼πθ间接体现,梯度仍然有一个简洁的表达式:
∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlogπθ(at∣st)⋅R(τ)]
公式的直觉含义:
- ∇θlogπθ(at∣st):这是得分函数(Score Function) ,指示了参数θ朝哪个方向移动,才能让动作at在状态st下变得更可能
- R(τ):这是权重,决定了参数调整的幅度——回报越高,调整幅度越大
- 整个式子意味着:“执行一个动作,观察回报,然后朝着让这个动作更可能发生的方向调整参数,调整幅度与回报的大小成正比”
具体的数学推导:
首先,将期望展开为对所有可能轨迹的积分:
∇θJ(θ)=∇θ∫τpθ(τ)R(τ)dτ
其中pθ(τ)是策略πθ下轨迹τ的概率密度。将梯度算子移入积分(在正则性条件下):
∇θJ(θ)=∫τ∇θpθ(τ)R(τ)dτ
利用对数和导数技巧:∇θpθ(τ)=pθ(τ)∇θlogpθ(τ),得到:
∇θJ(θ)=∫τpθ(τ)∇θlogpθ(τ)R(τ)dτ=Eτ∼πθ[∇θlogpθ(τ)R(τ)]
轨迹概率pθ(τ)的分解(MDP的无记忆性):
pθ(τ)=p(s0)∏t=0Tπθ(at∣st)⋅p(st+1∣st,at)
取对数:
logpθ(τ)=logp(s0)+∑t=0Tlogπθ(at∣st)+∑t=0Tlogp(st+1∣st,at)
注意:只有中间项logπθ(at∣st)依赖于θ!环境动态p(st+1∣st,at)和初始状态分布p(s0)都不依赖θ。
因此:
∇θlogpθ(τ)=∑t=0T∇θlogπθ(at∣st)
代入,即得:
∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlogπθ(at∣st)⋅R(τ)]
这个公式的直观含义是:对每个动作,用它的对数概率梯度乘以该轨迹的总回报,然后取期望。
1.3 REINFORCE算法与蒙特卡洛估计
实际中,我们无法精确计算这个期望,而是通过蒙特卡洛采样来估计——让智能体与环境互动若干轮,收集轨迹,然后用样本均值近似梯度。这就是经典的REINFORCE算法(Williams, 1992):
∇θJ(θ)≈N1∑i=1N∑t=0T∇θlogπθ(ai,t∣si,t)⋅R(τi)
python伪代码示例:
1def reinforce(env, policy, optimizer, num_episodes=1000, gamma=0.99):2 """3 最朴素的策略梯度算法。4 核心思想:用蒙特卡洛采样估计期望梯度,直接沿梯度方向更新。5 """6 for episode in range(num_episodes):7 # ----- 阶段1: 采样一条完整轨迹 -----8 states, actions, rewards = [], [], []9 state = env.reset()10 done = False11
12 while not done:13 action = policy.sample(state) # 从当前策略采样14 next_state, reward, done = env.step(action)15
16 states.append(state)17 actions.append(action)18 rewards.append(reward)19 state = next_state20
21 # ----- 阶段2: 计算折扣累积回报 -----22 discounted_rewards = []23 cumulative = 024 for t in range(len(rewards) - 1, -1, -1):25 cumulative = rewards[t] + gamma * cumulative26 discounted_rewards.insert(0, cumulative)27
28 # ----- 阶段3: 策略梯度更新 -----29 # 对轨迹中的每一步,计算梯度并累加30 total_gradient = 031 for t in range(len(states)):32 # 策略梯度定理:∇θ log πθ(a|s) * R(τ)33 grad = policy.compute_gradient(states[t], actions[t])34 total_gradient += grad * discounted_rewards[t]35
36 # 沿梯度方向更新参数37 policy.params += learning_rate * total_gradientREINFORCE的核心优势是无偏性——只要采样足够多,梯度估计会收敛到真实梯度。但它面临两个致命问题:
- 高方差(High Variance)。 梯度估计中使用的总回报R(τ)是一个累积量,噪声极大。同一个状态下执行同一个动作,后续的随机性(环境转移、策略采样)可能导致完全不同的回报。这使得梯度估计的方差高得令人难以接受,训练曲线剧烈震荡。
- 采样效率低下(Sample Inefficiency)。 策略梯度本质上是On-Policy的:每次更新参数后,策略变了,之前采集的数据就不再有效(因为梯度期望是在当前策略下计算的)。这意味着每更新一次参数就要重新与环境互动一轮,极其耗时。
这两个问题催生了两个核心工具:
- 优势函数(Advantage Function)→ 降低方差
- 重要性采样(Importance Sampling)→ 实现Off-Policy复用数据
二、优势函数(Advantage Function)
2.1 使用优势函数的原因
回想策略梯度的基本形式:∇θJ(θ)=E[∇θlogπθ(a∣s)⋅R]。这里用总回报R作为动作好坏的度量。
但问题在于:一个动作的绝对回报并不能说明它本身的好坏。假如某个状态无论如何都能获得回报(环境本身就很”慷慨”),那么所有动作的R都是正的,梯度会让所有动作的概率都增加——这显然不合理。我们需要的是相对评估:这个动作比”平均水平”好多少?
2.2 优势函数的定义与偏差-方差权衡
优势函数Aπ(s,a) 精确地回答了这个问题:
Aπ(s,a)=Qπ(s,a)−Vπ(s)
其中:
- Qπ(s,a)=Eτ∼π[∑t=0∞γtrt∣s0=s,a0=a]:在状态s执行动作a后续的期望总回报
- Vπ(s)=Ea∼π(⋅∣s)[Qπ(s,a)]:在状态s按照策略π行动的期望总回报
优势函数衡量的是一个动作相对于策略平均水平的额外价值:
- 若A>0,说明这个动作优于平均水平,应该被鼓励
- 若A<0,则劣于平均水平,应该被抑制
- 若A=0,与平均水平持平,无特殊倾向
将优势函数代入策略梯度:
∇θJ(θ)=E[∇θlogπθ(a∣s)⋅Aπ(s,a)]
为什么能替换? 因为对任意只依赖于状态s的基线b(s):
Ea∼π[∇θlogπθ(a∣s)⋅b(s)]=b(s)⋅∇θ=1a∑πθ(a∣s)=0
Vπ(s)只依赖于状态,因此减去它不改变梯度的期望,但能显著降低方差——这就是所谓的”带基线的策略梯度”(Policy Gradient with Baseline)。
2.3 广义优势估计(GAE)
实践中,我们无法直接获得真实的Aπ,需要从数据中估计。广义优势估计(GAE, Generalized Advantage Estimation) 是由Schulman等人(2016)提出的标准方法,它用TD残差的折扣和来估计优势:
AtGAE(γ,λ)=∑l=0∞(γλ)lδt+lV
其中δtV=rt+γV(st+1)−V(st)是TD误差(Temporal Difference Error) 。
GAE的精妙之处:通过参数λ∈[0,1]在偏差(Bias) 和方差(Variance) 之间做连续调节:
| λ值 | 估计方式 | 偏差 | 方差 | 适用场景 |
|---|---|---|---|---|
| λ=0 | 单步TD优势:At=rt+γV(st+1)−V(st) | 低(依赖价值函数近似) | 低 | 价值函数准确时 |
| λ=1 | 蒙特卡洛优势:At=∑l=0∞γlrt+l−V(st) | 无偏(无价值函数展开误差) | 极高 | 轨迹短、方差可控时 |
| λ=0.95(典型) | 中间插值 | 中等 | 中等 | 大多数场景的最佳平衡 |
具体推导过程:
-
TD误差的定义
- 对于给定的价值函数V,TD误差定义为:δtV=rt+γV(st+1)−V(st)
- 这个量衡量的是:实际观测到的即时奖励加上下一状态的估计价值,与当前状态估计价值的差值。如果δtV>0,说明当前状态的实际表现比预期更好。
-
从TD误差到优势估计
- k步优势估计定义为:A^t(k)=∑l=0k−1γlδt+lV
- 当k→∞时,A^t(∞)=∑l=0∞γlδt+lV=Q(st,at)−V(st)=A(st,at),这是无偏的蒙特卡洛估计。
- 当k=1时,A^t(1)=δtV=rt+γV(st+1)−V(st),这是高偏差但低方差的单步TD估计。
-
GAE的插值
- GAE通过参数λ对上述所有k步估计进行指数加权平均:AtGAE(γ,λ)=(1−λ)∑k=1∞λk−1A^t(k)
- 代入A^t(k)的定义,可以化简为:AtGAE(γ,λ)=∑l=0∞(γλ)lδt+lV
- 这个简洁的递归形式是GAE在实际实现中的标准形式。
python伪代码示例
1def compute_gae(rewards, values, gamma=0.99, lam=0.95):2 """3 计算GAE优势函数。4
5 Args:6 rewards: [T] 每一步的即时奖励7 values: [T+1] 每一步的价值估计(最后一步为0或V(s_terminal))8 gamma: 折扣因子9 lam: GAE的λ参数10
11 Returns:12 advantages: [T] 每一步的优势估计13 targets: [T] 每一步的目标价值(用于更新Critic)14 """15 T = len(rewards)16 advantages = [0] * T17 gae = 018
19 # 逆序计算(从后向前),确保TD误差正确累积20 for t in range(T - 1, -1, -1):21 # TD误差:δ_t = r_t + γV(s_{t+1}) - V(s_t)22 delta = rewards[t] + gamma * values[t+1] - values[t]23
24 # GAE递推:A_t = δ_t + γλA_{t+1}25 gae = delta + gamma * lam * gae26 advantages[t] = gae27
28 # 目标价值 = 优势 + 当前价值估计29 targets = [advantages[t] + values[t] for t in range(T)]30
31 return advantages, targets在LLM对齐实践中,GAE通常与训练的价值网络Vϕ配合使用(如PPO),其中λ取0.95~0.97,γ取1.0(因为LLM对话是episodic任务,无需折扣)。GRPO和其衍生算法(DAPO、GSPO)则完全摒弃了GAE,改用组内归一化奖励作为优势估计。
三、重要性采样(Importance Sampling)
3.1 核心思想与数学形式
重要性采样是一个源自统计学的通用技术。其核心问题是:如果我们想计算Ex∼p[f(x)],但无法从p中采样,只能从另一个分布q中采样,怎么办?
答案是做一个数学变换:
Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex∼q[f(x)q(x)p(x)]
也就是说,从q中采样的每个样本,乘上一个重要性权重p(x)/q(x),就可以无偏地估计p分布下的期望。
3.2 在强化学习中的应用
在策略梯度中,我们原本需要从当前策略πθ中采样来计算梯度。但如果引入重要性采样,就可以用旧策略πθold采集的数据来更新新策略πθ:
∇θJ(θ)=E(s,a)∼πθold[πθold(a∣s)πθ(a∣s)∇θlogπθ(a∣s)⋅Aπθold(s,a)]
这就把On-Policy转化为了Off-Policy:数据来自旧策略(行为策略),但用来更新新策略(目标策略)。
更简洁的表示:
令rt(θ)=πθold(at∣st)πθ(at∣st)为重要性比率。则目标函数可写为:LIS(θ)=E(s,a)∼πθold[rt(θ)⋅Aπθold(s,a)]
最大化这个目标,就等于在旧数据上”重新加权”地优化新策略。
3.3 重要性采样的方差分析
虽然上述等式在数学上成立,但实际使用中有一个巨大的陷阱:当p和q的分布差异过大时,重要性权重的方差会爆炸。
具体地,考虑重要性权重w(x)=p(x)/q(x)。在q分布下,w(x)的方差为:
Varq(w(x))=∫(q(x)p(x))2q(x)dx−(∫q(x)p(x)q(x)dx)2=∫q(x)p(x)2dx−1
当q(x)在p(x)较大的区域取值很小时,比值p(x)/q(x)会极大,导致方差急剧上升。这就是所谓的重要性采样的方差爆炸问题。
在强化学习中,这意味着:如果新旧策略的差异太大,某些动作在新策略下的概率远高于旧策略,对应的样本会被放大数百倍,完全主导梯度更新。这正是PPO引入裁剪机制和KL散度约束的根本动机。
四、KL散度惩罚
4.1 KL散度的定义与性质
KL散度(Kullback-Leibler Divergence) 衡量两个概率分布之间的差异:
DKL(πold(⋅∣s)∥πθ(⋅∣s))=∑aπold(a∣s)logπθ(a∣s)πold(a∣s)=Ea∼πold[logπθ(a∣s)πold(a∣s)]
关键性质:
- DKL(p∥q)≥0,当且仅当p=q时取等号(Gibbs不等式)
- 不对称:DKL(p∥q)=DKL(q∥p),因此它不是一个真正的”距离”
- 能很好地量化”从旧策略变成新策略时,信息损失了多少”
4.2 为什么用KL散度而不是交叉熵?
这是一个常被误解的问题。在监督学习中,交叉熵和KL散度在优化上是等价的——因为标签分布pdata固定,交叉熵的梯度等于KL散度的梯度:
∇θH(pdata,pθ)=∇θ[H(pdata)+DKL(pdata∥pθ)]=∇θDKL(pdata∥pθ)
但在强化学习中完全不同。PPO中的”旧策略”πold是动态变化的——每轮更新后它都在变。交叉熵展开为:
H(πold,πθ)=H(πold)+DKL(πold∥πθ)
其中H(πold)=−∑aπold(a∣s)logπold(a∣s)是旧策略的熵,这个值随训练过程剧烈波动:
- 训练初期:策略随机性强,H(πold)很大,交叉熵阈值被熵项占据,KL约束几乎不起作用
- 训练后期:策略趋于确定,H(πold)减小,KL约束突然变强
这会导致策略更新幅度在训练过程中非线性变化,破坏训练的稳定性。KL散度直接衡量策略分布的变化,不受熵的干扰,因此是更合适的约束。
4.3 KL散度作为信任域约束
TRPO(Trust Region Policy Optimization, Schulman et al., 2015)首次严格证明了:当新旧策略的KL散度被限制在足够小的范围内时,策略性能的改进是有理论保证的。一旦KL散度超过某个阈值,价值估计误差会指数级增长。
TRPO将KL散度作为硬约束(必须满足),通过共轭梯度法等二阶方法求解:
maxθEa∼πold[πold(a∣s)πθ(a∣s)Aπold(s,a)]
s.t. DKL(πold(⋅∣s)∥πθ(⋅∣s))≤δ
但这种方法计算量巨大(需要计算Fisher信息矩阵和共轭梯度迭代)。
PPO则提供了两种更轻量的方案:
方案一:PPO-Penalty(KL惩罚)
在目标函数中直接加入KL惩罚项:
LPPO(θ)=LCLIP(θ)−β⋅DKL(πold∥πθ)
其中β是惩罚系数,可以自适应调整:
- 当DKL>1.5×DKLtarget时,β←2β(加强约束)
- 当DKL<0.5×DKLtarget时,β←β/2(放松约束)
方案二:PPO-Clip(裁剪)
直接对重要性比率r(θ)=πθ(a∣s)/πold(a∣s)进行裁剪:
LCLIP(θ)=E[min(r(θ)A,clip(r(θ),1−ϵ,1+ϵ)A)]
这等效于隐式地限制了策略更新的幅度,但不需要显式计算KL散度。注意:clip(x,1−ϵ,1+ϵ)将x限制在[1−ϵ,1+ϵ]区间内。
4.4 KL散度在RLHF中的角色
在大模型RLHF中,KL散度还有一个特殊作用:约束模型不偏离SFT阶段的”基础能力”。
Rewardfinal=RewardRM−β⋅DKL(πθ∥πSFT)
这个惩罚项防止模型在追求奖励的过程中”走火入魔”——生成高分但无意义或有害的内容。β 控制对齐目标与能力保持之间的权衡。
五、On-Policy vs Off-Policy:稳定性与样本效率的权衡
5.1 定义与本质区别
| 维度 | On-Policy | Off-Policy |
|---|---|---|
| 交互策略 | 与学习策略相同 | 与学习策略不同 |
| 数据来源 | 当前策略自身 | 其他策略(或过去的自己) |
| 典型算法 | REINFORCE, TRPO, PPO | Q-learning, DQN, SAC |
On-Policy(同策略) :学习的策略和与环境交互的策略是同一个。智能体”一边实践一边学习”。每次更新后,旧的轨迹就”作废”了。
Off-Policy(异策略) :学习的策略和与环境交互的策略不是同一个。智能体”观察别人(或过去的自己)的行为来学习”。一份数据可被多次、多轮使用。
5.2 权衡:稳定性 vs 样本效率
| On-Policy | Off-Policy | |
|---|---|---|
| 稳定性 | ✅ 高——梯度估计直接对应当前策略,优化目标明确 | ❌ 低——分布漂移风险,梯度有偏 |
| 样本效率 | ❌ 低——每轮更新后数据失效,需重新采样 | ✅ 高——可复用历史数据,多轮更新 |
| 探索-利用平衡 | 需要单独设计探索机制 | 可分离探索策略和学习策略 |
| 实现复杂度 | 相对简单 | 需要重要性采样校正 |
5.3 PPO的定位:本质仍是On-Policy
尽管PPO使用了重要性采样,它本质上仍然是On-Policy算法。因为PPO虽然允许用旧策略的数据进行多次更新,但会严格限制更新的幅度(通过裁剪或KL约束),确保新策略不会偏离旧策略太远。当偏差超过阈值时,算法会停止使用这批数据,重新采样。
换句话说,PPO是在On-Policy的框架内借用Off-Policy的技术——用重要性采样提高数据利用率,但用信任域约束确保策略不会跑偏。这是PPO能够成为RLHF事实标准的核心原因:它既有On-Policy的稳定性,又有Off-Policy的效率。
六、数据漂移(Distributional Shift)
6.1 什么是数据漂移?
分布漂移(Distributional Shift) 是指训练数据的分布与推理(或部署)时遇到的数据分布不一致。在强化学习中,这表现为:
- 策略漂移:训练时评估的策略与实际部署的策略不同
- 环境漂移:训练环境与部署环境存在差异
- 数据分布漂移:训练样本的分布与策略实际遇到的状态分布不同
6.2 在大模型RLHF中的放大效应
这一问题在LLM的RLHF训练中被急剧放大。核心原因在于训练和推理的解耦:
- 训练时:模型(策略)生成回复(rollout),奖励模型打分,PPO更新参数。这个过程使用的是当前策略生成的分布。
- 推理时:模型部署后面对的是真实用户的prompt分布,可能与训练时的prompt分布大相径庭。
更隐蔽的问题是:奖励模型本身也会遭遇分布漂移。奖励模型是在旧策略的回复分布上训练的,但当策略更新后,新生成的回复可能落在奖励模型从未见过的分布区域,导致奖励估计不准确。这会造成奖励黑客(Reward Hacking)——策略学会利用奖励模型的盲点而非真正提升质量。
6.3 与重要性采样的区别与联系
数据漂移和重要性采样经常被混淆,但它们解决的问题维度不同:
| 核心问题 | 解决方案 | |
|---|---|---|
| 重要性采样 | 如何用分布q的数据估计分布p的期望 | 乘上权重p/q进行数学校正 |
| 数据漂移 | 训练分布与测试/部署分布不一致导致性能下降 | 约束更新幅度、分布鲁棒优化、域自适应 |
在PPO中,两者是共生关系:
- 重要性采样实现了Off-Policy更新(用旧数据更新新策略)
- KL约束(信任域)防止了因策略过快变化导致的数据漂移
6.4 缓解策略
| 策略 | 说明 |
|---|---|
| 信任域约束 | TRPO/PPO的KL约束和裁剪机制,本质上就是为了防止单步更新过大导致的分布漂移 |
| 自适应KL惩罚 | 动态调整惩罚系数β,当检测到KL散度超过阈值时加强约束 |
| 重要性采样校正 | 通过重要性权重对Off-Policy数据进行校正,减少分布不匹配带来的偏差 |
| 分布鲁棒优化(DRO) | 在RLHF中引入分布鲁棒优化,最小化在最坏情况数据分布下的损失 |
| 训推一致性监控 | 在训练过程中持续监控推理引擎(如vLLM)与训练策略之间的KL散度,一旦偏离过大则触发回滚或重新采样 |
七、熵、KL散度与学习率的一体化关系
在大规模RLHF训练中,**熵(Entropy)、KL散度(KL Divergence)与学习率(Learning Rate)**三者之间存在紧密且微妙的耦合关系。
7.1 熵:探索能力的晴雨表
策略熵H(πθ)=−∑aπθ(a∣s)logπθ(a∣s)衡量的是策略的随机性。熵越高,策略越”不确定”,越倾向于探索多样化的动作。
在RLHF的早期版本中,目标函数通常包含一个熵奖励项c⋅H(πθ),通过最大化熵来鼓励探索。但在长CoT推理任务中,过高的熵可能导致模型生成大量无意义的随机推理路径,降低训练效率。GRPO及其衍生算法(DAPO、GSPO)通常移除了显式的熵奖励,转而依靠算法本身的探索机制。
7.2 KL散度:约束安全绳
KL散度DKL(πθ∥πref)衡量的是当前策略与参考策略的分布偏离程度。在RLHF中,KL约束的作用是确保模型不会为了追求高奖励而”忘本”——丢失预训练和SFT阶段获得的语言能力。
7.3 学习率:三者的”调节阀”
学习率是三者互动中的关键调节变量:
- 学习率过高:即使KL约束和裁剪机制存在,模型也会快速偏离参考策略,导致KL散度急剧上升,可能触发训练崩溃。
- 学习率过低:策略更新过于缓慢,熵可能因自然衰减而下降,模型陷入局部最优。
- 三者之间的恶性循环:学习率过高→KL散度爆炸→裁剪机制频繁触发→有效学习信号丢失→熵崩塌→策略多样性丧失→训练停滞。
在实践中,学习率的调度策略必须与KL散度的动态监控以及熵的衰减趋势协同设计。一个常见的安全策略是:当KL散度超过预设阈值时,自动降低学习率,从而形成一个负反馈控制回路。
Note概念的完整串联
- 策略梯度提供了直接优化策略的框架,但面临高方差和低样本效率两个核心问题。
- 优势函数通过减去基线V(s)来降低方差,同时保持无偏性——它告诉我们一个动作相对于平均水平有多好。GAE通过λ参数在偏差和方差之间提供了连续插值。
- 重要性采样让我们可以用旧策略的数据来更新新策略,将On-Policy转化为Off-Policy,提升了样本效率——但代价是可能引入巨大的方差(当新旧策略差异过大时)。
- KL散度惩罚限制了新旧策略的差异,防止重要性采样的方差爆炸和策略崩溃——它充当了 “安全绳” 。从TRPO的硬约束到PPO的软约束,这是一条从”严谨但昂贵”到”近似但高效”的工程化路径。
- On-Policy vs Off-Policy的权衡本质上是稳定性与样本效率的权衡。PPO通过在On-Policy框架内借用Off-Policy技术,在两者之间找到了一个实用的平衡点,这是其能在RLHF中广泛应用的根本原因。
- 数据漂移是这一切问题的终极体现——训练和推理的分布不一致会导致所有精心设计的机制失效。信任域约束、自适应惩罚和分布鲁棒优化是当前主要的应对手段。
- 熵、KL散度与学习率构成了一个三维耦合系统,三者之间的动态平衡决定了RLHF训练的成败。实践中,这三者必须协同设计,而非各自独立调优。
正如OpenAI Spinning Up文档中所说:“从VPG到TRPO再到PPO的技术演进,正是在弥补样本效率的不足,同时保持On-Policy算法的稳定性优势”。这一演进的背后,正是上述所有概念交织作用的结果。
从理论基础到工程实践,每一步都是在”保持理论正确性”和”提升实际可用性”之间寻找平衡。而理解这些概念之间的内在联系,比记忆单个公式重要得多——这正是从”会用PPO”到”理解PPO为什么work”的关键跃迁。
Some information may be outdated