为什么ChatGPT用强化学习而非监督学习?

ed0b1618cb0180a6a23fe0cde5330ebc.png

为什么ChatGPT非得用强化学习,而不直接用监督学习?原因不是那么显而易见。在上周发布的《John Schulman:通往TruthGPT之路》一文中,OpenAI联合创始人、ChatGPT主要负责人John Schulman分享了OpenAI在人类反馈的强化学习(RLHF)方面的进展,分析了监督学习和强化学习各自存在的挑战。

基于Schulman的演讲内容,以色列巴伊兰大学教授Yoav Goldberg对强化学习在大型语言模型应用必要性作了深度解读,进一步对比论证了监督学习与强化学习的特点,并为未来改进提供了思路。

Goldberg在2011年获得本古里安大学博士学位,他也是艾伦人工智能研究所以色列分部的研究主管,他也曾在Google(纽约)研究院担任研究科学家。他在NLP领域深耕十多年,在词汇语义学、句法分析及对基于深度学习的语言处理等领域作出了突出贡献。


(以下内容由OneFlow编译发布,转载请联系OneFlow获得授权。来源:https://gist.github.com/yoavg/6bff0fecd65950898eba1bb321cfbd81)

作者|Yoav Goldberg

OneFlow编译

翻译|贾川、徐佳渝、杨婷

1
为何使用强化学习?

随着ChatGPT等大型语言模型的发布,人们对“RLHF训练(即基于人类反馈的强化学习训练)”的重要性进行了诸多讨论。在训练语言模型方面,我一度困惑于为什么强化学习比从演示中学习(也称为监督学习)更好,难道从演示中学习(或根据语言模型术语中的“指令微调”,学习模仿人类写的回答)还不够?

我提出了一个有说服力的理论论据。不过我意识到还有另一个论点,它不仅支持强化学习训练,而且尤其适用于ChatGPT等模型。OpenAI的John Schulman在其演讲的前半部分进行了详细论述。本文的大部分内容都引用了John的论点,但增加了一些他没有明确表述的内容(不过我确信这些内容都是John考虑过的)。

本文提供了大量背景知识,以确保读者可以更好地理解文章内容。如果你想了解文章重点,可以直接看“核心论证”部分。

2
背景:监督学习vs强化学习

简要地解释一下这两种学习场景,以便我们能够达成共识。如果你已经了解了这些内容,可以跳过此部分。

预训练:在这两种设置中,首先我们假设语言模型在大量的文本上进行预训练,以预测下一个token。因此,对于每个词序列,我们有一个模型可对潜在的下一个词的选项分配概率。通过这种方式,模型会获得语言的某种内部表示。

经过这一过程,模型的生成文本能力会变强,且能够根据给定文本前缀,生成符合自然习惯的后续文本,但它并不擅长“交流”。例如,当提示(prompted)一个问题时,模型可能会回答该问题或者生成一系列附加问题,也可能会回答这是一个在......的上下文中提出的重要问题等等。

这些都是遵循自然语言文本问题的有效延续(continuation)。我们可以通过编写输入文本,来使模型执行我们所希望的语言行为,该延续会解决我们的问题(也被称之为“提示工程”),但是对于只想提出问题或指令就让模型进行回答的非专家用户来说,这种交互模式并不非常方便。

如果我们希望模型能够持续回答查询而不是仅仅完成当前指令,就需要对其进行引导,这个过程称之为“微调”,即继续训练预训练模型,进而使其表现出我们想要的行为(有些人称这是“对齐”模型与使用者期望行为)。

监督训练:在监督学习中(也称为从演示中学习或“指令微调”),我们会收集一组人类编写的文本,这些文本以问题或指令的形式出现,并包含了期望的输出。例如,这些文本可以是某一问题和答案,或者是像带有人类编写总结的summarize the following text {text}这样的任务。

通过在相同的“给定前缀预测下一个token”的目标上继续训练模型,但这次是在指令-输出对集合上,模型学会通过执行指令来响应。即模型接收到给定问题的正确输出的演示,并学会复制输出结果。我们希望通过这种方式将其泛化到训练中尚未出现的问题中去。

强化学习(RL):在强化学习中,我们为模型提供指令,但并不提供人工编写的答案。模型需要自己生成答案。评分机制(例如人类)会读取生成的答案,并告诉模型这些答案的质量。模型的目标是如何回答以获得高分。

另一种机制是模型生成多个答案,评分机制告诉模型哪个答案最好。模型的目标是学习生成高分的答案,而不是低分的答案。在这两种情况下,模型通过生成答案并接收反馈来学习。(注意:许多研究人员将强化学习的范围限定在基于credit分配机制的某些技术层面。于他们而言,“我们是否需要强化学习”的问题也许归结为我们应该使用该技术还是采取其他相关技术来替代。我与他们同样好奇,但就本文目的而言,我认为任何使用外部评分函数的方法均可视为强化学习,无论其运行机制如何。)

强化学习比监督训练难得多,原因如下:首先是“credit分配”问题。语言模型生成一段token序列,且仅在序列末尾才能获得一个分数。由于信号很弱,我们不能确定答案哪些部分是良好的,哪些部分是糟糕的。许多有关强化学习的相关技术研究都在尝试解决该问题,但在本文中我们先不谈这个问题。

credit分配问题是一个活跃的研究领域,但已经存在合理的解决方案。其次,我们需要一种评分机制来对答案进行评分(或为答案评分或比较两个答案),而在基于语言的任务中,很难生成自动评分机制(尽管这可能正在改变,下文会简单论述)。

因此,我们会在强化学习的每一步留下“人类反馈”,但这种方式成本高昂且效率低下,考虑到每个人类反馈只能给出一个相当稀疏的信号,问题会更加糟糕。基于以上困难,我们为什么还要使用强化学习呢?为什么不仅仅选择监督学习呢?

3
多样性论证

对于语言生成模型来说,监督学习/指令调优最大的问题是它们只能复制演示者给出的确切答案,但实际上,人类语言可以用多种方式传递相同的信息,它们都是切实可行的。如果因模型轻微偏离人类规定的文本而受到“惩罚”,可能会使模型产生困惑。

我们当然可以继续逼迫模型去学习更难学习的遣词造句,尽管模型已经学会了生成具有同样意思、合法的替代性回答。因此,我们非常看好强化学习训练提供的多样性表达。考虑到监督学习在实践中的良好应用,以及训练强化学习模型所面临的挑战,这是一个非常直观的论点,但不够有说服力。一直以来,我并不认为这是一个足够核心的问题,现在我仍这样想。

4
理论论证

监督学习只允许正反馈(我们向模型展示一系列问题及其正确答案),而RL允许负反馈(模型被允许生成答案并得到反馈说“这答案是不正确的”),这是我提出的第一个关于LLM领域的监督学习vs强化学习的强有力论点。

从严格的学习理论的角度来看,两者之间有很大的区别:相比正反馈,负反馈要强大得多。从理论论证的角度,当模型只从演示中学习时,对抗型(或粗心的)演示者(demonstrator)可以隐瞒重要例子,从而误导学习者(learner)学习错误的假设。

演示者控制着整个学习过程,但如果学习者能够形成自己的假设,并询问老师(teacher)假设是否正确(例如强化学习设置),通过这种方式,即使是对抗性老师也无法再欺骗学习者学习错误假设,它必须如实告知这一假设是错误的,这种方式赋予了学习者主动性,让学习者更加强大。(当然,前提是对抗型或粗心的老师仍然遵守规则,始终提供真实答案。这是理论框架中的合理假设,这一假设并不影响我们的主体观点:从互动或提问中学习比从演示中学习更加强大)。

这是我们选择强化学习的部分原因,但就通过提问训练大型语言模型交流方面,还有一个更加重要的额外论点。

5
核心论证

以下是我们需要强化学习或类似技术的核心原因。前两个论点依赖于假设,例如"模型可能更难学习"或"粗心的演示者可能会混淆模型",这些假设在实践中是否成立是未知的,

相反,下面的论点可以被证明是成立的。

语言模型(至少)有三种交互模式:(a)文本型(text-grounded): 为模型提供文本和说明(“总结此文本”,“基于此文本,以色列的人口是多少”,“本文中提到的化学名称是什么”,“将此文本翻译成西班牙语”等),让模型基于我们提供的文本生成答案;(b)求知型(knowledge-seeking): 向模型提供问题或指导,让模型根据内在知识(“流感的常见原因是什么”)提供(真实)回答。(c)创造型(creative): 为模型提供问题或说明,然后让模型进行创造性输出。(“写一个关于...的故事”)

我们的论点是基于第二种交互模式(求知型查询),希望在这种查询中得到真实(自信)的答案,我们希望模型在对答案没把握的情况下能够如实回答“我不知道”或拒绝回答这一问题。

对于这类交互模式,由于监督训练可能会让模型撒谎,所以我们必须使用RL。核心问题是:我们希望模型根据内部知识进行回答,但我们并不知道模型内部知识包含的内容。 

在监督训练中,我们给模型提供问题及正确答案,并训练模型复制提供的答案。这里有两种情况:(1)模型“知道”答案。这种情况下,监督学习能够正确推动模型将答案与问题相关连,并且有望让模型执行相似的步骤,回答将来遇到的类似问题。这是所期望的行为。(2)模型不知道答案。在这种情况下,监督训练还是会促使模型给出答案。

现在,我们有两种选择。一种可能是,它会促使模型记住特定的问答对。这种做法本身并没什么坏处,但不太高效,因为我们的目的是让模型具有泛化能力,并且能回答任何问题,而不只是那些在训练数据中出现的问题。但如果我们使模型在这些情况下能做到泛化,那么实际上就是在教模型捏造答案,相当于鼓励模型“说谎”,这很不好。

由于我们无法确定模型知道哪些信息或不知道哪些信息,所以无法避免第二种情况,这对监督训练来说是一个真实且严重的问题。

我们不能仅依靠监督学习来训练模型生成可信任回答,还需要强化学习的加持。与监督学习不同,强化学习不会鼓励模型编造答案:即使模型最初确实猜对了一些答案并错误地学习了“编造”行为,但长远来看,模型会因编造答案的得分较低(很可能是不正确的)而学会依赖内部知识或选择放弃回答。

6
教导模型放弃回答

当模型不知道答案时,我们希望它能够放弃回答并给出“我不知道”或类似的答案。但由于我们不知道模型是否知道答案,所以这并不是一件容易的事,在监督环境中很难做到。我们可以引导模型规避某些类型的问题(例如“从不回答涉及人类的问题”),并回答“我不知道”。但这不是在答案未知时放弃回答的预期行为,只是一个非常薄弱的替代方法(proxy)。

然而,这对于强化学习设置也具有挑战:模型可能从一开始就不会生成“我不知道”的答案,因此我们无法鼓励它作出这种回答。解决这个问题的方法之一是,先进行一些监督训练,学习在某些情况下生成“我不知道”的答案,然后再进行强化学习训练。

但这种方法也有弊端,即在监督学习和强化学习中,模型可能会过度回答“我不知道”。这是一个开放的研究问题,可以尝试通过“定制奖励函数”来解决:将正确答案赋予非常高的分数,放弃回答的答案赋予中低分数,不正确的答案赋予强烈负分。当然,想做到这一点也并非易事。

7
模型窃取 / 蒸馏的影响

OpenAI在GPT模型的强化学习类型调优(RL-type tuning)方面投入了大量精力。原因有很多,他们的部分动机是希望通过鼓励模型在不知道答案时放弃回答来确保准确性和真实性。

最近有一种趋势,即采用其他公开可用的基础语言模型,并对它们进行训练,以期能够复制GPT模型的出色行为。

这种做法类似于监督式训练或指令调优:通过训练,模型可以准确生成GPT模型的答案。这对于教模型执行指令应该很有效,但却不适用于回答知识查询类问题(案例b)。

公开可用的基础模型和OpenAI模型可能具有不同的知识集,因此训练模型以复制GPT的答案可能会面临与监督学习同样的问题,即鼓励模型编造事实,或在它知道正确答案但GPT模型不知道的情况下放弃回答。那么,解决方案是用强化学习对这些模型进行训练,但这是否太过昂贵?

8
无人类反馈的强化学习

长期以来,使用强化学习训练生成语言任务对大多数玩家来说都不切实际:由于缺乏可靠的自动评分指标,强化学习训练需要对每个训练样本进行人工反馈。这既耗时又昂贵,特别是对于需要查看数千到数万甚至数十万个示例才能学习的模型。

然而,强化学习训练现在变得实用了:首先,出现了可以从较少示例中学习的大型预训练语言模型。更重要的是,这些模型为强化学习循环(RL loop)中去掉人类参与铺平了道路。

监督训练对于文本相关的任务非常有效,而且大型模型可以很好地学习执行一些任务。例如,让模型确定两个文本是否意思相同,或者一个文本是否包含另一个文本中没有的事实(还可以将任务分解,让模型“生成所有可从该文本回答的所有'问答对'”,然后针对每个问题询问“在其他文本中是否有该问题的答案,答案是什么”)。

根据经验来看,大型语言模型(甚至中型语言模型)可以使用监督学习可靠地学习执行这些任务,这为我们提供了可用于强化学习设置的有效自动评分机制。

我们可以使用人类提供的指令-响应对进行训练,不过,要让模型生成自己的响应,而不是直接复制人类响应,然后用在监督方式下进行训练的专用文本对比模型(text comparison model)将模型生成的响应与人类提供的响应进行比较,这样就获得了一种自动打分的办法。
 

其他人都在看

  • ChatGPT成功的秘密武器

  • 向量嵌入:AutoGPT的幻觉解法

  • 谷歌科学家:RLHF的演进与局限

  • John Schulman:通往TruthGPT之路

  • 比快更快,开源Stable Diffusion刷新作图速度

  • OneEmbedding:单卡训练TB级推荐模型不是梦

  • GLM训练加速:性能最高提升3倍,显存节省1/3

欢迎Star、试用OneFlow:github.com/Oneflow-Inc/oneflow/icon-default.png?t=N3I4http://github.com/Oneflow-Inc/oneflow/

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

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

相关文章

适配PyTorch FX,OneFlow让量化感知训练更简单

作者 | 刘耀辉 审稿 | BBuf、许啸宇 1 背景 近年来,量化感知训练是一个较为热点的问题,可以大大优化量化后训练造成精度损失的问题,使得训练过程更加高效。 Torch.fx在这一问题上走在了前列,使用纯Python语言实现了对于Torch.nn.M…

mongodb charts对mongodb数据进行分析和展示

mongodb charts 安装教程 安装环境什么是mongodb charts下载mongodb charts等准备工作配置mongodb charts创建用户启动和停止MongoDB图表故障排除web展示 安装环境 系统环境:ubuntu 16.04 docker 版本:Docker version 18.09.0 mongo 版本:Mo…

小白量化彩票实战(4)彩票特征号码重号、邻号、连号和表格展示

小白量化彩票实战(4)彩票特征号码重号、邻号、连号和表格展示 我写彩票的博客,不是鼓励大家去买彩票,读者要以学习编程和娱乐的思想来看待。兴趣是学习最大的动力! 彩票的号码特征很多,我们本篇介绍几个简单的号码特征…

一个小把戏算法,获取大乐透,并且计算出最佳的结果(Qt C++ 和Android共用)

无聊的国庆,总得做点什么好玩的是不是,那就写代码获取大乐透,让后按照自己的算法推测下一期的结果吧。 话不多说,上代码 Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);initDat…

