- 预训练一个语言模型 (LM) ;
- 聚合问答数据并训练一个奖励模型 (Reward Model,RM) ;
- 用强化学习 (RL) 方式微调 LM。
预训练语言模型
训练奖励模型
接下来,训练奖励模型RM。奖励模型接受一系列文本并返回一个标量奖励,数值上对应人的偏好。
- 在模型选择方面,奖励模型可以是另一个经过微调的语言模型,也可以是根据偏好数据从头开始训练的语言模型。
- 在训练文本方面,奖励模型的提示-生成文本从预定义数据集中采样生成,并用初始的语言模型给这些提示生成文本。
- 在训练奖励数据方面,需要人工对语言模型生成的回答进行排名。如果直接对文本标注分数来训练奖励模型,由于标注者自身的差异性会导致标注分数充满主观性。通过排名可以比较多个模型的输出并构建更好的规范化数据集。至于如何进行排名?一种成功的方式是对不同语言模型在相同提示下的输出进行比较,然后使用Elo系统建立一个完整的排名。这些不同的排名结果会被归一化为用于训练的标量奖励值。
强化学习微调预训练模型
长期以来,由于工程和算法等原因,人们认为用强化学习训练语言模型是不可行的。现在,很多组织机构寻找到的解决方案是:使用策略梯度强化学习算法(Policy Gradient RL)、近端策略优化算法(Proximal Policy Optimization,PPO)微调初始语言模型的部分或者全部参数。
首先将微调任务表述为强化学习问题:
- 策略(policy) 是一个接受提示并返回一系列文本或者文本的概率分布的语言模型
- 策略的行动空间(action space) 是语言模型的此表对应的所有词元。
- 观察空间(action space) 是可能的输入词元序列
- **奖励函数(reward function)**是偏好模型(preference model )和策略转变约束(constraint on policy shift)的结合
奖励函数是指系统将上述讨论过的模型组合成一个RLHF过程。给定一个提示,将提示输入初始语言模型和微调的语言模型,分别得到输出文本和。将来自当前策略的文本传递给偏好模型,返回一个”preferability“标量概念,。将该文本与初始模型中的文本进行比较,计算一个表示两者差异的惩罚值。在多个来自于OpenAI, Anthropic, and DeepMind的论文中,将此惩罚值设置为输出词分布序列之间的KL散度的缩放,即。KL散度用来惩罚强化学习策略在每个训练批次中生成大幅偏离初始预训练模型,这对确保模型输出合理连贯的文本片段是有用的。如果去除这个惩罚项,可能会导致模型在优化中生成乱码文本愚弄奖励模型提供高奖励值。在实际应用中,KL散度通过从两个分布中采样近似得到,发送到强化学习的最终奖励是。