Training language models to follow instructions with human feedback

  1. Overview
  2. InstructGPT 训练流程
  3. InstructGPT: Supervised Fune-Tuning
  4. InstructGPT: Reward Modeling
  5. InstructGPT: PPO-based RL
  6. Reference

Overview

1.InstructGPT: 训练流程
2.InstructGPT: Supervised Fune-Tuning
3.InstructGPT: Reward Modeling
4.InstructGPT: PPO-based RL

InstructGPT 训练流程

InstructGPT 目标是提升 GPT 的人类指令遵循能力, 并且和人类反馈做 alignment (对齐), 总共分为以下三个步骤
1.训练一个 SFT 模型, 靠标工人注来生成 SFT 数据
2.训练一个 Reward 模型, 靠标注工人来标注输出结果偏好排序
3.训练一个 RL 模型, reward 靠的是第 2 步实现的 reward 模型打分, 采用的是 PPO 训练

InstructGPT: Supervised Fune-Tuning

exhuasively,
1.sft 训练 16 个 epoch, 采用的是 cosine learning rate 衰减, 残差 dropout = 0.2
(i). 如果训练多个 sft 模型, 比如 step 可以从 2K 到 20K, 怎么选择最好的 sft 模型? 首先准备个验证集, 验证集是由 prompt 组成的一批数据, 然后用这多个 sft 模型对验证集输出结果, 每个结果都对应用 rm 打分, 得分最高的输出结果对应的模型就是我们要的模型
(ii). 在训练过程中, 发现训练超过 1 个 epoch 之后, 都会发生在验证集上过拟合, 但是过拟合就让它过拟合, 因为发现 rm score 是增加的且人类标注打分也是增加的, 所以不管过拟合, 多个 epoch 训练是有效的

InstructGPT: Reward Modeling

Reward modeling 阶段是从 sft model 作为起点, 输入是 输出一个 scaler
1.InstructGPT 采用的是一个 6B 的 rm model, 且发现如果用 175B 的 rm model 训练起来反而是不太稳定, 同时对后续的 RL 训练作为 value function 也是相应地更不稳定的
2.在偏好样本对构建阶段, 采用了 $K=4$, $K=9$ 设定下的 $C_{K}^2$ 个组合; 因为每个偏好对其实都是关于某个 task 的, 如果在一个完整数据集上面完全 shuffle 就会让 rm 训练产生过拟合, 所以训练的时候每个 prompt 由它组成的 pairs 单独作为一个 batch, 发现这种设定下效验证集准确率能提高
3.rm model 的损失函数,注意 reward model 是典型的 loss 和目标分离的损失函数: loss 计算是 pairwise 的, 但我们 infer 目标是 scaler 的

其中 $x$ 是 prompt, $y$ 是 completion, $r_{\theta}(x,y)$ 是 rm 的输出标量, $D$ 是全体数据集, $y_w$ 是所有 pair 中最好的 completion; 训练的时候将 reward normalize 到 0 均值, 然后把这个 0 均值的喂给后续 RL

InstructGPT: PPO-based RL

RL 阶段. RL 的 enviroment 就是随机的一条人类的 prompt, action 就是模型吐出一个 response, reward 完全由第 2 步给出的 reward model 打出来, 算法采用 PPO; 这里增加了一个 policy 相对于 SFT model 的 per-token KL penalty 项, 使得控制别让 policy 偏离 reward model 太远了; value function 是从 reward model 初始化的; 到此为止所有的 RHLF 就齐活了; 然后除了 RL PPO 目标项, 还引入了预训练语言模型基础的交叉熵损失项, 成为一个双目标的优化过程. 为什么要引入语言模型目标?

在传统 RL 训练 (如 PPO) 中, 模型可能因过度优化特定奖励信号而丢失预训练阶段习得的通用语言理解能力, 表现为在公共 NLP 数据集(如 GLUE、SQuAD)上的性能下降. 这种现象被称为 performance regression (性能回归). 为解决此问题,PPO-ptx 通过将预训练任务的梯度与 RL 梯度混合, 形成多目标优化

到此为止完整的 RL 采用 PPO-ptx 目标函数 formulation 是

这里面
(i). $\beta$ 是 KL reward coefficient, 控制着 KL penaltiy 的程度
(ii). $\gamma$ 是控制预训练多目标的系数, $\gamma=0$ 就不是管基础的语言能力下降问题

Reference

[1]. Training language models to follow instructions with human feedback.


转载请注明来源 goldandrabbit.github.io