反思RLHF,如何更加高效训练有偏好的LLM

2023-11-20 15:26:30 浏览数 (1)

|知乎:紫气东来

一、对 RLHF 的反思

当前 LLM 蓬勃发展,各种模型和方法层出不穷,但总体看来,但是朝着以下3点目标前进:

  • 有益性:LLM 在需要时遵循说明、执行任务、提供答案,以实现对用户意图理解并提供有益帮助。
  • 真实性:LLM 提供真实、准确信息并承认其自身不确定性和局限性的能力。
  • 无害性:避免有毒的、有偏见的或冒犯性的反应并拒绝协助危险活动的特性。

由于预训练模型的通用性,在以上3个方面均有所不足,而通过 instruction learning 的方式可以一定程度上激发模型的泛化能力,但是不能很好地对齐人类偏好,因此就有了 RLHF 的方法。

RLHF 的核心思想围绕训练奖励模型展开。即利用人类反馈来生成人类偏好数据集,来训练代表特定任务所需结果的奖励函数。然后利用奖励模型,通过强化学习算法(如PPO)迭代地改进 SFT 模型,改变其内部文本分布以优先考虑人类喜欢的序列。在这种意义上说,奖励模型是将“人类偏好偏差”引入 Baseline 模型的一种手段。

当然,RLHF 在实践过程中也存在一些不足,体现在:

  • 问题1:人工产生的偏好数据集成本较高,很难量产;
  • 问题2:三个阶段的训练(SFT->RM->PPO)过程较长,更新迭代较慢;
  • 问题3:PPO 的训练过程同时存在4个模型(2训练,2推理),对计算资源的要求较高。

针对以上几点问题,当前的改进优化思路主要有几个方向,以下将逐步介绍和讨论。

二、改进方式一:AI 专家替代派

此类方法通常是用来解决问题1或者问题3,即使用AI模型来替换人工标注数据形成偏好,或者指导模型训练。

2.1 RLAIF

该方法的核心在于通过AI 模型监督其他 AI 模型,即在SFT阶段,从初始模型中采样,然后生成自我批评和修正,然后根据修正后的反应微调原始模型。在 RL 阶段,从微调模型中采样,使用一个模型来评估生成的样本,并从这个 AI 偏好数据集训练一个偏好模型。然后使用偏好模型作为奖励信号对 RL 进行训练,即 RL from AI Feedback(RLAIF)。

Constitutional AI 流程

RLAIF 整过过程可分为监督训练阶段强化学习阶段两部分。

阶段一:监督训练阶段,此阶段包括以下步骤:

  1. 获得 Helpful 模型对 red teaming提示的响应。因此,在这些情况下,模型的响应可能是有害的。
  2. 在提供了一套应该遵守的原则,让 Helpful 模型据此评论自己的响应。
  3. 要求 Helpful 模型根据其提供的评论修改其先前的响应。
  4. 重复步骤 2 和 3 进行 n 次迭代。
  5. 针对来自所有有害提示的响应的所有修订版本微调预训练的 LLM,还包括有用的提示和响应的组合,以确保微调后的模型仍然有用,此模型即 Supervised Learning Constitutional AI (SL-CAI) 模型。

阶段二:强化学习阶段,此阶段包括以下步骤:

  1. 使用在上一步训练得到的 SL-CAI 模型生成针对有害提示的响应对。
  2. 使用具有一个原则和一对响应的反馈模型,去选择更无害的响应。
  3. 反馈模型的归一化对数概率用于训练偏好模型/奖励模型。
  4. 最后,利用上一步训练的偏好模型作为奖励函数,以 RLHF 方式训练 SL-CAI 模型,得到 Reinforcement Learning Constitutional AI (RL-CAI) 模型。

另外谷歌的 RLAIF 也采用了类似的方式,即利用 AI 代替人类标注数据。

2.2 RRHF

RRHF(Rank Response from Human Feedback) 不需要强化学习,可以利用不同语言模型生成的回复,包括 ChatGPT、GPT-4 或当前的训练模型。RRHF通过对回复进行评分,并通过排名损失来使回复与人类偏好对齐。RRHF 通过通过排名损失使评分与人类的偏好(或者代理的奖励模型)对齐。RRHF 训练好的模型可以同时作为生成语言模型和奖励模型使用。下图中对比了 PPO 算法和 RRHF 算法的区别:

RRHF v.s PPO

RRHF算法可以有效地将语言模型输出概率与人类偏好对齐,其训练思路非常简单,训练完成的模型有几个特点:

  • 仅需要1到2个模型,而PPO需要4个模型,因此RRHF算法更加简单高效。
  • 监督微调(SFT)可以被看作是RRHF算法的一种特殊形式。
  • RRHF 算法可以同时被用作语言模型和奖励模型。
  • RRHF 算法可以在较低的训练难度下拟合奖励模型的偏好,达到PPO算法的效果,并且避免了PPO算法中的复杂性和不稳定性问题。

