纵观ChatGPT的发展历史,则要从2011年开始,在这一年,谷歌公司的谷歌大脑部门成立。2015年12月,OpenAI公司作为一家非营利组织在美国旧金山成立,以研发对人类社会有益、友好的人工智能技术为使命,特斯拉的创始人马斯克也是该公司创始人之一为公司早期提供了资金支持。2017年谷歌大脑首次提出了基于自我注意力机制的transformer模型,并首次将其用于理解人类的语言,即自然语言处理。
2018年,OpenAI公司推出了具有1.17亿个参数的GPT-1模型。这是一个用大量数据训练好的基于Transformer结构的模型。并改变其性质,宣布成为营利机构,这个改变与Transformer的提出不无关系。2019年,该公司公布了一个具有15亿个参数的模型:GPT-2。该模型架构与GPT-1原理相同,主要区别是GPT-2的规模更大(10倍)。2020年,这个他们再次战胜自己,推出了最新的GPT-3模型——它有1750亿个参数。GPT-3模型架构与GPT-2没有本质区别,除了规模大了整整两个数量级以外。可以根据简单的提示自动生成完整的、文从字顺的长文章编写程序代码、创作菜谱等几乎所有的文本创作类的任务。2022年3月,OpenAI又推出了他们基于GPT-3模型并进行了进一步的微调的InstructGPT模型。该模型模型训练中在事先准备好的数据集的基础上加入了人类的评价和反馈数据。
而在今年神经信息处理系统大会会议期间,OpenAI公司在社交网络上向世界宣布他们最新的大型语言预训练模型ChatGPT。与InstructGPT模型类似,ChatGPT是OpenAI对GPT-3模型(又称为GPT-3.5)微调后开发出来的对话机器人。它与InstructGPT模型是姐妹模型。由于最大的InstructGPT模型的参数数目为1750亿(与GPT-3模型相同),所以有理由相信ChatGPT参数量也是在这个数量级。而根据文献,在对话任务上表现最优的InstructGPT模型的参数数目为15亿,所以ChatGPT的参数量也有可能相当。
![](https://img-blog.csdnimg.cn/img_convert/b41304aabc256ae60f937e974b765461.png)
最初,在自然语言处理领域的主流模型最初是RNN(循环神经网络)模型, 2017年,谷歌大脑团队发表了一篇名为“Attention isall you need”的论文,提出了Transformer模型。而2018年,OpenAI公司便发表了论文“Improving Language Understanding by Generative Pre-training”(用创造型预训练提高模型的语言理解力)推出了具有1.17亿个参数的GPT-1模型。GPT的核心技术是把Transformer的解码器拿出来,在没有标号的大量的文本数据上训练一个语言模型,来获得一个预训练模型,然后再让他在子任务上做微调,得到每一个任务所要的分类器。
BERT的思想是把Transformer的编码器拿出来,收集一个更大的数据集做预训练,效果比GPT好很多。BERT分为BERT Base和BERT Large,其中BERT Base和GPT的模型大小是一样的。GPT-2则是收集了一个更大的数据集,训练了一个更大的模型,比BERT Large大。沿用原来的技术路线深入挖掘语言模型的潜力,而GPT-3对GPT-2的改进则是数据和模型都大了100倍。
![](https://img-blog.csdnimg.cn/img_convert/7c862f3f76746a11c7d7db0e7febd731.png)
由于GPT系列模型的基础架构都是一样的,此刻便以提出GPT-1的论文作为例子进行讲解。
在该文章中,我们可以发现,GPT 采用两阶段过程,第一个阶段是利用无监督形式的语言模型进行预训练,第二阶段通过 Fine-tuning 的模式解决下游任务(监督模式下)。在微调时,通常每个任务都需要有自己的模型,但是在GPT中我们只要很少的改变我们模型的架构,只需要改变与任务相关的输入的形式即可,而不需要改变模型。它把对不同的任务有不同的处理方式。
![](https://img-blog.csdnimg.cn/img_convert/109dbec194927ba8019e87c3ac6f458b.png)
这个是Transformer的基础结构,主要包括四个部分:输入,编码,解码和输出。首先通过词嵌入方法将输入语料转化成特征向量,随后使用位置编码对输入句子进行语序的处理。对于编码器Encoder的部分:有N个相同的Encoder层叠加,每个Encoder层结构包含了两个子层,第一个子层是多头注意力层,第二个子层是前馈连接层。 除此之外,还有一个残差连接,直接将input embedding传给第一个Add & Norm层以及第一个Add & Norm层传给第二个Add & Norm层。MultiHeadAttention(X)和FeedForward(X)是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分,在ResNet中经常用到。而Norm值则是Normalization,通常用于RNN结构,可以将每一层神经元的输入都转成均值方差都一样的,加快收敛。
Decoder:右边解码部分有N个相同的Decoder层结构,相比Endoer,它有三个子层。第一个子层结构是遮掩多头注意力层,第二个子层是多头注意力结构,第三个子层是前馈连接层。
在第一阶段的预训练过程中,对于GPT的基础架构,便是使用Transformer中的Decoder 结构,并对 Transformer Decoder 进行了一些改动,原本的 Decoder 包含了两个 Multi-Head Attention 结构,GPT 只保留了 Mask Multi-Head Attention。
![](https://img-blog.csdnimg.cn/img_convert/540a66fa658724d04889024536554d40.png)
训练好了预训练模型后,后面下游任务的用法便是将NLP中不一样的子任务表示成我们要的形式,表示成一个序列和他对应的标号,如上图所示。NLP中四大常见的应用,第一类是分类,就是说给定一句话或者一个文本来判断它对应的一个标号。比如说一个用户对产品评价正面还是负面的分类,把需要分类的文字在前面放一个初始的词元,在后面加一个抽取的词元,将其做成一个序列,序列放进transformer的解码器里面,然后模型对最后一个词抽取的特征放进一个线性层里面,线性层就投影到标号的空间,就是说如果要做10类分类的话,那么线性层的输出大小就是10。在训练时,对每一个文本和标号对,把文本变成序列,标号就放到线性层参加序列。在预测的时候,只拿到序列信息,对其进行预测就行了。线性层是新加的,就是在微调的时候,里面的可能全都是随机初始化的,输出大小和标号是一致的。
第二个关系是蕴含,给定两段文本,一个三类问题,可以支持、不支持、既不支持也不反对。就是给定一段话,再给定一个假设,判断前面这段话是否蕴含后面的假设。比如说a给b一束花,a爱b,前面这段话就是支持这个假设。在表达的时候就是把两个文本串成一个长的序列,用一个开始符、分隔符和抽取符。
第三个应用是相似,就是判断两段文字是不是相似,比如搜索词和文档是否相似或者两个文档是否相似。因为相似是一个对称关系,a与b相似,b与a也相似,但在语言模型中有一个先后顺序,所以需要做两个序列。这两段序列分别进入模型之后得到输出做加号,输入线性层得到是相似还是不相似的一个二分类问题。
最后是一个多选题,就是问你一个问题然后给定几个答案,从中选取你觉得正确的内个答案。如果有N个答案的话就构造N个序列,其中前面的都是问题,然后每一个答案作为第二段序列放在其中。每一个序列分别进入模型,用一个线性投影层输出大小是1,得到的答案就是问到正确答案的一个置信度,对每一个答案都计算一个这样的标量,最后做一个softmax,最后就知道对于这个问题,正确答案的置信度是多少了。
虽然在应用上长得都不太一样,但是基本都可以构造成一个序列。不管输入的形式怎么变,输出的构造怎么变,中间的transformer模型都不变。预先训练好Transformer模型后,在做下游任务的时候,都不会对这个模型的结构做改变,这也是GPT跟之前工作一个大的区别。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
主流的自然语言处理方法就是对一个任务收集对应的数据集,在上面训练模型做预测,但是泛化性不是很好,就是说一个数据集一个应用上训练好的模型很难直接用到下一个模型上面。GPT-2主要的改进便是把模型和数据集做得更大,并采用了zero-short方法进行训练。在下游任务中会用到 zero-short模型,它不需要下游任务的任何标注的信息。做GPT的时候,在预训练语言模型时是在自然的文本上训练的,但在下游的时候对输入进行了构造,特别是加入了开始符、分隔符和结束符。但是在GPT-2中,在做下游任务时,模型不能再做调整了,输入的形式应更像自然语言,与预训练中的形式一样。
GPT在子任务上面提供一些样本,但是不是在子任务上所有样本的时候,语言模型用最少数的样本极大的提升性能。GPT-2则是在子任务上不提供任何相关的训练样本,直接使用预训练模型去子任务上做预测。GPT-3主要的改进便是把模型和数据集做得更大,采用了few-short方法进行训练。由于1750亿个参数特别大,其另外一个特点便是在作用到子任务上面的时候不做任何的梯度更新或者是微调,但是其性能也很好。
应用:
自美国时间12月2日上线以来,ChatGPT已经拥有超过一亿的用户,也屡次登上新浪微博的热搜。它经过训练可以按照提示中的说明进行操作并提供详细的回复,除了能够回答所想到的各式各样的基础性/常识性/创造性问题,也可以完成包括写代码,修bug(代码改错),翻译文献,写小说,写商业文案,创作菜谱,做作业,评价作业等一系列常见文字输出型任务。其具有不可忽视的优点:AI可以为用户的问题提供更准确和详细的答案,这对于人类专家可能难以回答的复杂技术问题特别有用。又或者是在一些场景里提效,比如减少搜索的工作量使用户能够专注于更重要的任务。但是它带来的缺点也不容忽视,比如虽然表现不错,但整体质量仍难如人意。比如其自动生成的答案可能是错误的;使用者在某些关键领域对使用 AI 生成答案仍有顾虑,可信度较低;其生成答案的算法可能存在偏见;对一些常识性、事实性的内容掌握得并不是很好,经常还是会出现一些不合乎实际的内容;让创作变得不公平(造假/作弊):类似生成假新闻,对内容生态治理造成影响。在某些创作领域,这项技术成为作弊工具,造成一定程度上的不公平。
国内发展:
而随着ChatGPT的走红,国内的公司也作出了一定的表示。在众多科技大厂中,百度是最早针对 ChatGPT 做出明确表态的公司之一。2 月 7 日,百度正式官宣将在 3 月上线百度版 ChatGPT——「文心一言」。华为虽然没有透露对标 ChatGPT 的具体计划,但是其相关负责人表示,公司 2020 年在大模型领域开始有布局,具有鹏程、盘古两大模型。支持丰富的应用场景,在知识问答、知识检索、知识推理、阅读理解等文本生成领域表现突出。腾讯对 ChatGPT 的回应发布于2月9日。表示目前在相关方向上已有布局,专项研究也在有序推进。相关技术储备包括「混元」系列 AI 大模型、智能创作助手文涌(Effidit)等。2月10日,京东云通过公众号发布了将推出「产业版」ChatGPT——ChatJD 的消息,同时公布了 ChatJD 的落地应用路线图「125」计划。基于产业需求,推出的 ChatJD,定位为产业版 ChatGPT,旨在打造优势、高频、刚需的产业版通用 ChatGPT。构建数据和模型的飞轮,以细分、真实、专业场景日臻完善平台能力,最终反哺和完善通用 ChatGPT 的产业应用能力。
除此之外,网易有道 AI 技术团队已投入到 ChatGPT 同源技术 AIGC(AI Generated Content)在教育场景的落地研发中,包括但不限于 AI 口语老师、中文作文打分和评价等。快手也正在开展大规模语言模型(LLM Large Language Model),并启动了相应专项,覆盖 LLM 模型训练、文案自动创作与生成、对话系统开发等领域。
科大讯飞则是在投资者互动平台回应称,ChatGPT 主要涉及到自然语言处理相关技术,属于认知智能领域的应用之一,公司在该方向技术和应用具备长期深厚的积累。科大讯飞 AI 学习机将成为该项技术率先落地的产品,将于今年 5 月 6 日进行产品级发布。360 近日也对外公布,计划推出类 ChatGPT 的 demo 版产品。