🌐 RS 数学推导与白板面经:PPO 剪切损失、DPO 闭式解与 RoPE 旋转矩阵
核心摘要:在算法研究科学家(RS)的白板推导面试(Whiteboard Math Round)中,面试官要求候选人脱离 PPT 和现成工具包,在黑板上从第一性原理推演核心算法的闭式解、最优化边界与概率性质。本指南系统汇编顶会级数学推导:DPO 闭式解与隐式奖励消元、PPO 剪切悲观下界、RoPE 复数内积同构、Attention 缩放因子方差控制以及 Score SDE 扩散逆向方程。
¶💡 交互式 Mermaid 架构流程图
STAGE 1
1. 对齐与强化学习核心推导 (Alignment & RL)
📌DPO
KL 约束变分最优化 -> 闭式解 pi*(y|x) -> 隐式奖励消元 Z(x)
📌PPO
Kakade 性能差分引理 -> 一阶概率比剪切 -> 悲观下界保证
STAGE 2
2. 架构与生成数学基础 (Architecture & Diffusion)
📌RoPE
二维复数内积空间保角旋转 -> 相对位置 m-n 严格同构
📌Attention Variance
q^T k 方差等于 d_k -> 除以 sqrt(d_k) 防 Softmax 梯度饱和
📌Score SDE
朗之万动力学 -> 逆向扩散随机微分方程 -> 得分匹配
¶第一章:DPO (Direct Preference Optimization) 极值解数学证明
¶1.1 从带 KL 约束的 RLHF 目标函数推导闭式最优解
在标准 RLHF 中,策略优化目标为:
maxπEx∼D,y∼π(y∣x)[r(x,y)]−βDKL(π(y∣x)∥πref(y∣x))
对于任意给定输入 x,将其展开为对所有可能生成 y 的期望求和:
maxπ∑yπ(y∣x)r(x,y)−β∑yπ(y∣x)logπref(y∣x)π(y∣x)=maxπ∑yπ(y∣x)(r(x,y)−βlogπref(y∣x)π(y∣x))
提取负常数项 −β,构造对数内部结构:
=maxπ−β∑yπ(y∣x)log(πref(y∣x)exp(β1r(x,y))π(y∣x))
定义归一化配分函数(Partition Function):
Z(x)=∑yπref(y∣x)exp(β1r(x,y))
将分子分母同时乘除 Z(x),改写为相对吉布斯分布的形式:
=maxπ−β∑yπ(y∣x)log(Z(x)1πref(y∣x)exp(β1r(x,y))π(y∣x))+βlogZ(x)∑yπ(y∣x)
=maxπ−βDKL(π(y∣x)Z(x)1πref(y∣x)exp(β1r(x,y)))+βlogZ(x)
由于 KL 散度非负(DKL≥0),当且仅当两分布完全相同时取全局最小值 0。因此,唯一的最优策略闭式解为:
π∗(y∣x)=Z(x)1πref(y∣x)exp(β1r(x,y))
¶1.2 隐式奖励重参数化与 Reward Model 消元
对最优策略两边取自然对数:
logπ∗(y∣x)=logπref(y∣x)+β1r(x,y)−logZ(x)
反解出真实奖励函数 r(x,y):
r(x,y)=βlogπref(y∣x)π∗(y∣x)+βlogZ(x)
将隐式奖励函数代入 Bradley-Terry 偏好概率模型:
P(yw≻yl∣x)=σ(r(x,yw)−r(x,yl))=1+exp(−(r(x,yw)−r(x,yl)))1
计算奖励差分项:
r(x,yw)−r(x,yl)=(βlogπref(yw∣x)π∗(yw∣x)+βlogZ(x))−(βlogπref(yl∣x)π∗(yl∣x)+βlogZ(x))
=βlogπref(yw∣x)π∗(yw∣x)−βlogπref(yl∣x)π∗(yl∣x)
归一化常数 βlogZ(x) 在两项做差时被精确消去!
因此,完全无需显式估计复杂的奖励模型,直接以负对数似然构建 DPO 损失函数:
LDPO(θ)=−E(x,yw,yl)∼D[logσ(βlogπref(yw∣x)πθ(yw∣x)−βlogπref(yl∣x)πθ(yl∣x))]
¶第二章:PPO 剪切目标函数的悲观下界证明
根据 Kakade & Langford 提出的性能差分引理(Performance Difference Lemma),新策略 πθ 与旧策略 πold 的累积期望回报之差为:
η(πθ)−η(πold)=Es∼ρπθ,a∼πθ[Aπold(s,a)]
由于无法直接从未知新策略 ρπθ 采样状态分布,TRPO 与 PPO 引入重要性采样构造代理目标函数(Surrogate Objective):
Lπold(πθ)=Es∼ρπold,a∼πold[πold(a∣s)πθ(a∣s)Aπold(s,a)]=Et[rt(θ)A^t]
其中 rt(θ)=πold(at∣st)πθ(at∣st) 为概率比率。
为了防止策略更新迈步过大导致性能雪崩,PPO 定义剪切代理目标:
LCLIP(θ)=Et[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
¶悲观下界性质分析 (Pessimistic Bound)
- 当优势 A^t>0(好动作)时:
- 若 rt(θ)>1+ϵ(新策略大幅提高了该好动作概率),clip 项截断为 (1+ϵ)A^t。
- min(rtA^t,(1+ϵ)A^t)=(1+ϵ)A^t。梯度归零,防止过度贪婪更新。
- 当优势 A^t<0(坏动作)时:
- 若 rt(θ)>1+ϵ(新策略错误地放大了坏动作概率),clip 项为 (1+ϵ)A^t(绝对值更小,负得更少)。
- 取 min(rtA^t,(1+ϵ)A^t)=rtA^t(保留更大的负惩罚),强力施加负梯度把概率拉回!
通过 min 操作,PPO 构建了真实代理性能的悲观下界(Pessimistic Lower Bound),确保了在不计算二阶逆 Hessian 矩阵的前提下实现一阶单调稳定策略更新。
¶第三章:RoPE 旋转位置编码的复数内积同构证明
RoPE 的核心设计哲学:寻找一个映射,使得两个词向量变换后的点积只包含其相对位置差 m−n。
设输入向量在二维子空间中表示为复数 q,k∈C。设位置编码变换函数为 f(q,m) 与 f(k,n)。要求满足保内积条件:
⟨f(q,m),f(k,n)⟩=g(q,k,m−n)
在复数空间中,内积定义为 ⟨u,v⟩=Re(uv∗)。利用极坐标重参数化:
q=∥q∥eiθq,k=∥k∥eiθk,f(q,m)=∥q∥ei(θq+ϕ(m))
代入复数共轭相乘:
f(q,m)f(k,n)∗=∥q∥∥k∥ei(θq−θk+ϕ(m)−ϕ(n))
要使结果与绝对位置无关、严格仅依赖 m−n,必然要求相位函数满足线性同态:
ϕ(m)−ϕ(n)=ϕ(m−n)⟹ϕ(m)=mθ
写回实数二维矩阵形式,即为二维旋转矩阵算子:
Rm=[cos(mθ)sin(mθ)−sin(mθ)cos(mθ)]
对于高维向量 d,将其切分为 d/2 个二维正交子空间,每个子空间赋予不同的基频 θi=10000−2(i−1)/d:
RΘ,md=diag(Rmθ1,Rmθ2,…,Rmθd/2)
核心性质:Rm 为正交矩阵(RmTRm=I),旋转变换严格保持向量的欧几里得模长不变:∥Rmq∥2=∥q∥2,绝不破坏多头注意力的归一化尺度!
import numpy as np
def pure_python_rope_rotation(x: np.ndarray, m: int, theta: float = 10000.0) -> np.ndarray:
d = len(x)
freqs = 1.0 / (theta ** (np.arange(0, d, 2) / d))
angles = m * freqs
cos_a, sin_a = np.cos(angles), np.sin(angles)
x_rotated = np.zeros_like(x)
for i in range(d // 2):
x_rotated[2*i] = x[2*i] * cos_a[i] - x[2*i+1] * sin_a[i]
x_rotated[2*i+1] = x[2*i] * sin_a[i] + x[2*i+1] * cos_a[i]
return x_rotated
if __name__ == "__main__":
vec = np.array([1.0, 2.0, 3.0, 4.0])
print("✅ RoPE 旋转向量 (m=1):", pure_python_rope_rotation(vec, m=1))
¶第四章:自注意力机制中 dk1 缩放因子的方差严格推导
在 Transformer 自注意力层中,计算公式为 Attention(Q,K,V)=softmax(dkQKT)V。
¶为什么必须除以 dk?
假设查询向量 q∈Rdk 与键向量 k∈Rdk 的各分量 qi,ki 为独立同分布的随机变量,满足:
E[qi]=E[ki]=0,Var(qi)=Var(ki)=1
计算两向量点积 S=qTk=∑i=1dkqiki 的期望与方差:
- 期望:
E[S]=∑i=1dkE[qiki]=∑i=1dkE[qi]E[ki]=0
- 方差:
Var(S)=∑i=1dkVar(qiki)=∑i=1dk(E[qi2ki2]−(E[qiki])2)=∑i=1dkE[qi2]E[ki2]=∑i=1dk1⋅1=dk
点积的方差随着特征维度 dk 呈线性增长!当 dk=128 时,标准差 σ=128≈11.3。
若不进行缩放,QKT 的数值极大,导致 Softmax 函数被推入两端极端饱和区(softmax(z)≈0 或 1),其导数 ∂z∂softmax=softmax(1−softmax)≈0,造成极其严重的梯度消失(Vanishing Gradients)!
通过除以 dk 进行归一化:
Var(dkS)=dkVar(S)=dkdk=1
使点积方差恒定为 1,确保 Softmax 处于梯度灵敏的工作区间。