算力军备竞赛白热化 “卖铲人”联想集团竞争力如何?

继微软通过OpenAI推出GPT系列、谷歌推出Bard和PaLM-E2之后,国内AI大模型也呈百家争鸣态势,年初至今,国内科技巨头几乎都发布了自研AI大模型产品,AI竞赛全面升级的背后,是全球科技巨头们对算力的争夺,作为算…

chatgpt赋能python:Python制图中如何添加文字

Python 制图中如何添加文字 介绍 制图通常不仅需要展示数据,还需要向读者传递信息。而添加文字是一种直接有效的方式,可以帮助读者更好地理解图表。 Python 图形库众多,如 Matplotlib、Seaborn、Plotly 等,它们都提供了向图表中…

【送书福利-第八期】《硅基物语.AI大爆炸: ChatGPT→AIGC→GPT-X→AGI进化→魔法时代→人类未来》

大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 本文目录 一、前言二、内容介绍三、作者介…

算法工程师体验了一下chatGPT,已经上瘾了!

chatGPT持续刷屏,作为能写代码,能修bug的超级工具,CV君必须体验一把! 首先来一个基本操作,让chatGPT写一段Python程序,使用YOLOv5对图像中的目标进行检测,找出有狗没有猫的图片: 对YOLOv5这种公…

还有人不懂 ChatGPT,不焦虑吗?(文末赠书)

,不 如果有一本书 可以让人理解“AI大爆炸”新纪元 那就是《碳基物语》 半年以来,ChatGPT点燃文明新火把 对AIGC和AGI的讨论也甚嚣尘上‍‍‍‍ AI会取代人类吗? 人工智能会拥有智慧吗? ChatGPT到底该怎么玩? 我该如何…

一想到还有95%的人不懂ChatGPT,我就焦虑了

如果有一本书 可以让人理解“AI大爆炸”新纪元 那就是《碳基物语》 半年以来,ChatGPT点燃文明新火把 对AIGC和AGI的讨论也甚嚣尘上‍‍‍‍ AI会取代人类吗? 人工智能会拥有智慧吗? ChatGPT到底该怎么玩? 我该如何利用AIGC提升生产…

5月书讯 | 《这就是ChatGPT》来了!

叮~又到了书讯时间,本月好书众多,姗姗来迟。 在这个数字化的时代,我们仍然相信纸质书的魅力,可以让人沉静下来,回归到阅读的本质。五月盛夏伊始,炎炎夏日,我们精心挑选了 10 本好书,…

通过AI的自白,开启ChatGPT学习之旅!

如果有一本书 可以让人理解“AI大爆炸”新纪元 那就是《碳基物语》 半年以来,ChatGPT点燃文明新火把 对AIGC和AGI的讨论也甚嚣尘上‍‍‍‍ AI会取代人类吗? 人工智能会拥有智慧吗? ChatGPT到底该怎么玩? 我该如何利用AIGC提升生产…

Anaconda安装的python环境中“No module named pip” 和 “ ‘pip‘ is a package and cannot be directly executed”问题

一. 没有pip3问题 找到安装anaconda的文件夹,点击Scripts(利用anaconda安装的python虚拟环境都在这里),确定是否存在一个easy_install.exe的程序,如果有请往下看,如果没有进入直接进入第4步。 打开 Anaconda Prompt 或 cmd &…

chatgpt赋能python:Python.head()方法:介绍和使用

Python .head()方法:介绍和使用 在Python编程中,我们经常需要处理大型数据集。为了更好地理解和使用这些数据,我们需要查看开头部分的数据。在这种情况下,.head()方法是非常有用的。 什么是.head()方法? .head()方法…

用ChatGPT解析Wireshark抓取的数据包样例

用Wireshark抓取的数据包,常用于网络故障排查、分析和应用程序通信协议开发。其抓取的分组数据结果为底层数据,看起来比较困难,现在通过chatGPT大模型,可以将原始抓包信息数据提交给AI进行解析,本文即是进行尝试的样例…

如何利用ChatGPT实现推荐模型的能力?

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年3月份热门报告合集 无需翻墙,ChatGPT直接使用 万字干货:ChatGPT的工作原理 2023年创业(有创业想法)必读手册 ChatGPT等…

打造类ChatGPT,云知声的优势在哪?

在ChatGPT上线后,一些人认为它只是一个聊天的人工智能,但对于云知声等AI企业而言,已经把ChatGPT放在了向通用AI演进这样的级别来看待的,并着手打造ChatGPT医疗行业版,同时基于ChatGPT行业版构建平台,快速扩…

为什么我们要掌握Linux系统编程?

为什么我们要掌握Linux系统编程?(文末送书4本) 作为一个嵌入式开发者,我觉得基于Linux的系统编程,这个应该是绕不开的话题。本文将围绕,为何要掌握Linux系统编程这个问题,给出一些观点&#xff…

bing侧边栏打开没有聊天界面问题

# 问题描述 在网络代理工具设置为PAC模式下,侧边栏没有bing聊天功能,只有在全局模式下,侧边栏才可以使用bing聊天功能。 # 问题解决 在侧边栏聊天框点击鼠标右键,选择检查,弹出DevTools界面,点击到网络&a…

燕千云ChatGPT应用,用过的都说香

本期受访人物:张礼军 甄知科技联合创始人,CTO 首席产品官 2022年底,基于人工智能技术驱动的自然语言工具横空出世,一经推出,ChatGPT迅速火遍全球,几乎各行各业都在探索ChatGPT具体业务场景的应用&#xf…