需要了解更多可以参考RRHF 项目。

三、改进方式二:微调数据优化派

该类方法的核心在于仅仅通过优质数据集的获取和产生,以训练得到一个效果较好的 SFT 模型,而无需进行 RM 和 PPO 的训练。

3.1LIMA

LIMA(Less Is More for Alignment) 即浅层对齐假说,即一个模型的知识和能力几乎完全是在预训练中学习的,而对齐则是教会它与用户交互时如何选择子分布。如果假说正确,对齐主要有关于学习方式,那么该假说的一个推论是,人们可以用相当少的样本充分调整预训练的语言模型。因此,该工作假设,对齐可以是一个简单的过程,模型学习与用户互动的风格或格式,以揭示在预训练中已经获得的知识和能力。

为此,研究者收集了 1000 个 prompt 和回答的数据集,其中输出 (回答) 在风格上一致,但输入 (prompt) 是不同的。他们想找出一种有帮助的、AI 助手风格的输出。精选样本的来源主要包括社区问答和手动撰写两部分。除此之外,团队还收集了一个包含 300 个 prompt 的测试集以及一个包含 50 个 prompt 的开发集。下面分析下主要数据集的构成:

  • Stack Exchange:在从Stack Exchange采样时,同时采用了质量和多样性控制。首先,将交流分成75个STEM交流(包括编程、数学、物理等)和99个其他(英语、烹饪、旅游等),并放弃了5个小众交流。然后,从每组中抽出200个问题和答案,使用 =3的温度来获得不同领域的更均匀的样本。在每个交流,选择得分最高的问题,然后选择每个问题的最高答案,并保证它有很强的正面得分(至少10分)。为了符合一个有帮助的人工智能助手的风格,自动过滤那些太短(少于1200个字符)、太长(超过4096个字符)、以第一人称书写("我"、"我的")或引用其他答案("如提到"、"Stack exchange "等)的答案;并从回答中删除链接、图片和其他HTML标签,只保留代码块和列表。
  • wikiHow:wikiHow是一个在线的维基式出版物,有超过24万篇关于各种主题的方法文章。从wikiHow中抽取了200篇文章,首先抽取一个类别(19个),然后抽取其中的一篇文章,以确保多样性。使用标题作为提示(例如 "如何做煎蛋?"),并将文章的内容作为回应。在处理上,用 "下面的答案...... "取代典型的 "这篇文章...... "开头,并采用一些启发式的预处理方法来修剪链接、图片和文本中的某些部分。
  • Pushshift Reddit:Reddit是世界上最受欢迎的网站之一,允许用户在用户创建的subreddits中分享、讨论和加注内容。在处理上,将样本限制在两个子集,即r/AskReddit和r/WritingPrompts,并从每个社区的最高票数的帖子中手动选择例子。并从r/AskReddit中找到了70个自成一体的提示(只有标题,没有正文),并将其用作测试集。WritingPrompts子版块包含虚构故事的前提,然后鼓励其他用户创造性地完成这些故事,共找到150个提示和高质量的回应,包括情诗和短篇科幻小说等主题,并将其加入训练集。
  • 人工撰写例子:为了使数据进一步多样化,除了在线社区中用户提出的问题之外,还收集了来自自己(这项工作的作者)的提示信息。指定了两组作者,A组和B组,各创作250个提示,灵感来自他们自己或他们朋友的兴趣。在过滤了一些有问题的提示后,B组剩下的230条提示被用于测试。此外,还包括13个具有一定程度毒性或恶意的训练提示。此外,该工作还选择了50个自然语言生成任务,如总结、转述和风格转换,并从每个任务中随机挑选一个例子,并对其中的一些例子稍作编辑。

将LIMA与其他模型进行比较,仍然比在52K数据上微调的 Alpaca 65B 和通过 RLHF 训练得到的 OpenAI-DaVinci003 有明显优势。

对应的消融实验显示,当扩大数据量而不同时扩大提示多样性时,收益会大大减少,而在优化数据质量时,收益会大大增加。 此外,尽管没有对话实例,LIMA可以进行连贯的多轮对话,而且这种能力可以通过向训练集添加30条手工制作的多轮对话数据而得到极大的提高。

3.2 MAYBE ONLY 0.5% DATA IS NEEDED

本文主要从数据角度来探讨如何降低 LLM 训练阶段的成本,提高数据效率。为了实现该目的,作者通过从现有数据中识别出最有价值的核心样本来帮助模型获取下游任务的知识,并仅用少量数据来实现可比甚至更好的性能。

方法流程下图所示,潜在空间用三个矩形表示,每个任务代表其中一个颜色系列。具有相同色系但不同色调的点,对应于来自同一任务但来自不同数据集的数据,如 NLI 任务有 5 个数据集,因此有 5 种不同的色调。主要分为以下几步:

  1. 将每个句子编码成embedding向量,并进行均值池化和 L2 归一化的预处理。
  2. 在潜在空间中,将所有样本点聚类成几个类别。
  3. 从这些聚类样本中进行采样,找到原始分布中的核心样本。
  4. 使用这些检索到的样本来指导微调 LLM 并进行评估。

