论文阅读:Training language models to follow instructions with human feedback

Ouyang L, Wu J, Jiang X, et al. Training language models to follow instructions with human feedback[J]. Advances in neural information processing systems, 2022, 35: 27730-27744.

引言

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

为了解决上述问题,论文提出使用人类反馈强化学习(RLHF)来微调 GPT-3,使其能遵循广泛的书面指令,该方法分为三个步骤展开,其中监督学习部分使用标注者编写的 prompt 和演示数据微调 GPT-3 ;奖励模型构建部分收集模型输出的排名数据,训练一个奖励模型;强化学习部分使用 PPO 算法,根据奖励模型的反馈进一步微调模型。

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

方法与实验细节

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

其中,RM使用6B参数的模型,通过让标注者对 K 个(4到9个)响应进行排名来提高效率,一次性训练所有

\binom{K}{2}

个比较对,RL环境是一个“老虎机”(bandit)环境,给定 prompt 生成响应并获得奖励,为了防止模型过度优化奖励模型而偏离原始分布,在每个 token 上增加了 KL 散度惩罚,此外为了解决在公共 NLP 数据集上的性能退化问题,作者在 PPO 更新中混合了预训练梯度,由此得到的模型是PPO-ptx


本部分需要补充的内容:

1.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 yt的概率

P_{RL}(y_t | x, y_{<t})

,而后将完全相同的序列输入SFT模型中,计算“如果是我,生成这个token yt的概率是多少”,即

P_{SFT}(y_t | x, y_{<t})

,所以这里不存在长度不一致的问题,因而KL散度可以进行计算。

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

作者发现单纯使用 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的优化指标】


Read more

深度解析KBQA常用数据集:WebQSP与CWQ

深度解析KBQA常用数据集:WebQSP与CWQ 一、引言 知识图谱问答(KBQA)是自然语言处理领域的关键任务,其核心挑战在于将自然语言问题转换为可执行的逻辑形式(如SPARQL查询)并从知识图谱中获取答案。WebQSP和CWQ是当前KBQA研究中最具代表性的两个数据集,分别覆盖了从多跳到复杂组合性问题的全场景。本文将从数据形式、标注特点、核心挑战等维度对两者进行深度解析,并对比其在KBQA研究中的定位与价值。 二、WebQSP数据集:多跳推理的基石 2.1 数据集概况 * 全称:WebQuestionsSP(扩展自WebQuestions) * 来源:基于Freebase知识图谱构建,由Berant等人于2013年提出,后经扩展支持多跳推理。 * 规模:训练集约4,700条,测试集约2,000条。 * 问题类型:多跳关系推理(最多4跳),需结合实体、关系和约束条件。 2.2 数据形式详解(基于WebQSP-train实例深度解析) WebQSP的每条数据以JSON格式组织,包含从原始问题到逻辑形式、推理路径、答案的完整标注。以下结合WebQTrn-0实例(关于

前端安全问题深度剖析与防护策略

前端安全问题深度剖析与防护策略

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_ZEEKLOG博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》 文章目录 * * 摘要 * 一、引言 * 二、常见前端安全问题及原理 * 2.1 跨站脚本攻击(Cross-Site Scripting,XSS) * 2.2 跨站请求伪造(Cross-Site Request Forgery,CSRF) * 2.3 点击劫持(Clickjacking) * 2.4 不安全的依赖引入 * 2.5 敏感信息泄露

前端大数据导出优化:解决Chrome内存崩溃的实战方案

前端大数据导出优化:解决Chrome内存崩溃的实战方案

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? * 专栏导航: 码农阿豪系列专栏导航 面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️ Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻 Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡 全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀 目录 * 前端大数据导出优化:解决Chrome内存崩溃的实战方案 * 引言 * 问题分析 * 1. 为什么 Chrome 会崩溃,而 QQ 浏览器正常? * 2. 常见崩溃场景

前端科技新闻(WTN-4)你用了免费的 Trae 编辑器吗?排队多少名?我排在1584名

前端科技新闻(WTN-4)你用了免费的 Trae 编辑器吗?排队多少名?我排在1584名

写在前面,怎么说呢?首先是为了支持国产,用于偷懒写git摘要和部分内容的代码补充还是有些效率提升的,但是plan模式,基本上没怎么完成过。可能是项目不太标准的原因,要是做已经成熟的产品副本或许更简单- 突然有了个点子,找那些收费高卖的贵的,出青春版,或许有搞头。 也是首次,发现需要排队了,哈哈哈哈哈哈哈哈哈,让我想起某些游戏,付费插队 一、技术快讯|一次普通的 i18n 任务,却排到 1500 名之后 最近在使用 Trae 编辑器(免费版) 时,遇到了一件颇具“时代特色”的小插曲。 我只是想让 AI 帮忙做一个非常常规的工程任务: * 扫描页面组件 * 提取未国际化的中文文案 * 生成 key-value * 替换为统一的 $t('xxx') 调用 * 保证多语言资源文件结构一致 点击执行后,编辑器并没有立刻开始处理,而是弹出了一条提示: