大模型RLHF算法更新换代,DeepMind提出自训练离线强化学习框架ReST

文章链接: https://arxiv.org/abs/2308.08998

大模型(LLMs)爆火的背后,离不开多种不同基础算法技术的支撑,例如基础语言架构Transformer、自回归语言建模、提示学习和指示学习等等。这些技术造就了像GPT-3、PaLM等基座生成模型,在这些基座模型之上,研究人员通过引入人类反馈的强化学习算法(RLHF)开发出了例如ChatGPT这些与人类偏好保持一致的可聊天模型,才将LLMs真正带领到公众视野中。RLHF由于自身在线更新的限制带来了较大的训练计算代价,且容易遭到”外部攻击“

为了解决上述问题,来自Google DeepMind的研究团队提出了一种全新的强化自训练算法(Reinforced Self-Training,ReST),ReST相比RLHF,可以以更高的效率使LLMs的输出与人类偏好保持一致。ReST的设计灵感来源于他们将语言模型的对齐问题视为一个不断增长的批量强化学习问题,因此本文作者首先从一个初始LLMs策略出发,并根据该策略生成一个离线数据集,然后使用离线RL算法使用这些样本反过来更新LLMs策略。作者重点在基础NLP任务中的机器翻译任务上对ReST算法的性能进行了评估,实验结果表明,ReST相比RLHF可以更明显的提高模型的翻译质量。

01. 引言

如何将LLMs的输出与人类偏好或价值观进行高效的对齐,是目前提升LLMs性能的关键问题,如果没有进行适当的对齐处理,LLMs可能会产生风险高或完全错误的内容,这对于下游应用程序具有毁灭性的影响。目前常用的RLHF方法通常使用人类反馈的标注数据来学习一个奖励模型,然后将其用于强化学习目标来对LLM进行微调对齐。但是RLHF通常依赖于在线RL方法,例如PPO[1]和A2C[2],这就需要在模型训练过程中多次使用奖励模型来从更新后的策略中采样新样本,这会带来高昂的计算代价。为了解决这一问题,本文提出了一个自训练强化学习算法ReST,ReST将人类标注员从反馈训练循环中丢弃,自行生成并使用离线数据进行反馈训练。作者巧妙地设计了一个内外循环机制,如下图所示。

其中外循环称为Grow循环,模型会根据当前的策略来采样生成一个对齐数据集,内循环称为Improve循环,模型会对外循环生成的数据集进行过滤(使用人类偏好评分函数对样本进行排序过滤),并将过滤后的数据继续用于微调优化策略,内外循环相互影响,以降低采样数据带来的训练成本。ReST不再依赖在线的RL损失,因而成为了一种通用的强化学习框架,允许在执行Improve循环时使用不同的离线RL损失,使整体框架更具灵活性。

02. 本文方法

2.1 ReST的整体流程

2.2 Grow外循环

2.2 Improve内循环

03. 实验效果

本文的实验主要在机器翻译基准上进行,作者选取了IWSLT 2014、WMT 2020和Web Domain三个数据集,其中前两者为常见的机器翻译数据集,后者为内部测试数据集,这些数据集都包含一组语言文本和对应人类标注员给出的真实参考翻译。作者选取了几种不同的离线强化学习算法作为baseline对比方法,包括OAC、BVM、PO、GOLD和BC。

3.1 对Improve循环进行分析

作者首先分析了ReST的两个循环步骤对最终性能的影响,例如增加Improve循环的次数是否会增加奖励模型的分数,如下图所示,灰色柱状为监督学习baseline的分数,通过调整损失函数类型、Improve steps(I)和Grow steps(G)来构成不同的ReST变体,其分数为紫色柱状所示

可以看到,随着Improve steps数量的不断增加,ReST在所有三个数据集上的平均奖励分数都得到了提高

3.2 对Grow循环进行分析

Grow步骤可以不断增加离线训练的样本数量,因此作者对比了执行单次Grow步骤和执行两次Grow步骤后的模型性能,如下图所示,执行两次Grow步骤的ReST变体在IWSLT 2014和Web Domain数据集上都有明显的提升

3.3 对损失函数进行分析

在下图中作者展示了本文方法与监督训练模型,以及使用不同损失函数的ReST变体的平均奖励分数对比,可以观察到,即使只使用单次Grow步骤,ReST的不同变体(紫色)也显着优于监督学习模型(灰色)得到的奖励分数

此外,我们也可以观察到,BC损失在单次Grow步骤的情况下,明显优于使用其他损失函数的效果

3.4 ReST与在线RL算法进行对比

作者选取PPO算法作为对比在线RL算法,PPO广泛用于各式RLHF流程中。在实验中,PPO算法可以通过单次Grow步骤访问与ReST算法相当数量的训练数据,对比结果如下表所示。

可以看到,在线PPO算法的平均奖励分数基本与ReST算法持平,但是这只是在单次Grow步骤的情况下,当ReST使用多步Grow和Improve后(并且参与训练的数据量相同),性能会得到显著的提升

04. 总结

本文提出了一种名为ReST的自训练离线强化学习算法,其中包含了一种新型的内外循环机制(分为Grow外循环和Improve内循环)来高效的调度RL过程中的策略生成和更新。同时其具有良好的拓展性,可以灵活的应用在多种不同的RL损失中,本文作者在机器翻译基准上的实验表明,使用常用的BC损失可以使ReST在多种不同的环境中得到更高的奖励分数。ReST的提出也向社区宣布,在对LLMs执行与人类偏好对齐时,可以尝试除PPO等在线RL算法之外的更多RL优化手段。

参考

[1] J. Schulman, F. Wolski, P. Dhariwal, A. Radford, and O. Klimov. Proximal policy optimization algorithms. arXiv preprint arXiv:1707.06347, 2017.

[2] V. Mnih, A. P. Badia, M. Mirza, A. Graves, T. Harley, T. P. Lillicrap, D. Silver, and K. Kavukcuoglu. Asynchronous methods for deep reinforcement learning. In International Conference on Learning Representations, 2016.

作者:seven_


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/147825.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代谢组学最常用到的数据分析方法(五)

代谢组学是一门对某一生物或细胞所有低分子质量代谢产物&#xff08;以相对分子质量<1000的有机和无机的代谢物为研究核心区&#xff09;进行分析的新兴学科。因此从复杂的代谢组学数据中确定与所研究的现象有关的代谢物&#xff0c;筛选出候选生物标记物成为代谢物组学研究…

集合-Map系列

系列文章目录 1.集合-Collection-CSDN博客​​​​​​ 2.集合-List集合-CSDN博客 3.集合-ArrayList源码分析(面试)_喜欢吃animal milk的博客-CSDN博客 4.数据结构-哈希表_喜欢吃animal milk的博客-CSDN博客 5.集合-set系列集合-CSDN博客 6.集合-Map系列-CSDN博客 文章目…

极大似然估计概念的理解——统计学习方法

目录 1.最大似然估计的概念的理解1 2.最大似然估计的概念的理解2 3.最大似然估计的概念的理解3 4.例子 1.最大似然估计的概念的理解1 最大似然估计是一种概率论在统计学上的概念&#xff0c;是参数估计的一种方法。给定观测数据来评估模型参数。也就是模型已知&#xff0c;参…

腾讯云南京服务器性能如何?南京服务器测速IP地址

腾讯云服务器南京地域怎么样&#xff1f;南京地域很不错&#xff0c;正好处于中间的位置&#xff0c;南方北方用户均可以选择&#xff0c;网络延迟更低速度更快&#xff0c;并且目前南京地域有活动&#xff0c;南京地域可用区可选南京一区、南京二区和南京三区&#xff0c;腾讯…

word已排序好的参考文献,插入新的参考文献,序号更新

原排序好的文献序号。 现在在3号后面插入一个新文献。4&#xff0c;5号应该成为5&#xff0c;6 这时在3号后面&#xff0c;回车&#xff0c;就会自动的增长。如下图&#xff1a; 但是如果手滑&#xff0c;把[4]删除了如何排序&#xff1f;&#xff1f; 如下图&#xff1a; …

机器学习笔记 - 深入研究spaCy库及其使用技巧

一、简述 spaCy 是一个用于 Python 中高级自然语言处理的开源库。它专为生产用途而设计,这意味着它不仅功能强大,而且快速高效。spaCy 在学术界和工业界广泛用于各种 NLP 任务,例如标记化、词性标注、命名实体识别等。 安装,这里使用阿里的源。 pip install spacy…

spring的面向切面编程

如果您觉得本博客的内容对您有所帮助或启发&#xff0c;请关注我的博客&#xff0c;以便第一时间获取最新技术文章和教程。同时&#xff0c;也欢迎您在评论区留言&#xff0c;分享想法和建议。谢谢支持&#xff01; 一、介绍什么是面向切面编程&#xff08;AOP&#xff09; 1.…

uni-app:实现页面效果3

效果 代码 <template><view><!-- 风速风向检测器--><view class"content_position"><view class"content"><view class"SN"><view class"SN_title">设备1</view><view class&quo…

嵌入式软件架构基础设施设计方法

大家好&#xff0c;今天分享一篇嵌入式软件架构设计相关的文章。 软件架构这东西&#xff0c;众说纷纭&#xff0c;各有观点。在我看来&#xff0c;软件架构是软件系统的基本结构&#xff0c;包含其组件、组件之间的关系、组件设计与演进的规则&#xff0c;以及体现这些规则的基…

【AI视野·今日CV 计算机视觉论文速览 第259期】Tue, 3 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Tue, 3 Oct 2023 (showing first 100 of 167 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers GPT-Driver: Learning to Drive with GPT Authors Jiageng Mao, Yuxi Qian, Hang Zha…

Spring Controller内存马

获取当前上下文运行环境 getCurrentWebApplicationContext WebApplicationContext context ContextLoader.getCurrentWebApplicationContext(); 在SpringMVC环境下获取到的是一个XmlWebApplicationContext类型的Root WebApplicationContext&#xff1a; 在Spring MVC环境中…

css自学框架之选项卡

这一节我们学习切换选项卡&#xff0c;两种切换方式&#xff0c;一种是单击切换选项&#xff0c;一种是鼠标滑动切换&#xff0c;通过参数来控制&#xff0c;切换方法。 一、参数 属性默认值描述tabBar.myth-tab-header span鼠标触发区域tabCon.myth-tab-content主体区域cla…

亿发连锁商超新零售解决方案提供商,提供定制新零售管理系统

时代的发展带动了经济环境的变化&#xff0c;为迎合市场经济的发展需求&#xff0c;数字化收银逐渐融入到大中生活中&#xff0c;中小型商铺都倾向于使用智慧收银系统取代传统收银模式。新零售系统成为了商家在竞争激烈的市场中立足的关键。但随之也带来了数不尽的竞争压力&…

十天学完基础数据结构-第二天(数据结构简介)

什么是数据结构&#xff1f; 在计算机科学中&#xff0c;数据结构是一种组织和存储数据的方式。它定义了数据的布局&#xff0c;以及对这些数据执行的操作。你可以把数据结构看作是计算机内存中的特定组织方式&#xff0c;就像图书馆中书籍的排列一样。 数据结构可以是各种形…

项目进展(六)-继续学习32位ADC芯片ADS1285

一、数据手册学习 1.1时序图 SPI时序图&#xff0c;这是很重要的一个地方&#xff0c;一定要在代码中将SPI配置成对应的模式。 先放一堆截图在这吧&#xff0c;一些引脚的功能及特性还未看到&#xff0c;等具体了解之后再详细介绍下面几张截图的时序&#xff1a; 1.2 内…

智能合约漏洞,Dyna 事件分析

智能合约漏洞&#xff0c;Dyna 事件分析 1. 漏洞简介 https://twitter.com/BlockSecTeam/status/1628319536117153794 https://twitter.com/BeosinAlert/status/1628301635834486784 2. 相关地址或交易 攻击交易 1&#xff1a; https://bscscan.com/tx/0x7fa89d869fd1b89e…

Flutter项目安装到Android手机一直显示在assembledebug

问题 Flutter项目安装到Android手机一直显示在assembledebug 原因 网络不好&#xff0c;gradle依赖下载不下来 解决方案 修改如下的文件 gradle-wrapper.properties 使用腾讯提供的gradle镜像下载 distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-7.5…

嵌入式Linux应用开发-驱动大全-同步与互斥③

嵌入式Linux应用开发-驱动大全-同步与互斥③ 第一章 同步与互斥③1.4 Linux锁的介绍与使用1.4.1 锁的类型1.4.1.1 自旋锁1.4.1.2 睡眠锁 1.4.2 锁的内核函数1.4.2.1 自旋锁1.4.2.2 信号量1.4.2.3 互斥量1.4.2.4 semaphore和 mutex的区别 1.4.3 何时用何种锁1.4.4 内核抢占(pree…

JavaScript系列从入门到精通系列第十四篇:JavaScript中函数的简介以及函数的声明方式以及函数的调用

文章目录 一&#xff1a;函数的简介 1&#xff1a;概念和简介 2&#xff1a;创建一个函数对象 3&#xff1a;调用函数对象 4&#xff1a;函数对象的普通功能 5&#xff1a;使用函数声明来创建一个函数对象 6&#xff1a;使用函数声明创建一个匿名函数 一&#xff1a;函…

嵌入式Linux应用开发-驱动大全-同步与互斥①

嵌入式Linux应用开发-驱动大全-同步与互斥① 第一章 同步与互斥①1.1 内联汇编1.1.1 C语言实现加法1.1.2 使用汇编函数实现加法1.1.3 内联汇编语法1.1.4 编写内联汇编实现加法1.1.5 earlyclobber的例子 1.2 同步与互斥的失败例子1.2.1 失败例子11.2.2 失败例子21.2.3 失败例子3…