ChatGPT背后的“功臣”——RLHF技术详解
ChatGPT背后的“功臣”——RLHF技术详解
OpenAI推出的ChatGPT对话模型掀起了新的AI热潮,它面对多种多样的问题对答如流,似乎已经打破了机器和人的边界。这一工作的背后是大型语言模型(LLM)生成领域的新训练范式:RLHF(Reinforcement Learning from Human Feedback),即以强化学习方式依据人类反馈优化语言模型。
过去几年里各种LLM根据人类输入提示(prompt)生成多样化文本的能力令人印象深刻。然而,对生成结果的评估是主观和依赖上下文的,例如,我们希望模型生成一个有创意的故事、一段真实的信息性文本,或者是可执行的代码片段,这些结果难以用现有的基于规则的文本生成指标(如BLEU和ROUGE)来衡量。除了评估指标,现有的模型通常以预测下一个单词的方式和简单的损失函数(如交叉熵)来建模,没有显式地引入人的偏好和主观意见。
如果我们用生成文本的人工反馈作为性能衡量标准,或者更进一步用该反馈作为损失来优化模型,那不是更好吗?这就是RLHF的思想:使用强化学习的方式直接优化带有人类反馈的语言模型。RLHF使得在一般文本数据语料库上训练的语言模型能和复杂的人类价值观对齐。
看看ChatGPT是如何解释RLHF的:
ChatGPT解释得很好,但还没有完全讲透;让我们更具体一点吧!
RLHF技术分解
RLHF是一项涉及多个模型和不同训练阶段的复杂概念,这里我们按三个步骤分解:
- 预训练一个语言模型(LM);
- 聚合问答数据并训练一个奖励模型(Reward Model,RM);
- 用强化学习(RL)方式微调LM。
Step 1. 预训练语言模型
首先,我们使用经典的预训练目标训练一个语言模型。对这一步的模型,OpenAI在其第一个流行的RLHF模型InstructGPT中使用了较小版本的GPT-3;Anthropic使用了1000万~520亿参数的Transformer模型进行训练;DeepMind使用了自家的2800亿参数模型Gopher。
这里可以用额外的文本或者条件对这个LM进行微调,例如OpenAI对“更可取”(preferable)的人工生成文本进行了微调,而Anthropic按“有用、诚实和无害”的标准在上下文线索上蒸馏了原始的LM。这里或许使用了昂贵的增强数据,但并不是RLHF必须的一步。由于RLHF还是一个尚待探索的领域,对于”哪种模型”适合作为RLHF的起点并没有明确的答案。
接下来,我们会基于LM来生成训练奖励模型(RM,也叫偏好模型)的数据,并在这一步引入人类的偏好信息。
Step 2. 训练奖励模型
RM的训练是RLHF区别于旧范式的开端。这一模型接收一系列文本并返回一个标量奖励,数值上对应人的偏好。我们可以用端到端的方式用LM建模,或者用模块化的系统建模(比如对输出进行排名,再将排名转换为奖励)。这一奖励数值将对后续无缝接入现有的RL算法至关重要。
关于模型选择方面,RM可以是另一个经过微调的LM,也可以是根据偏好数据从头开始训练的LM。例如Anthropic提出了一种特殊的预训练方式,即用偏好模型预训练(Preference Model Pretraining,PMP)来替换一般预训练后的微调过程。因为前者被认为对样本数据的利用率更高。但对于哪种RM更好尚无定论。
关于训练文本方面,RM的提示-生成对文本是从预定义数据集中采样生成的,并用初始的LM给这些提示生成文本。Anthropic的数据主要是通过Amazon Mechanical Turk上的聊天工具生成的,并在Hub上可用,而OpenAI使用了用户提交给GPT API的prompt。
关于训练奖励数值方面,这里需要人工对LM生成的回答进行排名。起初我们可能会认为应该直接对文本标注分数来训练RM,但是由于标注者的价值观不同导致这些分数未经过校准并且充满噪音。通过排名可以比较多个模型的输出并构建更好的规范数据集。
对具体的排名方式,一种成功的方式是对不同LM在相同提示下的输出进行比较,然后使用Elo系统建立一个完整的排名。这些不同的排名结果将被归一化为用于训练的标量奖励值。
这个过程中一个有趣的产物是目前成功的RLHF系统使用了和生成模型具有不同大小的LM(例如OpenAI使用了175B的LM和6B的RM,Anthropic使用的LM和RM从10B到52B大小不等,DeepMind使用了70B的Chinchilla模型分别作为LM和RM)。一种直觉是,偏好模型和生成模型需要具有类似的能力来理解提供给它们的文本。
接下来是最后一步:利用RM输出的奖励,用强化学习方式微调优化LM。
Step 3. 用强化学习微调
长期以来出于工程和算法原因,人们认为用强化学习训练LM是不可能的。而目前多个组织找到的可行方案是使用策略梯度强化学习(Policy Gradient RL)算法、近端策略优化(Proximal Policy Optimization,PPO)微调初始LM的部分或全部参数。因为微调整个10B~100B+参数的成本过高(相关工作参考低秩适应LoRA和DeepMind的SparrowLM)。PPO算法已经存在了相对较长的时间,有大量关于其原理的指南,因而成为RLHF中的有利选择。
事实证明,RLHF的许多核心RL进步一直在弄清楚如何将熟悉的RL算法应用到更新如此大的模型。
让我们首先将微调任务表述为RL问题。首先,该策略(policy)是一个接受提示并返回一系列文本(或文本的概率分布)的LM。这个策略的行动空间(action space)是LM的词表对应的所有词元(一般在50k数量级),观察空间(observation space)是可能的输入词元序列,也比较大(词汇量^输入标记的数量)。奖励函数是偏好模型和策略转变约束(Policy shift constraint)的结合。
PPO算法确定的奖励函数具体计算如下:将提示x输入初始LM和当前微调的LM,分别得到了输出文本y1,y2,将来自当前策略的文本传递给RM得到一个标量的奖励$r_\theta$。将两个模型的生成文本进行比较计算差异的惩罚项,在来自OpenAI、Anthropic和DeepMind的多篇论文中设计为输出词分布序列之间的Kullback-Leibler(KL)散度的缩放,即$r = r_\theta - \lambda r_\text{KL}$。这一项被用于惩罚RL策略在每个训练批次中生成大幅偏离初始模型,以确保模型输出合理连贯的文本。如果去掉这一惩罚项可能导致模型在优化中生成乱码文本来愚弄奖励模型提供高奖励值。此外,OpenAI在InstructGPT上实验了在PPO添加新的预训练梯度,可以预见到奖励函数的公式会随着RLHF研究的进展而继续进化。
最后根据PPO算法,我们按当前批次数据的奖励指标进行优化(来自PPO算法on-policy的特性)。PPO算法是一种信赖域优化(Trust Region Optimization,TRO)算法,它使用梯度约束确保更新步骤不会破坏学习过程的稳定性。DeepMind对Gopher使用了类似的奖励设置,但是使用A2C(synchronous advantage actor-critic)算法来优化梯度。
作为一个可选项,RLHF可以通过迭代RM和策略共同优化。随着策略模型更新,用户可以继续将输出和早期的输出进行合并排名。Anthropic在其论文中讨论了迭代在线RLHF,其中策略的迭代包含在跨模型的Elo排名系统中。这样引入策略和RM演变的复杂动态,代表了一个复杂和开放的研究问题。
Open-source tools for RLHF
今天,PyTorch中已经有一些RLHF的活跃存储库由此发展而来。主要存储库是Transformers Reinforcement Learning(TRL)、TRLX(起源于TRL的一个分支)和Reinforcement Learning for Language模型(RL4LM)。
TRL旨在使用PPO微调Hugging Face生态系统中的预训练LM。TRLX是CarperAI构建的TRL的扩展分支,用于处理用于在线和离线培训的大型模型。目前,TRLX有一个API,能够以LLM部署所需的规模(例如330亿个参数)使用PPO和隐式语言Q-Learning ILQL进行生产就绪的RLHF。TRLX的未来版本将允许语言模型达到200B参数。因此,与TRLX的接口针对具有这种规模经验的机器学习工程师进行了优化。
RL4LMs提供了用于微调和评估LLM的构建块,其中包含各种RL算法(PPO、NLPO、A2C和TRPO)、奖励函数和指标。此外,该库易于定制,允许在任何任意用户指定的奖励函数上训练任何编码器-解码器或基于编码器转换器的LM。值得注意的是,在最近的工作中,它对广泛的任务进行了充分的测试和基准测试,这些任务涉及多达2000个实验,突出了关于数据预算比较(专家演示与奖励建模)、处理奖励黑客和训练不稳定性等方面的一些实用见解。RL4LM目前的计划包括大型模型的分布式训练和新的RL算法。
TRLX和RL4LM都在大量进一步开发中,因此预计很快会有更多功能。
Hub上有一个由Anthropic创建的大型数据集。
RLHF的未来
尽管RLHF取得了一定的成果和关注,但依然存在局限。这些模型依然会毫无不确定性地输出有害或者不真实的文本。这种不完美也是RLHF的长期挑战和动力——在人类的固有领域中运行意味着永远不会到达一个完美的标准。
收集人类偏好数据的质量和数量决定了RLHF系统性能的上限。RLHF系统需要两种人类偏好数据:人工生成的文本和对模型输出的偏好标签。生成高质量回答需要雇佣兼职人员(而不能依赖产品用户和众包)。另一方面,训练RM需要的奖励标签规模大概是50k左右,所以并不那么昂贵(当然远超了学术实验室的预算)。目前相关的数据集只有一个基于通用LM的RLHF数据集(来自Anthropic和几个较小的子任务数据集(如来自OpenAI的摘要数据集)。另一个挑战来自标注者的偏见。几个人类标注者可能有不同意见,导致了训练数据存在一些潜在差异。
除开数据方面的限制,一些有待开发的设计选项可以让RLHF取得长足进步。例如对RL优化器的改进方面,PPO是一种较旧的算法,但目前没有什么结构性原因让其他算法可以在现有RLHF工作中更具有优势。另外,微调LM策略的一大成本是策略生成的文本都需要在RM上进行评估,通过离线RL优化策略可以节约这些大模型RM的预测成本。最近,出现了新的RL算法如隐式语言Q学习(Implicit Language Q-Learning,ILQL)也适用于当前RL的优化。在RL训练过程的其他核心权衡,例如探索和开发(exploration-exploitation)的平衡也有待尝试和记录。探索这些方向至少能加深我们对RLHF的理解,更进一步提升系统的表现。