文章主题:GPT-3.5, 强化学习, RLHF, ChatGPT
1、前言
在总体技术路径中,我们可以看到ChatGPT采用了GPT-3.5这种大型语言模型(LLM,Large Language Model),并在这一基础之上融入了强化学习,以便对预训练的语言模型进行精细化调整。这种强化学习方法是RLHF(Reinforcement Learning from Human Feedback),也就是利用人工标注的方式进行操作。这种设计的目的是让LLM模型能够通过奖励与惩罚机制(reward)来学习理解各种自然语言处理任务,并能够判断出优质答案的标准,这包括帮助性(helpfulness)、诚实性(honesty)和安全性(harmlessness)这三个维度。
因此在了解ChatGPT之前,我们需要先看看什么是GPT-3以及强化学习。
1.1、GPT
在2018年6月,OpenAI发布的预训练模型GPT(即GPT-1)以其自回归的预训练方式,展现出了在自然语言生成任务中的优越性。这一模型与BERT有着相似之处,它们都是预训练模型,且均源于Transformer架构。在这里,GPT采用了与BERT相同的Transformer-Decoder作为编码器,但在细节上做出了一些调整。具体来说,GPT去掉了原本的Decoder中包含的两个Multi-Head Attention结构,仅保留了一个Masked Multi-Head Attention结构,如下图所示。
GPT模型结构与BERT模型相比,它作为一个语言模型是通过利用上下文来预测下一个单词。而Decoder采用了Masked Multi Self-Attention机制,从而屏蔽了单词后面的信息,这使得Decoder成为一个现成的语言模型。此外,由于没有使用Encoder,也就无需再关注编码器-解码器注意力机制。
GPT-2 是基于GPT模型的升级版,它在原有的基础上增加了多种任务,扩大了数据集和模型参数,并通过再次训练进一步优化。这种设计方法使得GPT-2能够处理更多的NLP任务,如机器翻译、文本摘要和领域问答等。由于这些任务都在同一个模型上进行学习,所以这个模型能够承载的不仅是任务本身,还能够处理其他通用信息,比如“汪小菲的妈是张兰”这样的信息。这种信息具有较高的通用性,可以应用于多种NLP任务,从而实现元学习,也就是利用一条信息在不同的NLP任务中都能表现出色。这就意味着,信息本身并不依赖于具体的NLP任务,而是可以跨任务使用的,通过举一反三的方式,GPT-2能够在每个NLP任务中都展现出优秀的性能。另外,GPT-2的参数量和训练数据也都有了显著的增长,这都为其在NLP领域的应用提供了更强大的支持。
GPT-3的预训练过程与其他模型不同,它采用了一种两段式的方式。该过程包括两个阶段:第一阶段是利用大规模数据集对模型进行基础预训练,第二阶段则是通过下游任务的标注数据集进行微调。这种方法相较于传统的单一预训练模型,能够更好地适应各种NLP任务,提高模型的准确性和泛化能力。
GPT-3正在改变我们的认知观念。它引入了一种名为”in-context”的学习方法。在这种方法中,模型接收到的信息包括一些提示和示例。例如,当用户向GPT-3输入“请将以下中文翻译成英文:苹果 => apple;”时,模型就能根据这些提示进行学习和理解,并给出准确的翻译结果:”apple”。这种学习方式更加符合人类的思维模式,也使得机器学习更加高效和智能。
其中 苹果翻译成 apple,是一个示范样例,用于让模型感知该输出什么。只给提示叫做 zero-shot,给一个范例叫做 one-shot,给多个范例叫做 few-shot。在 GPT-3 的预训练阶段,也是按照这样多个任务同时学习的。比如“做数学加法,改错,翻译”同时进行。这种引导学习的方式,在超大模型上展示了惊人的效果:只需要给出一个或者几个示范样例,模型就能照猫画虎地给出正确答案。但是这里需要超大模型才行得通,如下图所示:可以看出,这种引导学习的方式,在超大模型上展示了惊人的效果:只需要给出一个或者几个示范样例,模型就能照猫画虎地给出正确答案。
下表是三代GPT之间参数量的比较。
模型数据量参数量GPT-1约 5GB1.17亿GPT-240GB15亿GPT-345TB1750亿1.2、强化学习
强化学习是一种和有监督、无监督学习并行的概念。用游戏比较好理解,有代理(游戏角色)、环境、目标、行动、反馈这些基本要素。它会在给定的环境中,不断地根据环境的惩罚和奖励(reward),拟合到一个最适应环境的状态,是一种通过试错来进行学习的模型。
之前的研究中一直没有在NLP+强化学习上取得好的效果,主要是因为NLP 所依赖的环境,是整个现实世界,整个宇宙万物,都可以被语言描述,也就都需要针对模型输出的质量进行 reward 评价,它完全无法设计反馈惩罚和奖励函数。除非人们一点点地人工反馈。
下面说到今天的主角,ChatGPT正是openAI不计成本进行大量人工标注将GPT和强化学习结合起来得到的产物,具体方法分为以下三个阶段。
以下对ChatGPT的介绍主要来源自instructGPT的论文,ChatGPT是改进的instructGPT,改进点主要在收集标注数据方法上有些区别,在其它方面,包括在模型结构和训练流程等方面基本遵循instructGPT。
2、Chatgpt的三个阶段
2.1、冷启动阶段
该阶段的输入是从测试用户提交的prompt(就是指令或问题)中随机抽取的一批数据,其例子如下所示:
Prompt例子其方法概括来讲,就是以下两个部分,如下图所示:
对抽取的prompt数据人工进行高质量回答,获得<prompt,answer>数据对。通过高质量回答fine-turn gpt-3.5模型,在第一阶段帮助模型更好地理解输入指令。这样,一个基本的 GPT-3.5语言模型就被学习成了这里的 SFT 模型。
chatgpt第一阶段2.2、训练回报模型阶段(RM)
训练回报模型(RM) ,如下图所示,其方法概括为如下两部分
用上一阶段fine-turn好的SFT模型(使用和第一阶段几乎相同的prompt)生成k个回答(这里需要注意,对于同一个问题,GPT和SFT模型生成的答案是多样的,每一次提问都会有不同的答案),人工标注排名顺序用排序结果训练数据对<prompt,answer> chatgpt第二阶段我们希望被判定更好的输出得到的奖励数值要更高。由此,奖励模型可以通过最小化下面这样的损失函数来得到。对于一对训练数据<answer1,answer2>,我们假设人工排序中answer1排在answer2前面,那么Loss函数则鼓励RM模型对<prompt,answer1>的打分要比<prompt,answer2>的打分要高。
第二阶段损失函数2.3、强化学习微调阶段
这一步数据集规模更大一些且和第一二阶段不同,且不再需要人工。其方法可以概括为以下四个部分:
由第一阶段的监督模型初始化PPO模型的参数PPO模型生成回答用第二阶段RM模型对回答进行评估和打分通过打分,更新训练PPO模型参数chatGPT第三阶段这一步的训练过程中,还不仅仅使用强化学习的优化目标。还使用了下面的两个正则项来约束模型的表现。我们需要在训练的过程中最大化下面的函数,当γ≠0时,模型变为PPO-ptx(加上该部分是因为仅仅使用RL来学习可能会使得模型在很多NLP任务性能上下降)。
第三阶段函数总结一下:RLHF用于第一二阶段,首先通过人工标注微调gpt模型得到SFT模型,用SFT模型生成k个回答人工排序,训练RM模型。第三阶段,把SFT模型参数拿来,用RM模型获得的reward进行训练,得到ppo和ppo-ptx模型。
3、实验与模型的衡量
3.1、helpful
helpful——是否可以推断用户意图 测试方法是标注员在待测试模型的输出和 SFT 模型的输出中选择一个更好的。如果得分为 0.5 则表示该模型和 SFT 相比性能差不多。下图左侧为GPT提供prompt,右侧即为instructGPT提供的prompt测试得到的结果。可以看出ppo和ppo-ptx模型相对于其它模型取得了更好的效果。helpful评判结果3.2、honest
方法是在模型前加上如下这样的 instruction prompt,提示模型该小心什么问题,该怎样回答。
instruction prompt例子结果如下,右图即为加上instruction的效果。其中灰色代表可信度,有颜色的即代表同时可信和包含信息量的额比率:
honest结果3.3、harmless
方法也是加上instruction,从而减少模型产生有害/不礼貌/带有偏见的回答,效果如下所示:
harmless结果可以看出,ppo和ppo-ptx模型在三个H的评判指标下都取得了不错的结果。
4、问题与总结
4.1、模型优点
相对于自回归模型,reward有更细致的处罚信号,比如如果下一token是great,AR loss会给amazing和sandwich相同的处罚offline模式,使得RM模型生成更合适的反馈。RM模型更直接获取偏好 直接根据偏好进行打分好的句子就是高的反馈运用数据更具有效率 SFT需要人来生成目标,在我们训练RM的时候,就可以用来为输出打分了4.2、挑战与问题
高效引入新的知识困难,因为它是通过在GPT大模型上大量添加人工标注数据进行训练,重新训练的成本太大,而如果通过fine-turn对引入的新知识进行调整,可能会产生对于之前的知识灾难性遗忘的问题。
对于同一问题可能产生不同答案,且有可能会生成看似合理但实际完全错误的答案,不好判断。
4.3、一些思考
个人认为,ChatGPT最主要的贡献是还是证明了大力出奇迹,以及NLP+强化学习的方式能够取得很好的表现。过去的做对话的思路都是分出各个子任务逐个击破,再加以整合。而ChatGPT的成功则说明,不用考虑琐碎的细节,大模型大数据能够取得更好的效果。当然,这对于像我这样的nlp初学者来说,可能确实没有什么可以借鉴的地方。但是它取得的效果也确实足够令人激动。
以上是本人在学习和了解过程中的一些总结和思考,可能有一些不到位的地方,欢迎各位大佬讨论指正。
参考链接:
1.https://arxiv.org/pdf/2203.02155.pdf——InstructGPT
2.【强化学习 229】ChatGPT/InstructGPT – 知乎 (zhihu.com)
3.一文读懂ChatGPT模型原理 – 知乎 (zhihu.com)
4.ChatGPT会取代搜索引擎吗 – 知乎 (zhihu.com)
AI时代,拥有个人微信机器人AI助手!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!