大规模语言模型人类反馈对齐--RLHF

news/2024/5/19 0:31:57 标签: 大语言模型, 强化学习, RLHF

大规模语言模型在进行监督微调后, 模型具备了遵循指令和多轮对话的能力, 具备了初步与用户进行对话 的能力。然而, 大规模语言模由于庞大的参数量和训练语料, 其复杂性往往难以理解和预测。当这些模型被部署 时, 它们可能会产生严重的后果, 尤其是当模型变得日渐强大、应用更加广泛、并且频繁地与用户进行互动。因 此,研究者追求将人工智能与人类价值观进行对齐, 提出了大语言模型输出的结果应该满足帮助性 (Helpfulness)、 真实性 (Honesty) 以及无害性 (Harmless) 的 3H 原则。由于上述 3H 原则体现出了人类偏好, 因此基于人类反馈的 强化学习 (Reinforcement Learningfrom Human Feedback ,RLHF) 很自然的被引入到通用对话模型的训练流程中。

RLHF强化学习的元素和概念基本共享的, 而不同的是在 agent 和environment 之前, 出现了第三个可以 参与交互的对象: 人类, 并由其衍生了一系列步骤。实际上, RLHF 并不是突然出现的事物, 最早在 2017 年的 NIPS 就出现了这一思想, 如下图所示。

RLHF 的示意图

上图中主要针对是奖励函数设计的问题。奖励函数设计是强化学习中的一个难题。从本质上讲, 奖励函数 是对任务目标的一种抽象, 也是我们向 agent 传达任务目标的桥梁。当任务非常复杂时, 很难将目标转化为奖励 函数这种形式化、数字化的表征。这个文章提出的就是一种利用“人类偏好”进行 DRL 的方法, 即 agent 的目 标是通过向人类发出尽量少的偏好比较请求,生成人类喜欢的轨迹。

而在 2020 年的 NIPS 上, OpenAI 已经尝试将其用于文本摘要任务, 并 取得了很好的效果。下图中可见, RLHF 的步骤框架从 2020 年这篇工作开始,就基本确定了。这篇工作是 OpenAI 早于 ChatGPT 两年发表在 NeurIPS 2020,在这篇文章中 ChatGPT 的框架雏形已经显现。文章专注于英文摘要任务, 所用的方法和 ChatGPT 基本一致, 包括了 ChatGPT 的核心方法, RLHF。 在文本摘要任务重, 不采用极大化词的对数似然损失, 而是利用收集到的 human feedback 数据通过监督学习专 门训练一个打分模型来直接捕获人类的偏好,然后再使用这个模型通过强化学习来训练生成模型。

RLHF 的示意图

主干的初始模型采用 GPT-3 结构的模型, 选择了 1.3B 和 6.7B 两个参数量的模型上进行 Human Feedback 的 实验。模型对应的方法如下:

  • 第一步,对两个模型做 LM 的自回归预训练;

  • 第二步, 对模型在构建的摘要数据集上进行有监督的 fine-tune,得到监督模型。使用这些监督模型对初始 摘要进行抽样,以收集比较,初始化 policy 和奖励模型,并作为baseline。

  • 第三步, 在监督模型的基础上进行奖励模型(RM) 的训练, 是在其上增加一个输出标量的线性 head 得到 的。训练结束后将 reward 模型输出归一化,以便来自文章数据的参考摘要达到 0 的平均分。

  • 第四步, 利用强化学习训练。用于生成最后结果的模型(policy model) 是另一个 fine-tune 过的模型。通过将 奖励模型的输出作为使用 PPO 算法最大化的整个摘要的奖励,其中每个时间步骤都是一个 BPE token。只 有在整个摘要生成完之后才会有可用于监督信号的 reward,在一个个词往出蹦的时候是没有任何监督信号 的。作者在 Reward 中加入了一个 KL 散度的惩罚项, KL 可以作为一个熵奖励, entropy bonus,鼓励 policy 进行探索, 防止其坍塌到单一模式;而且, 可以确保 policy 不会学习产生与奖励模型在训练期间看到的结果有太大不同的输出。

