ChatGPT技术解构

文章摘要: 使用有监督学习方式,基于GPT3.5微调训练一个初始模型;训练数据约为2w~3w量级根据InstructGPT的训练数据量级估算,参照P33 Table6),由标注师分别扮演用户和聊天机器人,产生人工精标的多轮对话数据;值得注意的是,在人类扮演聊天机器人时,会得到机器生成的一些建议来帮助人类撰写自己的回复,以此提高撰写标注效率。以上精标的训练数据虽然数据量不大,但质量和多样性非常高,且来自真实世界数据,这是很关键的一点。

ChatGPT的训练主要分为三个步骤,如图所示:

创新互联主要从事网站建设、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务乌当,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

Step1:

使用有监督学习方式,基于GPT3.5微调训练一个初始模型;训练数据约为2w~3w量级(根据InstructGPT的训练数据量级估算,参照https://arxiv.org/pdf/2203.02155.pdf P33 Table6),由标注师分别扮演用户和聊天机器人,产生人工精标的多轮对话数据;值得注意的是,在人类扮演聊天机器人时,会得到机器生成的一些建议来帮助人类撰写自己的回复,以此提高撰写标注效率。

以上精标的训练数据虽然数据量不大,但质量和多样性非常高,且来自真实世界数据,这是很关键的一点。经过第一步,微调过的GPT3.5初步具备了理解人类Prompt所包含意图的能力,可以根据不同意图给出高质量的回答。

Step2:

收集相同上文下,根据回复质量进行排序的数据:即随机抽取一大批Prompt,使用第一阶段微调模型,产生多个不同回答,之后标注人员对结果排序,形成  组训练数据对,使用pairwise loss来训练Reward Model,从而可以预测出标注者更喜欢哪个输出。这种比较学习可以给出相对精确的reward值。

这一步使得ChatGPT从命令驱动转向了意图驱动。训练数据不需过多,维持在万量级即可,因为它不需要穷尽所有的问题,只是要告诉模型人类的喜好,强化模型意图驱动的能力。

Step3:

使用PPO来微调第一阶段的模型。核心思想是随机抽取新的Prompt,用第二阶段的Reward Model给产生的回答打分,这个分数即回答的整体reward;进而将此reward回传,由此产生的策略梯度可以更新PPO模型参数;整个过程迭代数次直到模型收敛。

以上三个步合称为文献中提到的 RLHF(Reinforcement Learning from Human Feedback) 技术。

相关技术

InstructGPT

ChatGPT是InstructGPT的兄弟模型(sibling model),后者经过训练以遵循Prompt中的指令,提供详细的响应。InstructGPT是OpenAI在今年3月在Training language models to follow instructions with human feedback中提出的模型,整体流程和以上的ChatGPT流程基本相同,除了在数据收集和基座模型(GPT3 vs GPT 3.5),以及第三步初始化PPO模型时略有不同。

在InstuctGPT的工作中,与ChatGPT类似,给定Instruction,需要人工写回答。首先训练一个InstructGPT的早期版本,使用完全人工标注的数据,数据分为3类:Instruction+Answer,Instruction+多个examples和用户在使用API过程中提出的需求。从第二类数据的标注,推测ChatGPT可能用检索来提供多个In Context Learning的示例,供人工标注。剩余步骤与以上ChatGPT相同。

尤其需要重视但往往容易被忽视的,即OpenAI对于数据质量和数据泛化性的把控,这也是OpenAI的一大优势:

1)寻找高质量标注者:寻找在识别和回应敏感提示的能力筛选测试中,表现良好的labeler;

2)使用集外标注者保证泛化性:即用未经历以上1)步骤的更广大群体的标注者对训练数据进行验证,保证训练数据与更广泛群体的偏好一致。

在完成以上工作后,我们可以来看看InstuctGPT与GPT3的区别,通过下图可以明显看出:

GPT3的回答简短,回复过于通用毫无亮点;而InstructGPT“侃侃而谈”,解释自由主义为何愚蠢,显然模型学到了对于此类问题人们更想要的长篇大论的回答。

GPT3只是个语言模型,它被用来预测下一个单词,丝毫没有考虑用户想要的答案;当使用代表用户喜好的三类人工标注为微调数据后,1.3B参数的InstructGPT在多场景下的效果超越175B的GPT3: 

InstuctGPT的工作具有开创性,它挖掘了GPT3学到的海量数据中的知识和能力,但这些仅通过快速的In-context的方式较难获得;可以说,InstuctGPT找到了一种面向主观任务来解锁GPT3强大语言能力的方式。

PPO

PPO(Proximal Policy Optimization) 一种新型的Policy Gradient算法(Policy Gradient是一种强化学习算法,通过优化智能体的行为策略来解决在环境中实现目标的问题)。我们只需了解普通的Policy Gradient算法对步长十分敏感,但是又难以选择合适的步长,在训练过程中新旧策略的的变化差异如果过大则不利于学习。

而PPO提出了新的目标函数可以在多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以确定的问题。由于其实现简单、性能稳定、能同时处理离散/连续动作空间问题、利于大规模训练等优势,近年来收到广泛的关注,同时也成为OpenAI默认强化学习算法。

GPT与强化学习

再往前回溯,其实在2019年GPT2出世后,OpenAI就有尝试结合GPT-2和强化学习。在NIPS2020的Learning to Summarize with Human Feedback中,OpenAI对于摘要生成任务,利用了人类反馈对强化学习模型进行训练。可以从这篇工作的整体流程图中,看出三步走的核心思想: 收集反馈数据 -> 训练奖励模型 -> PPO强化学习。

RLHF第一阶段,针对多个候选摘要,人工排序(这里就体现出OpenAI的钞能力,按标注时间计费,标注过快的会被开除);第二阶段,训练排序模型(依旧使用GPT模型);第三阶段,利用PPO算法学习Policy(在摘要任务上微调过的GPT)。

文中模型可以产生比10倍大模型容量更好的摘要效果。但文中也同样指出,模型的成功部分归功于增大了Reward Model的规模,而这需要很大量级的计算资源,训练6.7B的强化学习模型需要320 GPU-days的成本。

另一篇2020年初的工作,是OpenAI的Fine-Tuning GPT-2 from Human Preferences。同样首先利用预训练模型,训练Reward模型;进而使用PPO策略进行强化学习,整体步骤初见ChatGPT的雏形。

而RLHF的思想,是在更早的2017年6月的OpenAI Deep Reinforcement Learning from Human Preferences提出,核心思想是利用人类的反馈,判断最接近视频行为目标的片段,通过训练来找到最能解释人类判断的奖励函数,然后使用RL来学习如何实现这个目标。

可以说,ChatGPT是站在InstructGPT以及以上理论的肩膀上完成的一项出色的工作,它们将LLM (large language model) / PTM (pretrain language model) 与 RL (reinforcement learning) 出色结合,证明这个方向可行。

WebGPT和CICERO

WebGPT是2021年底OpenAI的工作,其核心思想是使用GPT3模型强大的生成能力,学习人类使用搜索引擎的一系列行为,通过训练奖励模型来预测人类的偏好,使WebGPT可以自己搜索网页来回答开放域的问题,而产生的答案尽可能满足人类的喜好。

Cicero是Meta AI上个月发布的可以以人类水平玩文字策略游戏的AI系统, 其同样可以与人类互动,可以使用战略推理和自然语言与人类在游戏玩法中进行互动和竞争。Cicero的核心是由一个对话引擎和一个战略推理引擎共同驱动的,而战略推理引擎集中使用了RL,对话引擎与GPT3类似。

应用难点

对于ChatGPT的规模,目前没有更多信息支撑,所以无法明确如此智能的ChatGPT是在何规模下达成的。 最早的175B的GPT-3代号是Davinci,其他大小的模型有不同的代号。然而自此之后的代号几乎是一片迷雾,不仅没有任何论文,官方的介绍性博客也没有。OpenAI称Davinci-text-002/003是GPT-3.5,而它们均为InstrucGPT类型的模型,ChatGPT是基于其中一个微调模型得到,固由此推测ChatGPT可能是千亿模型。

大家一般没有机会接触千亿模型(Bloom之前没有开源的千亿模型,GPT-3也是收费的),不了解现在千亿模型的能力边界,对全量微调这个级别的模型也无从估计。ChatGPT的推断成本是比较高的。根据GPT3.5(Davinci)的成本推测:

1k tokens≈700 words为0.02美元,则换算后,一篇2k字的文章,直接调用需要0.4人民币,若保守按照日活1w用户,人均10篇文章计算,则每日调用成本为:10000x10x0.4=40000元。

和以前的模型比较,以BERT和T5为代表的早期Transformer和现在的大模型已不是一个量级。事实上11月28日OpenAI上新了text-davinci-003几乎没有引起国内的任何讨论,如果ChatGPT(11.30发布)不是免费试用,或许也不会引起这么大的反响。

同一时期的工作还有Deepmind的Sparrow和Google的LaMDA,效果与ChatGPT应该不相上下。同样以上提到的WebGPT和Cicero也在国内没有太大的水花。这两年LLM发展已经到了这个层级,或许因为成本或者工程化难度的问题,某种层面上在国内被忽视了。而此次ChatGPT正好找到了好的“曝光点”,一炮而红。

从OpenAI的成功可以看出,优秀的数据是一种极大的优势——除去技术上的考量,OpenAI很少开源数据,显然他们在数据上也下了大功夫,训练语料质量和开源的C4或The Pile不能同日而语;对于我们目前核心使用的扩增模型,Bloom作为千亿模型有很多待挖掘的能力。Bloom的微调任务中缺乏生成式的对话和问答,某些表现不如ChatGPT也在预料之中(实际上在Bloom的测试中,唯一与InstructGPT有重合的任务,是Bloom表现更好)。但是对于很多任务来说,配合In-context Learning,这个差距会被进一步缩小。

所以,我们应该思考如何利用这些令人激动的最新成果,而其中关键是如何找到适合我们入口的方式。比如使用ChatGPT,按不同需求生成高质量小样本数据,克服现有数据难获得的瓶颈;进而利用现有Bloom(GPT3模型)进行数据扩增。

分享名称:ChatGPT技术解构
浏览路径:http://www.36103.cn/qtweb/news11/28011.html

成都网站建设公司_创新互联,为您提供品牌网站设计定制网站标签优化关键词优化虚拟主机域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联