目录
- 前言
- Transformer
- GPT-1
- BERT
- GPT-2
- GPT-3
- InstructGPT/ChatGPT
- GPT-4
- 类ChatGPT产品
- Google Bard(诗人)
- facebook LLaMA(羊驼)
- 复旦 MOSS
- 清华 ChatGLM-6B/130B
- 百度 文心一言
- 总结
- 参考:
前言
人工智能发展的历程如上图所示,从基于规则统计方法到机器学习的方法使用了近40年的时间,从机器学习到深度学习花费了20年的时间,而基于Transoformer预训练模型的发展时间大概是5年,而类ChatGPT模型的推出又将深度学习向前推进一步。
在自然语言处理领域根据对语言的处理方式的不同,可分为**自然语言理解(NLU)**和 **自然语言生成(NLG)**两个子方向,自然语言理解:是理解语言、文本,从中提取出有用的信息,用于下游任务中,也就是让自然语言结构化。如:文本分类、信息抽取、信息检索等任务;自然语言生成:将输入的文本根据任务形式生成人类可理解的自然语言内容,下游任务如:翻译、摘要总结、生成式对话等任务。
在自然语言处理领域中,基于深度学习的大规模预训练模型架构可分为三部分,基于Transformer的编码器,如:BERT、RoBERTa等自编码(Auto-Encoding)系列模型,该系列模型主要应用于自然语言理解任务;基于Transformer的编码器和解码器,如:T5、Bart等序列到序列(Seq2seq)系列模型,基于Transformer的解码器,如:GPT-1、GPT-2等自回归(Auot-Regressive)系列模型,序列到序列(Seq2seq)和自回归(Auot-Regressive)主要应用于自然语言生成任务。
ChatGPT就是从第三条分支发展得到的,接下来主要介绍GPT系列模型的发展历程。
模型 | 发布时间 | 层数 | 参数量 | 预训练数据量 |
---|---|---|---|---|
GPT-1 | 2018年6月 | 12 | 1.17亿(0.117B) | 约5GB |
GPT-2 | 2019年2月 | 48 | 15亿(1.5B) | 40GB |
GPT-3 | 2020年5月 | 96 | 1,750亿(175B) | 45TB |
InstructGPT | 2022年3月 | 96 | 1,750亿(175B) | 几万条 |
ChatGPT | 2022年12月 | ---- | ---- | ---- |
GPT-4 | 2023年3月 | ---- | ---- | ---- |
GPT系列的模型结构秉承了不断堆叠transformer的思想,通过不断的提升训练语料的规模和质量,提升网络的参数数量来完成GPT系列的迭代更新的。GPT也证明了,通过不断的提升模型容量和语料规模,模型的能力是可以不断提升的。
Transformer
在介绍GPT之前,我们需要稍微回顾一下Transformer,2017年,Google Brain发表了一篇《Attention Is All You Need》论文,提出了一种新型的神经网络模型-Transformer,该模型不需要使用CNN和RNN等传统的序列模型,仅基于注意力机制实现了在自然语言处理领域中的优秀表现。简单的来说,Transformer的提出解决了模型无法数据并行计算和序列长期依赖的问题。
图1 Transformer模型结构图
Transformer特点如下:
1.使用了Attention机制,将序列中的任意两个位置之间的距离缩小为一个常量,Transformer中的自注意力机制允许模型在生成序列时,对输入序列中的任意位置进行关注。这样可以使模型更好地理解输入序列的不同部分之间的关系。
2.抛弃了RNN的顺序结构,因此具有更好的并行能力,符合现有的GPU框架,Transformer相比于传统的基于RNN的模型,具有更快的训练速度和更好的性能表现。
GPT-1
2018年,OpenAI发表了《 Improving Language Understanding by Generative Pre-Training》论文,提出了一种新型的预训练模型-Generative Pre-Training Transformer(GPT),该模型通过大规模无标签文本数据的预训练,可以为了各种下游自然语言处理任务提供良好的特征表示。GPT模型结构,如下图2所示:
图2 GPT-1模型结构图
在GPT-1之前,传统的NLP模型往往使用大量的数据对有监督的模型进行任务相关的模型训练,但是这样由监督学习的任务存在两个缺点:
1.需要大量的标注数据,高质量的标注数据往往需要花费大量的人工进行标注;
2.当前任务训练的模型很难泛化到其他任务中,该模型只能拟合当前任务的数据;
GPT-1的思想是先通过在无标签的数据上学习一个生成式语言模型,然后再根据特定的任务进行微调,后来这样的思想成为了NLP领域的第三范式 -“预训练+微调”。
预训练阶段,使用BookCorpus数据集来训练语言模型,该数据集包含了7,000本没有发布的书籍。训练任务是语言建模,通过训练模型预测一个给定上下文中的下一个单词。
微调阶段,在下游任务上,GPT-1通过微调来适用不同的任务。但是不同任务的输入是不一致的,有的只有一个输入,有的则有多组形式的输入。对于不同的输入,GPT-1有不同的处理方式,如:分类任务:将起始和终止token加入到原始序列两端,输入GPT-1中得到特征向量,最后经过一个全连接层得到预测的概率分布;自然语言推理:将前提(premise)和假设(hypothesis)通过分隔符(Delimiter)隔开,两端加上起始和终止token。再依次通过transformer和全连接得到预测结果;
图3 GPT-1微调阶段-不同任务的输入形式
在有监督学习的12个任务中,GPT-1在9个任务上的表现超过了state-of-the-art的模型(当时SOTA是LSTM)。在没有见过数据的zero-shot任务中,GPT-1的模型要比基于LSTM的模型稳定,且随着训练次数的增加,GPT-1的性能也逐渐提升,表明GPT-1有非常强的泛化能力,能够用到和有监督任务无关的其它NLP任务中。
GPT-1在未经微调的任务上虽然也有一定效果,但是其泛化能力远远低于经过微调的有监督任务,说明了GPT-1只是一个简单的领域专家,而非通用的语言学家。
BERT
2018年,Google发表了《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》论文,提出了一种自然语言理解的预训练模型-BERT,论文强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练,BERT模型结构,如下图4所示:
图4 BERT模型结构图
BERT的训练思想类似于GPT-1,先在大规模无标签数据上学习一个语言模型,然后再根据特定的任务进行微调,与GPT-1不同的是,BERT的预训练任务分为两个:掩码语言模型(Mask Language Model,MLM)和下一句预测(Next Sentence Prediction,NSP)。
- 掩码语言模型:句子在输入模型前,将中的每个词以15%的概率去遮盖;其中,80%的概率用[MASK]特殊标识符去替换,10%的概率保持不变,10%的概率随机替换为其他词。完成后输入模型,让模型预测[MASK]对应词是什么。
- 下一句预测,将两个句子用[SEP]特殊标识符拼接,如:A[SEP]B。将拼接好的句子输入到模型中,让模型预测B是否为A的下一句话,如果是则输出1,如果不是则输出0。
通过这两个预训练任务,BERT分别学习句子内与句子之间的语义关系,能够增强在下游任务中的语义编码能力。
微调阶段,根据任务形式不同,BERT也有不同的处理方式,但和GPT-1类似。如下图5所示,分类任务:将起始和终止token加入到原始序列两端,输入BERT中得到特征向量,最后经过一个全连接层得到预测的概率分布;自然语言推理:将前提(premise)和假设(hypothesis)通过分隔符(SEP)隔开,两端加上起始和终止token。再依次通过transformer和全连接得到预测结果;
图5 BERT微调阶段-不同任务的输入形式
在有监督学习的11个任务中获得了新的state-of-the-art的结果,如下图6所示,可以发现,BERT的效果远高于GPT-1的表现。
图6 部分榜单展示
GPT-2
2019年,OpenAI发表了《 Language Models are Unsupervised Multitask Learners 》论文,模型被称为GPT-2,其目标旨在训练一个泛化能力更强的词向量模型,它并没有对GPT-1的网络进行过多的结构的创新与设计,采用更多的网络参数和更大的数据集,并且提出了一个更难的任务:zero-shot,零少样本学习,即将预训练好的模型,直接应用到下游任务,模型根据给定的指令理解任务。
GPT-2的文章取自于Reddit上高赞的文章,命名为WebText。数据集共有约800万篇文章,累计体积约40G。
GPT-2的学习目标是使用无监督的预训练模型做有监督的任务。因为文本数据的时序性,一个输出序列可以表示为一系列条件概率的乘积:
p ( x ) = ∏ i = 1 n p ( s n ∣ s 1 , . . . , s n − 1 ) p(x)=\prod_{i=1}^{n}p({s}_{n}|{s}_{1},...,{s}_{n-1}) p(x)=i=1∏np(sn∣s1,...,sn−1)
上述公式的实际意义是根据已知的上文
i n p u t = s 1 , s 2 , . . . , s n − 1 input={{s}_{1},{s}_{2},...,{s}_{n-1}} input=s1,s2,...,sn−1
来预测未知的下文
o u t p u t = s n output={s}_{n} output=sn
,因此
p ( o u t p u t ∣ i n p u t ) p(output|input) p(output∣input)
语言模型可表示为,对于一个监督任务来讲,它可以建模为
p ( o u t p u t ∣ i n p u t , t a s k ) p(output|input,task) p(output∣input,task)
的形式。
这样做是希望能够让模型理解任务的本质并给出答案,而不是像GPT-1一样进行微调,可以将分类任务、自然语言推理、语义分析、问答等多个任务统一建模为一个任务形式,无需为每个子任务单独设计一个模型。
例如:在英语到法语的翻译任务中,给模型一个英语句子,后面跟着单词French和提示符(=),模型应理解为翻译任务,并给出英语句子的法语对照句;阅读理解任务:不对GPT-2训练,直接输入文本和问题q和A:,模型会理解这是一个问答题目,并输出答案。
图 7 GPT-2统一各类任务形式示意
对比GPT-1,GPT-2并未在模型结构上大作文章,只是使用了更多参数的模型和更多的训练数据。OpenAI作者认为,当一个语言模型的容量足够大时,它就能足以覆盖所有的有监督任务,也就是说所有的有监督学习都是无监督语言模型的一个子集,当模型的容量非常大且数据量足够丰富时,仅仅靠训练语言模型的学习便可以完成其他有监督学习的任务,这个思想也是提示学习(Prompt Learning)的前身。
提示学习的目的是去挖掘语言模型本身具备的知识。提示(Prompt)激发语言模型的补全能力,使其形式上模拟模型预训练过程使用的数据与任务,例如根据上半句生成下半句,或是完形填空等。
例:给女朋友买了这个项链,她很喜欢,这个项链太____了。
图 8 GPT-2效果图对比
如上图5所示,在8个语言模型任务中,仅仅通过zero-shot学习,GPT-2就有7个超过了state-of-the-art的方法;“LAMBADA”是测试模型捕捉长期依赖的能力的数据集,GPT-2将困惑度从99.8降到了8.6;但是GPT-2在文本总结的表现不理想,但是它的效果也和有监督的模型非常接近。
GPT-2的最大贡献是验证了通过海量数据和大量参数训练出来的词向量模型有迁移到其它类别任务中而不需要额外的训练。但是很多实验也表明,GPT-2的无监督学习的能力还有很大的提升空间,甚至在有些任务上的表现不比随机的好。尽管在有些zero-shot的任务上的表现不错,但是我们仍不清楚GPT-2的这种策略究竟能做成什么样子。GPT-2表明随着模型容量和数据量的增大,其潜能还有进一步开发的空间。
GPT-3
2020年,GPT-3发布,相比之前的GPT,GPT-3的显著特点是参数很多,是一个巨型模型,参数量高达1750亿参数量,如下图所示:
图 9 历代模型的参数量
GPT-3仅需要zero-shot或者few-shot,GPT-3就可以在下游任务中表现很好,表现好的原因是依赖于GPT-3的1750亿的参数量,45TB的训练数据以及高达1,200万美元的训练费用。
GPT-3尝试在下游任务中不去微调,直接适用预训练模型进行预测,作者提出了三种训练策略,以下策略均不对模型参数进行更新。
zero-shot,直接应用于下游任务
图 10 Zero-shot图示
one-shot,在预测时将一个例子也作为输入输入模型
图 11 One-shot图示
few-shot,在预测时将一些例子也作为输入输入模型,也成为上下文学习(in-context learning)
图 12 Few-shot图示
作者对这3种学习方式分别进行了实验,实验结果表明,三个学习方式的效果都会随着模型容量的上升而上升,且few shot > one shot > zero shot。
图 13 在Lambda数据集上表现
在大量的语言模型数据集中,GPT-3超过了绝大多数的zero-shot或者few-shot的state-of-the-art方法。另外GPT-3在很多复杂的NLP任务中也超过了微调之后的state-of-the-art方法,例如闭卷问答,模式解析,机器翻译等。除了这些传统的NLP任务,GPT-3在一些其他的领域也取得了非常震惊的效果,例如进行数学加法,文章生成,编写代码等。
但是GPT-3还有一些缺点的:
1.由于40TB海量数据的存在,很难保证GPT-3生成的文章不包含一些非常敏感的内容,例如种族歧视,性别歧视,宗教偏见等;
2.对于一些命题没有意义的问题,GPT-3不会判断命题有效与否,而是拟合一个没有意义的答案出来;
3.受限于transformer的建模能力,GPT-3并不能保证生成的一篇长文章或者一本书籍的连贯性,存在下文不停重复上文的问题。
InstructGPT/ChatGPT
预训练模型自诞生之始,一个备受诟病的问题就是预训练模型的偏见性。因为预训练模型都是通过海量数据在超大参数量级的模型上训练出来的,对比完全由人工规则控制的专家系统来说,预训练模型就像一个黑盒子。没有人能够保证预训练模型不会生成一些包含种族歧视,性别歧视等危险内容,因为它的几十GB甚至几十TB的训练数据里几乎肯定包含类似的训练样本。这也就是InstructGPT和ChatGPT的提出动机,论文中用3H概括了它们的优化目标:
- 有用的(Helpful);
- 可信的(Honest);
- 无害的(Harmless)
2021和2022年OPenAI分别发表InstructCPT和ChatGPT,InstructGPT/ChatGPT整体训练流程如下:
图 14 InstructGPT/ChatGPT训练流程
从图10中,我们可以看出,InstructGPT/ChatGPT的训练可以分成3步,其中第2步和第3步是的奖励模型和强化学习的SFT模型可以反复迭代优化。
- 根据采集的SFT数据集对GPT-3进行有监督的微调(Supervised FineTune,SFT);
- 收集人工标注的对比数据,训练奖励模型(Reword Model,RM);
- 使用RM(奖励模型)作为强化学习的优化目标,利用PPO算法微调SFT模型。
整体技术路线上,InstructGPT/ChatGPT在效果强大的GPT 3.5大规模语言模型(LLM,Large Language Model)基础上,引入“人工标注数据+强化学习”(RLHF,Reinforcement Learning from Human Feedback ,这里的人工反馈其实就是人工对模型输出进行排序)来不断微调预训练语言模型。
主要目的是让LLM模型学会理解人类的命令指令的含义(比如:给我写一段小作文生成类问题、知识回答类问题、头脑风暴类问题等不同类型的命令),以及让LLM学会判断对于给定的prompt输入指令(用户的问题),什么样的答案是优质的(富含信息、内容丰富、对用户有帮助、无害、不包含歧视信息等多种标准)。
因为InstructGPT/ChatGPT是在GPT-3.5基础上做的微调,而且因为涉及了人工标注,它们数据总量并不大,如上表展示了三份数据的来源及其数据量。
GPT-4
2023年3月14日,OpenAI发布了《 GPT-4 Technical Report》,并且在官网上说明,GPT-4是OpenAI目前最先进的系统,能生成更有用、更安全的回复。
相比于ChatGPT,GPT-4具有以下特点
- 创造性
GPT-4可以生成、编辑和迭代用户的创意和写作能力,如:创作歌曲、写剧本或者学习用户的写作风格。
更进一步,翻译部分,采用ChatGPT进行翻译,对比百度翻译, ChatGPT翻译更符合语法和流畅性。
- 兼容图片
GPT-4可以接受图像作为输入,并生成字幕、分类以及分析。
- 更长的输入
GPT-4能够处理超过25,000个单词的文本,适用于长篇内容创作、长时间的对话以及文档搜索和分析等适用场景。
当然,GPT-4并不是完美无缺,在一些领域上仍然存在已知的局限性,如:生成幻觉、社会偏见。
类ChatGPT产品
Google Bard(诗人)
发布日期:2023年2月7月
Bard是由LaMDA提供支持的全新实验性对话谷歌AI服务,LaMDA 模型参数多达 137B 个参数,展示了接近人类水平的对话质量。
但发布当前,Bard存在事实错误,生成幻觉问题,谷歌 Demo 的一 GIF 显示,在回答问题「关于詹姆斯韦伯太空望远镜(JWST)有哪些新发现,我可以告诉我 9 岁孩子哪些内容?」Bard 提供了三个要点,其中一个指出「该望远镜拍摄了太阳系外行星的第一张照片。」
然而,推特上的一些天文学家指出这是不正确的,第一张系外行星图像是在 2004 年拍摄的。
facebook LLaMA(羊驼)
发布日期:2023年2月25日
facebook一次性发布了7B、13B、33B和65B四种参数量级的类GPT模型,所有模型均开源。65B的LLaMA效果超越了GPT-3,它在大多数测试上优于GPT-3。
如:常识推理:
或者说一些基础问题的解决:
可部署+微调
但中文能力较差。
低成本复现,效果堪比GPT-3.5
https://github.com/tatsu-lab/stanford_alpaca
复旦 MOSS
发布日期:2023年3月底
参数量规模百亿级别,基于CPT底层模型,CPT是201年邱老师团队提出的中文预训练模型,既可以做NLU也可以做NLG。
待发布+可部署
清华 ChatGLM-6B/130B
发布日期:2023年1月21日
清华大学在2023年1月21日发表《GLM: General Language Model Pretraining with Autoregressive Blank Infilling》论文,提出了GLM大规模预训练模型,同时开源了6B和130B两个参数量级,130B表现优于GPT-3,最重要中文能力更强。
ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B已经生成相当符合人类偏好的回答。
部署尝试:
- Text2SQL:将文本转为SQL语句
- 舆情:主体识别和舆情状态分析
可部署 + 微调
- 推理:GPU 1张 3090 CPU 10 核20线程10-i900k
- 训练:GPU 8张 3090 CPU 10核20线程 10-i900k
百度 文心一言
发布日期:2023年3月16日
内测中…
理解能力较差
知乎评测链接
https://www.zhihu.com/question/589955024/answer/2940079055
支持云服务+私有化部署
总结
从GPT-1的基础模型到GPT-2的大规模预训练和GPT-3的Few-shot Learning到今天的ChatGPT和GPT-4,证明了基于深度学习的方法使用更多的数据和更多的算力能够创建能力越来越强的语言模型。
参考:
ChatChatGPT 研报告GPT 调研报告-哈尔滨工业大学-自然语言处理研究所(HIT-NLP)
https://zhuanlan.zhihu.com/p/350017443
https://zhuanlan.zhihu.com/p/590311003
https://zhuanlan.zhihu.com/p/473001104
https://mp.weixin.qq.com/s/VYv8BRgGnp9ZTuXxaSuFwg
https://mp.weixin.qq.com/s/V0BTumv8Ax5ToMn8V2DdAA
https://openai.com/research/gpt-4
https://mp.weixin.qq.com/s/TcV88Wi2J0SmHNoYfYmUaw
https://mp.weixin.qq.com/s/ZzxsOf8HaNcJUV3xIpWlOw
https://github.com/THUDM/GLM-130B