作者在选择特定任务和指令格式后,在总共 11 个数据集上进行了实验,这些数据跨越 4 个自然语言处理任务:自然语言推理(Natural Language Inference, NLI, 1.9M 个 token)、句子补语(Sentence Completion, SC, 660.6K 个 token)、词义消解(Word Sense Disambiguation, WSD, 25.5K 个 token)和指代消解(Coreference Resolution, CR, 185.1K 个 token)。成功使用原始数据集不到 0.5% 的数据训练了一个特定任务模型,相当于将数据规模缩小了 200 倍,并与在 P3 中基于任务相关数据训练的模型具有可比性能。

对于自然语言推理(NLI)任务,得出了以下观察结果:

  • 如果只是为了优化特定任务的性能,仅在目标任务数据上微调的 LLM 模型很可能比在不同类型任务数据上微调的模型更优。
  • 在专门针对单个任务时,似乎只需要一个指令进行指令微调。虽然增加指令类型数量可以提高性能,但边际效应变得不那么显著,甚至可能有单一指令优于十种指令的情况。
  • 与为整体任务性能训练模型相反,结果还表明,16000 个实例(1.9M 个 token,占 P3 的 0.5%)可能足以训练一个 NLI 任务特定的模型。

综合来看,在特定任务和指令格式下,仅使用少量的数据就可以训练具有可比性能的模型。

由于成本较低、实现简单,此类方法出现的也比较多。除了以上列举的2种外,还有方案包括 WizardLM (Microsoft), Platypus (Boston University), Humpback (Meta) 等。

Humpback 的数据生成方式

四、方式三:训练过程改造派

该类方法通常通过改造模型的训练方式(如只保留SFT和RM),以提高训练效率并减少训练成本。

4.1 RAFT

RAFT(Reward rAnked FineTuning),它基于关于通过奖励和监督微调对样本进行排序的组合的形式。

值得一提的是,RAFT的三个步骤,即数据收集、数据排序、模型微调,可以单独实施和执行。因此,只要计算资源和显存允许在某些特定模型上进行 SFT,对齐过程可以使用 RAFT 完成。此外,在RAFT的实际实现中,可以使用批量推理和模型并行来加速数据收集。

在影评完成任务上测试该方法,即在 IMDB 数据集上的文本续写,并生成的文本具有积极的情感。作者使用 25K的训练集,并从验证样本中随机抽取 3.2K 个样本作为测试集。为了生成提示,作者将评论的前 64 个标记截断为输入提示,然后使用语言模型生成 48 个 token,目的是在确保最大流畅度的同时传达积极情绪。为了评估生成文本的积极性,作者使用了 BERT 的蒸馏版本为实验提供情感评分。作者采用25K训练集微调后的 LLaMA-7B-IMDB作为初始模型。并将 RAFT 与 PPO 的效果进行对比,考虑到前向和反向的计算复杂度,定义

下图 (1) 即 reward 与 cost 的关系图,改图说明了 RAFT 比 PPO 的训练效率高;图 (2) 是 reward 与 ppl 的关系图,可看到在相同 reward 的情况下 RAFT 的 ppl 更低,在相同 ppl 的情况下 RAFT 的 reward 更高。

另外 Llama2 的 Rejection Sampling,DeepMind 的 ReST 和 RSO 也采用了相似的原理。

4.2 DPO

DPO(Direct Preference Optimization) 提出了一种使用二进制交叉熵目标来精确优化LLM的方法,以替代基于 RL HF 的优化目标,从而大大简化偏好学习 pipeline。也就是说,完全可以直接优化语言模型以实现人类的偏好,而不需要明确的奖励模型或强化学习。

与现有的算法一样,DPO 也依赖于理论上的偏好模型(如 Bradley-Terry 模型),以此衡量给定的奖励函数与经验偏好数据的吻合程度。然而,现有的方法使用偏好模型定义偏好损失来训练奖励模型,然后训练优化所学奖励模型的策略,而 DPO 使用变量的变化来直接定义偏好损失作为策略的一个函数。鉴于人类对模型响应的偏好数据集,DPO 因此可以使用一个简单的二进制交叉熵目标来优化策略,而不需要明确地学习奖励函数或在训练期间从策略中采样。

DPO 的更新增加了首选 response 与非首选 response 的相对对数概率,但它包含了一个动态的、每个样本的重要性权重,以防止模型退化,研究者发现这种退化会发生在一个朴素概率比目标上。DPO 的损失函数为

其关于参数 θ 的梯度可以写成:

在实验中发现,在几乎没有超参数调整的情况下,DPO 的表现往往与带有 PPO 的 RLHF 等强大的基线一样好,甚至更好,同时在学习奖励函数下返回最佳的 N 个采样轨迹结果。

0 人点赞