赞
踩
这份报告可以被划分为两大部分。
chatgpt任务类型:自回归的文字接龙游戏
设想一下,如果你想训练一个可以和你对话的语言模型,你会分成哪几步?
“开卷有益”阶段:让ChatGPT对海量互联网文本做单字接龙,以扩充模型的词汇量、语言知识、世界的信息与知识。使ChatGPT从“哑巴婴儿”变成“脑容量超级大的语言强者”。
“模板规范”阶段:让ChatGPT对优质对话范例做单字接龙,以规范回答的对话模式和对话内容。使ChatGPT变成“懂规矩的博学语言强者”。
“创意引导”阶段:让ChatGPT根据人类对它生成答案的好坏评分来调节模型。以引导它生成人类认可的创意回答。使ChatGPT变成“既懂规矩又会试探的博学强者”
想要知道如何教会模型怎么说话的,我们需要了解下自然语言理解的发展历程。自然语言理解(Natural Language Understanding, NLU)的发展历程可以追溯到计算机科学的早期阶段,跨越了几十年的时间,其中发生了许多关键的技术转折和模型创新。以下是该领域发展的一些主要阶段:
1. 符号主义和规则系统(1950s-1980s):
自然语言理解最早是作为人工智能(AI)的一个子领域而存在的。在那个时期,自然语言处理(NLP)主要依赖于手工制定的规则和符号逻辑。这些规则可以使计算机“理解”语句的语法和语义,但是对于复杂、模糊或者语境相关的语言,这些系统往往不能很好地处理。
2. 统计方法和机器学习(1990s-2000s):
在这个阶段,随着计算能力的提升和大规模文本数据集的出现,NLP开始转向统计方法和机器学习。这种方法通过对大规模语料库的统计分析,预测单词、短语或句子的概率分布,使得自然语言处理的性能得到了显著提高。比如隐马尔科夫模型(HMM)、最大熵模型、条件随机场(CRF)等在词性标注、命名实体识别、句法分析等任务中得到了广泛应用。
3. 深度学习和词嵌入(2010s):
2010年代初,随着深度学习技术的崛起,自然语言处理领域出现了显著的变革。词嵌入模型如Word2Vec和GloVe的提出,实现了词汇语义的向量化表示,极大地推动了NLP领域的发展。另外,循环神经网络(RNN)和长短期记忆网络(LSTM)等模型的出现,使得模型可以处理序列数据,从而可以捕捉语言中的长距离依赖关系。
4. 预训练语言模型(2018s-现在):
自2018年起,预训练语言模型(Pretrained Language Models, PLMs)引领了NLP领域的新一轮革新。如OpenAI的GPT系列模型,Google的BERT、T5等模型,通过在大规模语料库上预训练,学习到丰富的语言知识,并通过迁移学习应用到各种下游任务,显著提升了NLP的性能。此外,Transformer架构也由于其高效的并行计算和自注意力(Self-Attention)机制,成为了预训练模型的核心组件。
我爱西电啦啦啦
计算词表:
编码:
我:[1,0,0,0,0]
爱:[0,1,0,0,0]
西:[0,0,1,0,0]
电:[0,0,0,1,0]
啦:[0,0,0,0,1]
啦:[0,0,0,0,1]
啦:[0,0,0,0,1]
存在问题:
语义关系无法表示
稀疏表示,对于词表大的,代价极大
2010年代初,为了解决One-Hot编码的问题,研究人员提出了Word2Vec。
问题:
无法处理单词的多义性
缺乏对词序的处理
无法处理未出现过的单词(OOV问题)
需要大量的计算资源
为了表示词与词之间的序列关系。
问题:
长期依赖问题
梯度消失和梯度爆炸
无法并行计算
2017年,Google推出Transformer,利用Attention完全替代过往深度学习中的循环网络和卷积网络结构,直白地展现出了“大一统模型”的野心,"Attention is ALL you need"也成了一个玩不烂的梗。
如何解决上面问题的:在Transformer模型中,embeding首先通过嵌入层得到词嵌入,然后通过位置编码添加位置信息,得到模型的输入表示。然后,这个输入表示被复制三份,分别通过三个不同的线性层得到查询、键和值。
这个公式的主要目的是进行缩放(Scaling)。这是因为当维度dk较大时,点积的结果可能会变得非常大,这样经过softmax函数后,得到的概率分布可能会非常陡峭,即大部分的概率集中在一个或几个元素上,这会导致梯度变小,影响模型的训练。而除以dk的平方根可以使点积的结果落在一个相对稳定的区域,使得概率分布更加平滑,有利于模型的训练。
在CV里,pre-training + fine-tune的方式盛行已久:先用海量有标注的数据集,通过有监督的训练生成一个预训练模型,然后通过下游任务,在这个模型上做微调。但是在NLP中,这个方式一直很难做起来,原因是:
Transformer出世后,模型对文字上下文的理解能力得到显著增强,在这一铺垫下,GPT1诞生了,它的整体设计思路如下:
确定好了总体设计思想,接下来就是详细的技术实践了。GPT1的预训练模型基本遵循Transformer Decode部分的结构,去除掉和Encoder做cross-attention的部分,如下图:
观察Decoder和Encoder部分的Attention,可以发现:
有了一个预训练模型,我们就可以做fine-tune了。在这里,我们让模型做4种有监督的学习:
GPT 使用的是 Transformer 的解码器结构,它是单向的,也就是说,每个词只能看到它之前的词。
BERT 使用的是 Transformer 的编码器结构,它是双向的,也就是说,每个词能够同时看到它前面和后面的词。
GPT 的预训练目标是语言建模,即预测下一个词是什么。
BERT 的预训练目标包括遮蔽语言建模(Masked Language Model, MLM)和下一句预测(Next Sentence Prediction, NSP)。MLM 任务是随机遮蔽输入中的一些词,然后预测这些被遮蔽的词。NSP 任务是预测给定的两个句子是否是连续的。
GPT 的优点是预训练和微调阶段的目标一致,都是语言建模,这使得预训练阶段学习的知识可以更好地迁移到下游任务。但它的缺点是由于只能使用左侧的上下文,因此对于一些需要理解全局上下文的任务,如问答、语义角色标注等,可能性能较差。
BERT 的优点是由于使用了双向的上下文,因此可以更好地理解语义和捕捉长距离依赖,对于各种任务都有很好的性能。但它的缺点是预训练和微调阶段的目标不一致,预训练阶段是预测被遮蔽的词,而微调阶段的任务通常不涉及这种预测,这可能会导致预训练阶段学习的知识不能完全迁移到下游任务。
GPT1的模型参数为L=12,H=768,A=12,这个设置和后来Bert-Base一模一样,但后者的效果要好上很多。原因之一是,GPT采用Masked-Attention,对模型和训练数据的要求会更高,因为模型能读到的信息只有上文。而采用普通Attention的Bert在训练阶段就能同时读到上下文。这个性质决定了GPT模型越来越大的趋势。但是,长远来看,Masked-Attention是push模型更好理解文字的重要手段,毕竟在现实中,我们更希望培养模型知上文补下文,而不是单纯地做完形填空。
Encoder VS Decoder,Bert VS GPT1,战火已经拉开,但是此时GPT1仍处在劣势。前面说过,基于Decoder的模型,模型和数据量越大,效果越好。但如果只做到这一点,从技术上来说又太逊色了,性价比也不高。因此,openAI从训练数据上进行改进,引入了zero-shot这一创新点,GPT2就诞生了。
GPT2的核心思想是:只要我的数据够多够好,只要我的模型够大够强。我可以直接去掉fine-tune,训练出一个通用的模型。
要了解这一点,我们先来看Zero-shot,One-shot和Few-shot的区别:
Zero-shot:在这种情况下,我们只给出任务描述和任务提示,不提供任何样例。例如:
One-shot:在这种情况下,我们给出任务描述,一个样例,和任务提示。例如:
Few-shot:在这种情况下,我们给出任务描述,若干个样例,和任务提示。例如:
GPT2希望通过喂给模型Zero-shot类型的样本,不告诉模型“做什么”,“怎么做”,让模型自己去体会。但是,你总不能让所有的数据都长成图例里Zero-shot那样吧,那和去标注数据有什么区别?所以,这时候,语言的魅力就来了。一段普通的文字里,可能已经蕴含了“任务描述”、“任务提示”和“答案”这些关键信息。比如,我想做英法文翻译这件事,那么我从网上爬取的资料里可能有这样的内容:
如果我把这样的文本喂给GPT,它是不是就能在学习文字接龙的过程里,领悟到英法互译这一点?如果我的数据集又多又棒,那GPT自主揣摩的能力是不是就能更强?
所以,GPT2在训练数据上,玩出了花样。它从著名的在线社区Reddit上爬取训练数据(数据具有一定的问答特性),并按社区用户的投票结果筛选出优质的内容。在这个方式下,训练出了1.5B的GPT2,效果基本与Bert差不多。从实用性的角度上,GPT2并没有带来突破,但是,zero-shot的训练方式,却有效证明了NLP领域训练出一个完全通用模型的可行性,这一刻开始,LLM走AIGC的路初见萌芽,因为整个训练流程看起来就像是模型自主学习知识。
Zero-shot的方式被GPT2认证可行后,openAI就不得不开始考虑模型是否能真正做到强大了,毕竟现在只是和Bert持平而已。这一刻openAI开始悟过来,既然LLM要一路走到底,既然模型之大避免不了,那不如来得更彻底一些。GPT3沿用了去除fine-tune,只做通用模型的思路,同时技术上小做替换(sparse Transformer),然后在训练数据中引入Few-shot(毕竟完全不给模型任何显性提示,效果确实没达到预期),最终生成了一个大小高达175B的庞然大物,当然效果也是一骑绝尘的。
简单总结:
1、GPT的核心思想是:在NLP领域做pre-traning + fine-tune的框架,解决现实中缺乏文本标注的问题。
2、GPT基于Tranformer Decoder,Bert基于Transformer Encoder。在训练阶段,GPT只能看见上文,Bert可以看见上下文。这也注定了GPT需要把模型做大,训练数据做丰富,才能达到超越Bert的效果。
3、从GPT2到GPT3,Zero-shot和Few-shot的方式被证明可以使得模型能够去除fine-tune部分,训练一个通用的语言模型。
GPT3模型的有效性也自此让openAI在LLM实现AGI(Artificial General Intelligence)的方向坚定不移。GPT3是一个“词语接龙”类模型,即给定上文,它能写出make sense的下文,当然也能用来做各类问答。
此时,模型学会了说话。但它的回答可能并不令你满意,即没有对齐你的意图(aligin to your intention)。
例如:
你希望是“今天天气真不错,我在家里睡懒觉。”
你老板希望是“今天天气真不错,大家一起来加班。”
你老妈希望是“今天天气真不错,我娃必须去擦地。”
为了让模型对齐人类意图,人类将模型这三句话重新送入模型,做有监督的微调。
也就是利用高质量数据对模型再次训练
GPT3.5, 与GPT3原理基本一致,在训练数据上,引入codex数据集在GPT3上做微调,所以在chatGPT中,也能发现其具备对代码的解析能力。
GPT-SFT(Supervised Fine-Tuning on GPT), 基于GPT的有监督微调,则是这里要讲述的重点。回顾第一章,GPT3.5已经是一个文字接龙好手了,并且由于看过足够多的资料,它能保证基本的回答质量。但它仍不够惊艳,因为它只是按照所学回答问题,而在贴合人类意图上还有所欠缺,也就是,还不够“类人”。
解决这个问题的想法,暴力又简单,那就是标数据,让self-supervised模式训练出来的GPT,也经过supervised的微调,直接了当的告诉它,人类想要什么回答。openAI雇佣了40名标注人员,在SFT阶段共标注13k的(prompt, completion)对问答数据,其中prompt包含如下类型:
有了标注数据,我们就可以对GPT进行微调,在论文中,一组(prompt, completion)也被称为demonstration。
对于同一个问题,不同人类的回答是不一样的。为了让模型得到一个让大部分人都满意的答案,我们再邀请一批人类,来对不同的回答进行排序/打分。然后,我们再训练一个“打分模型”,来学习人类的打分标准。
当GPT大概能朝着人类意图的方向走时,我们需要给他更量化的指标,让它知道同一个prompt下,不同回答在人类那里的排序。所以,我们要训练一个奖励模型(RM,Reward Model)。
奖励模型也不是chatGPT的首创,它借鉴于Stiennon et.al (2020)的研究结果。在这一阶段,标注人员需要对同一prompt的不同回答进行排序,一共有33k的标注数据被用于训练。
在标注阶段,标注人员被要求对每一个prompt下的不同回答进行偏号排序。如图,某个prompt下有ABC三个回答,标注人员认为A>B>C。
模型学会了怎么说话,同时我们又训练出了一个独立的奖励模型,这时候,我们就要把两者结合起来,让模型能够更好的对齐人类意图了。在这里,chatGPT使用改良版本的PPO(Schulman et al, 2017)对GPT进行再次训练,改良后的训练算法被称为PPO-ptx。为了更好回顾,我们再贴出第一部分的缩略版架构图:
不了解强化学习也没关系,我们直接从损失函数上来说明这一步到底是怎么做的:
1、chatGPT的训练过程:
2、chatGPT是组装模型,从这一点上来说,它不是创新的。
3、精心设计的人工标注、雄厚财力支撑起来的训练资源、耐心地打磨等待和技术搬运、社会对非盈利组织的宽容等等不那么AI技术的原因,才是chatGPT从效果到口碑都起飞的主要原因。
大模型如GPT-3、LAMMA等经常拥有高达数千亿的参数,这使得训练和部署这些模型需要巨大的计算和存储资源。chatgpt光训练消耗1200万美元,用了10000张 V100训练了数个月。
现在学生能研究的其实也就提升学习、参数微调、思维链,更底层的研究参考如下(不推荐):
(未来十年,这个课题方向将会很火,很有意义,新工业革命的开始)
大模型的开源几乎天天都在进行,总有一天人人都能在自己电脑部署一个类似chatgpt4性能的大模型
微信公众号:大猿板砖简记(感谢大佬写的那么详细)
刘知远教授:大模型LLM领域,有哪些可以作为学术研究方向?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。