通过 RLHF 训练的模型已经达到近似人类摘要的效果了, 而监督模型出现了很明显的事实不一致问题。标 注人员使用 7 点李克特量表在四个维度 (或“轴”) 评估摘要质量 (分别是, 覆盖度、准确度、流畅性、整体质量), 发现 HF 模型在四个维度上都领先, 且在覆盖度上尤其优秀。虽然提出的方法效果非常好, 但是作者在文末也承 认了这篇工作的方法资源消耗巨大, 达到了 320 GPU / 天和数千小时的人工标注时间。这个成本确实不是一般研 究团队所能承受的了的, 目前来看对于硬件, 人力成本和时间成本的消耗是其最大的局限性。但是其应用前景 非常广阔,给模型注入人类的偏好,让大模型更好地对齐人。ChatGPT 的巨大成功也证明了这一方法可行性。

ChatGPT 中的 RLHF 涉及多个模型和不同训练阶段,这里我们按三个步骤分解:

  • 预训练一个语言模型 (PLM) ;

  • 聚合问答数据并训练一个奖励模型 (Reward Model ,RM) ;

  • 强化学习 (RL) 方式微调 PLM。

预训练语言模型

首先, 我们使用经典的预训练目标训练一个语言模型, 如下图所示。对这一步的模型, OpenAI 在其第一个 流行的 RLHF 模型 InstructGPT 中使用了较小版本的 GPT-3; Anthropic 使用了 1000 万~520 亿参数的 Transformer 模型进行训练; DeepMind 使用了自家的 2800 亿参数模型 Gopher。

预训练语言模型的微调示例

其次,这里可以用额外的文本或者条件对这个 PLM 进行有监督的微调,例如 OpenAI 对“更可取”(preferable) 的人工生成文本进行了微调, 而 Anthropic 按“有用、诚实和无害”的标准在上下文线索上蒸馏了原始的 PLM。 这里或许使用了昂贵的增强数据, 但并不是 RLHF 必须的一步。由于 RLHF 还是一个尚待探索的领域, 对于”哪 种模型”适合作为 RLHF 的起点并没有明确的答案。

接下来, 我们会基于 PLM 来生成训练奖励模型 (RM,也叫偏好模型) 的数据, 并在这一步引入人类的偏好 信息。

训练奖励模型

奖励模型 RM 的训练是 RLHF 区别于旧范式的开端。这一模型接收一系列文本并返回一个标量奖励, 数值 上对应人的偏好。我们可以用端到端的方式用 PLM 建模, 或者用模块化的系统建模 (比如对输出进行排名, 再将 排名转换为奖励) 。这一奖励数值将对后续无缝接入现有的 RL 算法至关重要, 奖励模型的训练方式如下图所 示。

奖励模型的训练示例

关于模型选择方面, RM 可以是另一个经过微调的 PLM,也可以是根据偏好数据从头开始训练的 LM。例如Anthropic 提出了一种特殊的预训练方式, 即用偏好模型预训练 (Preference Model Pretraining ,PMP) 来替换一般 预训练后的微调过程。因为前者被认为对样本数据的利用率更高。但对于哪种 RM 更好尚无定论。

关于训练文本方面, RM 的提示-生成对文本是从预定义数据集中采样生成的, 并用初始的 PLM 给这些提 示生成文本。Anthropic 的数据主要是通过 Amazon Mechanical Turk 上的聊天工具生成的, 并在 Hub 上可用, 而 OpenAI 使用了用户提交给 GPT API 的prompt。

关于训练奖励数值方面, 这里需要人工对 PLM 生成的回答进行排名。起初我们可能会认为应该直接对文本 标注分数来训练 RM,但是由于标注者的价值观不同导致这些分数未经过校准并且充满噪音。通过排名可以比较 多个模型的输出并构建更好的规范数据集。

关于具体的排名方式, 一种成功的方式是对不同 PLM 在相同提示下的输出进行比较, 然后使用Elo 等级分 排序系统建立一个完整的排名。这些不同的排名结果将被归一化为用于训练的标量奖励值。

这个过程中一个有趣的产物是目前成功的 RLHF 系统使用了和生成模型具有不同大小的 PLM (例如 OpenAI 使用了 175B 的 PLM 和 6B 的 RM ,Anthropic 使用的 PLM 和 RM 从 10B 到 52B 大小不等, DeepMind 使用了 70B 的 Chinchilla 模型分别作为 PLM 和 RM) 。一种直觉是, 偏好模型和生成模型需要具有类似的能力来理解提 供给它们的文本。

强化学习微调

长期以来出于工程和算法原因, 人们认为用强化学习训练 PLM 是不可能的。而目前多个组织找到的可行 方案是使用策略梯度强化学习 (Policy Gradient RL) 算法、近端策略优化 (Proximal Policy Optimization ,PPO) 微 调初始 PLM 的部分或全部参数。因为微调整个 10B ~ 100B+ 参数的成本过高 (相关工作参考低秩适应 LoRA 和 DeepMind 的 Sparrow LM) 。PPO 算法已经存在了相对较长的时间, 有大量关于其原理的指南, 因而成为 RLHF 中的有利选择。

RLHF 的训练示例

事实证明,RLHF 的许多核心 RL 进步一直在弄清楚如何将熟悉的 RL 算法应用到更新如此大的模型,我们将 微调任务表述为 RL 问题。首先, 该策略 (policy) 是一个接受提示并返回一系列文本 (或文本的概率分布) 的 PLM。这个策略的行动空间 (action space) 是 PLM 的词表对应的所有词元 (一般在 50k 数量级) ,观察空间 (observation space) 是可能的输入词元序列, 也比较大。奖励函数是偏好模型和策略转变约束 (Policy shift constraint) 的结 合。

PPO 算法确定的奖励函数具体计算如下:将提示 x 输入初始 PLM 和当前微调的 PLM,分别得到了输出文本 y1, y2,将来自当前策略的文本传递给 RM 得到一个标量的奖励 rθ 。将两个模型的生成文本进行比较计算差异 的惩罚项, 在来自 OpenAI、Anthropic 和 DeepMind 的多篇论文中设计为输出词分布序列之间的 Kullback–Leibler(KL) divergence 散度的缩放, 即 r = rθ λrKL。这一项被用于惩罚 RL 策略在每个训练批次中生成大幅偏离初始 模型, 以确保模型输出合理连贯的文本。如果去掉这一惩罚项可能导致模型在优化中生成乱码文本来愚弄奖励 模型提供高奖励值。此外, OpenAI 在 InstructGPT 上实验了在 PPO 添加新的预训练梯度, 可以预见到奖励函数的公式会随着 RLHF 研究的进展而继续进化。

最后根据 PPO 算法, 我们按当前批次数据的奖励指标进行优化 (来自PPO 算法 on-policy 的特性) 。PPO 算 法是一种信赖域优化 (Trust Region Optimization,TRO) 算法, 它使用梯度约束确保更新步骤不会破坏学习过程的 稳定性。 DeepMind 对 Gopher 使用了类似的奖励设置, 但是使用 A2C (synchronous advantage actor-critic) 算法来 优化梯度。

RLHF 的作用

从人类反馈中强化学习代表了语言模型领域的重大进步,为利用其强大的功能提供了更加用户友好的界面。 RLHF 微调对“纯”基础 LLM 的实际影响是什么呢?

一种思考方式如下。基础模型经过训练以近似互联网文本的分布, 具有一种混沌的性质, 因为它模拟了整 个互联网的文本价值, 包括极其有价值和不受欢迎的内容。假设我们有一个理想的基础模型, 在这个阶段, 它 能够完美地复制这种高度多模态的互联网文本分布。也就是说,它已经成功地完成了一个完美的分布匹配任务。 尽管如此, 在推论中, 这样一个理想的模型可能会在分布的数百万种模式中选择的方式表现出一种不稳定的形 式(相对于输入提示),这些模式共同代表了不同音调、来源和存在于其海量训练数据中的声音, 具有三种模式 或“峰值”的多峰分布,基础模型被训练来近似互联网文本数据的分布。

三种模式或“峰值”的文本数据多峰分布示例

此时, 根据输入提示预测模型输出的质量可能具有挑战性, 因为模型可能会根据它决定模拟的源生成截然 不同的响应。例如用户提交关于一位著名政治人物的查询的场景。该模型可以产生模仿中性、内容丰富的维基 百科文章语气的输出(可以说, 它选择了分布中的百科全书模式)。相反, 根据问题的措辞, 模型可能会受到互 联网上激进观点的启发而采用更极端的观点。想象基本模型在其数值估计中仅预测轻微差异以在分布中的两种不同模式之间选择一种的情况是完全不现实的。选择哪种模式? 将此完全留给模型的随机决策性质可能不是最 理想的解决方案。

RLHF 通过基于人类偏好数据微调模型解决了这个问题, 这种方式提供了更加可控和可靠的用户体验。通 过在微调阶段将语言模型视为强化学习策略, RLHF 在分布中引入了偏差。在操作上, 我们可以将这种效果解释 为模式搜索行为的引入, 该行为通过分布引导模型并导致具有更高回报的输出(根据学习到的人类偏好建模), 从而有效缩小生成内容的潜在范围。当然, 这种偏差直接反映了实际选择的人的偏好和价值观, 这些人对用于 训练奖励模型的偏好数据集做出了贡献。例如, 在 ChatGPT 的情况下, 这种偏见在很大程度上倾向于提供有用、 真实和安全的答案,或者至少倾向于注释者对这些值的解释。

虽然 RLHF 提高了模型答案的一致性, 但它不可避免地以其生成能力的多样性为代价。根据预期的用例, 这种权衡既可以被视为好处也可以被视为限制。例如, 在搜索引擎等 LLM 应用中, 准确可靠的响应至关重要, RLHF 是一种理想的解决方案。另一方面, 当将语言模型用于创造性目的时, 例如产生新颖的想法或协助写作, 输出多样性的减少可能会阻碍对新的和有趣的概念的探索。

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 的理解,更进一步提升系统的表现。

ps: 欢迎扫码关注公众号^_^.


http://www.niftyadmin.cn/n/5094947.html

相关文章

lwip无法连接指定个数TCP连接问题

如题,一次测试中发现,lwip的TCP连接控制块明明设置为26,设备作为服务器,电脑作为客户端去连接,但当连接19个之后发现再连接TCP时,机器自动发送RST数据包,通过追踪发现是因为资源分配不足&#x…

GitLab(1)——GitLab安装

目录 一、使用设备 二、使用rpm包安装 Gitlab国内清华源下载地址: ①下载命令如下: ②安装命令如下: ③删除rpm包 ④配置 ⑤重载 ⑥重启 ⑦配置自启动 ⑧打开8989端口并重启防火墙 三、GitLab登录 ①访问GitLab的URL ②输入用户…

​VsCode修改侧边栏字体大小——用缩放的方法​

缩放界面字体百分比(包括编辑器界面) 如果只修改文本编辑区的字体大小,可以在File -> Preferences -> Settings 中修改font的大小。但是侧边栏的字体不会改变,所以可以使用缩放的方法先修改整个界面的字体大小,…

学习嵌入式系统的推荐步骤:

学习嵌入式系统的推荐步骤: 00001. C语言:作为基础中的基础,选择一本常用的C语言教材,并注意通过实践编写习题、编译运行代码来加深理解。动手实践是非常重要的。 00002. 00003. 微机原理与接口技术:这本教材将…

Apipost一键压测已支持导入CSV文件

最近更新中Apipost对UI页面进行了一些调整,另外一键压测功能支持参数化!本篇文章将详细介绍这些改动! API调试页面的细节改动 在请求区填入请求参数或脚本时会有相应的标识 如在Query中填入多个参数时上方会展示数量 在预、后执行脚本中写…

docker基础认知(镜像+容器+仓库+客户端与服务器)

镜像(Image) 静态文件,提供了容器运行时所需的程序、库、资源、配置等文件,另外包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。(相比文件的说法,文件系统的说…

Java String之正则表达式

Java String之正则表达式 导言 最近做项目时,遇到了限制输入字符格式的问题,采用了Java String的正则表达式,下面针对正则表达式使用进行概述 正则表达式 正则表达式类似可以通俗的理解为字符模板,通过符号的方式进行表述&…

函数指针解释

函数指针是一种特殊类型的指针,它指向程序中的函数而不是数据。函数指针可以让你在运行时动态地选择调用哪个函数,这在某些编程情景中非常有用,例如回调函数、动态函数调用和函数表驱动的编程。以下是关于函数指针的一些基本概念和用法&#…