认识陌生名词。
以下内容是我个人笔记,用来反复回忆重要名词的,也着重记录了一些数学的推导过程。
(但是,名词之间的逻辑关系较弱,可能不太适合初学建立知识体系。)
Exposure Bias:暴露偏差
Compounding Errors:误差积累
强化学习的目标:
RLHF 的策略优化目标函数(带 KL 惩罚):
上式中
是单个蒙特卡洛样本估计项。而上式的最优化闭式解是:
也可以简写为:
最优化闭式解中,常有 $Z$ 是归一化常数,
所以也可以记为:
最优化闭式解证明
固定输入 $x$,将目标函数写成:
概率分布需要满足归一化约束:
构造拉格朗日函数:
对 $\pi(y\mid x)$ 求偏导:
令偏导等于零:
整理得:
两边取指数:
由于
与 $y$ 无关,所以它可以作为归一化常数。定义:
最终得到:
也就是:
对应的最优目标值为:
这里的闭式解针对的是最优概率分布 $\pi^*$,而不是神经网络参数 $\theta$。参数化语言模型的最优参数
通常没有闭式解,需要使用 PPO 等数值优化方法近似求解。
Full KL:比较教师和学生在完整词表上的概率分布。$q$ 是教师:
Top-K KL:只比较教师概率最高的 $K$ 个 token。在 Top-K 内重新归一化后计算:
Sampled-token log-ratio:比较 rollout 中实际采样到的 token,
PG-style objective:使用策略梯度形式训练,
重要性采样比:
SFT:监督微调,$x$ 为输入,$y$ 为回答,
GKD:广义知识蒸馏,2306.13649。
PPO:近端策略优化。
优势函数:
广义优势估计:
其中 $\delta_t$ 是 TD error 时序差分误差:
GAE 为什么可以估计 Advantage?
Advantage 是
对于固定的 MDP 和策略 $\pi$,$A^\pi(s_t,a_t)$ 是一个确定的真实量。
GAE 是根据随机采样轨迹得到的随机估计量,
即:
若 $V=V^\pi$ 时,$\delta_t$ 本身就是 Advantage 的无偏估计。令:
对 $s_t,a_t$ 取条件期望:
因此:
而,未来的 TD residual 的条件期望为 0。首先:
而:
所以:
这是因为:
因此,在 Markov 环境并且后续动作按照 $\pi$ 采样时:
因此,
即:
另一个视角,GAE 的另一个本质:多个 $k$-step Advantage Estimator 的加权平均。定义:
它也可以写成:
例如:
GAE 等价于:
因为:
当 $V=V^\pi$ 时,对于任意 $k$:
所以 GAE 是一组无偏 estimator 的加权平均,因此:
实际真实训练中,是神经网络,
而不是精确的:
因此,
GAE 在实际情况下可能有 bias。
PPO 的 surrogate objective,式子中,CPI 代表 Conservative Policy Iteration:
加入 clipping 限制,得 PPO 的 clipped objective:
为什么 PPO surrogate 是正确的?
TL;DR:PPO surrogate 在旧策略处提供与原 reward objective 相同的 policy gradient。
PPO 的基础 surrogate objective 为:
在旧策略处:
对 surrogate 求梯度:
又因为:
所以在旧策略处:
根据 Policy Gradient Theorem:
因此:
PPO-Clip 在旧策略处有:
此时尚未触发 clipping,因此局部上:
从而:
综上,PPO surrogate 与真实 return objective 在旧策略处具有相同的一阶梯度。
surrogate 在旧策略附近是原目标的合理局部替代。
但离旧策略远时,局部一致性越不能保证。
因此需要 clipping 或 KL constraint / penalty 限制策略更新幅度。
可以用代理目标代替真实 return objective 做局部优化。前提:proximal。要让新策略保持在旧策略附近。
此前提是 PPO 的名字。
surrogate objective:替代目标函数。常常:重要性采样、局部有效的一阶近似。
policy gradient 目标:最大化期望 reward,
经典 REINFORCE 的梯度:
由于自回归分解(autoregressive factorization):
所以:
上式是,只有一个最终 reward $R(y)$ 的 vanilla REINFORCE 中,同一个最终 reward 会作用于整条轨迹上的所有 token。
一般 vanilla REINFORCE 用 $G_t$,定义 $G_t$,
使用 return $G_t$,得到 reward-to-go 形式的 REINFORCE 梯度:
为什么可以把整条轨迹的 return R 换成 G?
对于第 $t$ 步,整条轨迹的 return 可以拆成:
因此:
可以写成:
其中,第 $t$ 步之前的 reward 在选择当前动作 $a_t$ 之前就已经发生,因此给定 $s_t$ 后,它们不依赖当前动作 $a_t$。
注意对于任意不依赖当前动作 $a_t$ 的量 $C$,都有:
这是因为:
因此下式中期望贡献为 $0$:
所以:
而 baseline $V(s_t)$ 定义 Advantage:
于是: