跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

论文解读:使用人类反馈训练语言模型

解读了 Ouyang 等人发表的《Training language models to follow instructions with human feedback》论文。针对大模型规模增大但无法遵循用户意图的问题,提出了基于人类反馈强化学习(RLHF)的微调方法。该方法包含监督微调(SFT)、奖励模型(RM)训练和强化学习(RL)三个步骤。为解决性能衰退和对齐税问题,引入了 KL 散度惩罚以防止过拟合,并混合预训练梯度(PPO-ptx)。实验表明,该方法能有效提升模型在有用性、诚实性和无害性方面的表现,并具备良好的泛化能力。

人间过客发布于 2026/4/5更新于 2026/10/23107 浏览

论文解读:Training Language Models to Follow Instructions with Human Feedback

引言

当前大型语言模型(LMs)存在一个核心问题:模型规模变大并不意味着它们能更好地遵循用户的意图。具体而言,大型模型经常生成不真实、有毒或对用户毫无帮助的输出,这是因为语言模型的训练目标(预测网页上的下一个 token)与用户希望的目标('有用且安全地遵循指令')是错位的。作者的目标是让模型在**'有用性'(Helpful)、'诚实性'(Honest)和'无害性'(Harmless)**这三个方面与用户意图对齐。

为了解决上述问题,论文提出使用人类反馈强化学习(RLHF)来微调 GPT-3,使其能遵循广泛的书面指令。该方法分为三个步骤展开:

  1. 监督学习(SFT):使用标注者编写的 prompt 和演示数据微调 GPT-3。
  2. 奖励模型构建(RM):收集模型输出的排名数据,训练一个奖励模型。
  3. 强化学习(RL):使用 PPO 算法,根据奖励模型的反馈进一步微调模型。

在 RLHF 过程中,模型在公共 NLP 数据集上的性能可能会下降。作者发现通过将 PPO 更新与预训练分布的对数似然更新混合(即 PPO-ptx 模型),可以大大减少这种性能衰退。经过 RLHF 的模型不仅符合训练它的标注者的偏好,也能很好地泛化到未参与训练数据的'保留(held-out)'标注者的偏好上,此外能够将'遵循指令'的能力泛化到其微调数据中很少见的任务上,例如非英语语言和代码相关的任务。

![图:RLHF 流程示意图]

方法与实验细节

从预训练语言模型,通过三个步骤使其与用户意图对齐:

  1. 监督微调(SFT):收集由人类标注者针对输入的 prompt 提供期望的输出行为,而后使用这些数据对预训练的 GPT-3 模型进行监督学习微调。
  2. 训练奖励模型(RM):收集比较数据。对于同一个 prompt,模型生成多个输出,由人类标注者根据优劣进行排名,利用这些排名数据训练一个奖励模型,该模型的目标是预测人类更偏好哪个输出。
  3. 强化学习(RL):使用 PPO 算法针对奖励模型优化策略,奖励模型的输出作为标量奖励,指导 SFT 模型进行微调,使其生成的输出能获得更高的奖励。

其中,RM 使用 6B 参数的模型,通过让标注者对 K 个(4 到 9 个)响应进行排名来提高效率,一次性训练所有 $\binom{K}{2}$ 个比较对。RL 环境是一个'老虎机'(bandit)环境,给定 prompt 生成响应并获得奖励。为了防止模型过度优化奖励模型而偏离原始分布,在每个 token 上增加了 KL 散度惩罚。此外为了解决在公共 NLP 数据集上的性能退化问题,作者在 PPO 更新中混合了预训练梯度,由此得到的模型是 PPO-ptx。

KL 散度

KL 散度(也称为相对熵)是衡量两个概率分布之间差异的一种非对称度量。它量化了当使用分布 Q 来近似真实分布 P 时所损失的信息量。对于离散概率分布 P 和 Q,其公式为:

$$D_{KL}(P || Q) = \sum_{x} P(x) \log \left( \frac{P(x)}{Q(x)} \right)$$

在 Instruct GPT 中,KL 散度的添加是为了防止强化学习模型在优化奖励模型时过拟合。具体而言,在强化学习的每一步,模型生成的最终奖励 $R(x,y)$ 不仅仅是奖励模型给出的分数 $r_\theta(x, y)$,还减去了一个 KL 惩罚项:

$$R(x, y) = r_\theta(x, y) - \beta \log \left( \frac{\pi^{RL}(y|x)}{\pi^{SFT}(y|x)} \right)$$

其中带有 RL/SFT 上标的分别为当前正在训练的强化学习模型的输出概率和原始监督微调模型的输出概率。

注意,这里是 RL 模型根据提示词生成一个完整的回复序列,而后计算自己生成每个 token $y_t$ 的概率 $P_{RL}(y_t | x, y_{<t})$,而后将完全相同的序列输入 SFT 模型中,计算'如果是我,生成这个 token $y_t$ 的概率是多少',即 $P_{SFT}(y_t | x, y_{<t})$,所以这里不存在长度不一致的问题,因而 KL 散度可以进行计算。

如何在更新中混合预训练梯度

作者发现单纯使用 RLHF(即只优化人类偏好奖励)会导致模型在公共 NLP 数据集(如问答、阅读理解等)上的性能下降,这种现象被称为'对齐税'。因此作者在在进行 PPO 梯度更新的同时,混合了预训练梯度的更新,训练的目标函数变成了一个组合目标:既要最大化人类偏好奖励(PPO 目标),又要最大化预训练数据分布的对数似然。总的优化目标函数可以表示为:

$$\text{Objective} = \text{Objective}{PPO} + \gamma \cdot \mathbb{E}{x \sim D_{pretrain}} [\log \pi(x)]$$

其中 $\text{Objective}{PPO}$ 是包含 KL 惩罚的标准的强化学习目标,$\gamma \cdot \mathbb{E}{x \sim D_{pretrain}} [\log \pi(x)]$ 这是预训练损失项,$D_{pretrain}$ 是原始的预训练数据集。【这里说人话就是在训练 PPO 的同时,随机抽取一些原始的预训练文本让模型填空(相当于重复预训练过程),并将这部分的损失纳入 PPO 的优化指标】

目录

  1. 论文解读:Training Language Models to Follow Instructions with Human Feedback
  2. 引言
  3. 方法与实验细节
  4. KL 散度
  5. 如何在更新中混合预训练梯度

更多推荐文章

查看全部
  • Java 代码打包成 EXE 文件教程
  • 前端 TypeScript 高级技巧:提升代码安全性
  • 前端权限管理实现方案与最佳实践
  • 深度学习模型优化策略与实战调参
  • VSCode Copilot 集成 DeepSeek 模型配置指南
  • AI + 鸿蒙游戏:会是下一个爆点吗?
  • Chrome 开发者工具(DevTools)快速入门
  • AI 辅助 Java 入门:从环境搭建到核心语法实战
  • CCF-GESP 2025 年 9 月 C++ 一级真题解析
  • 位运算算法专题:判断字符唯一、丢失数字与两数之和等
  • Agent AI 探索多模态交互前沿领域(一)
  • 集成 Linly-Talker 实现智能客服数字人
  • HarmonyOS 应用安全开发:权限控制与隐私合规上架
  • C++ Primer 第五版第二章学习笔记
  • DeepSeek 系列版本演进:从 V1 到 R1 的核心差异与选型指南
  • Python 调用高德地图 MCP 服务查询天气实战
  • 信创国产化开发为何推荐使用 Java 语言
  • YOLOv8n 机器人场景目标检测实战:环境搭建与数据处理
  • EasyConnect 跨平台安装与首次连接配置指南
  • 基于 vLLM+Open-WebUI 部署 Qwen3-Embedding-4B 实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online