大数跨境

ChatGPT:最前沿的自然语言处理技术

ChatGPT:最前沿的自然语言处理技术 数组智控产业发展科技院
2023-07-05
2
导读:文章来源《一本书读懂ChatGPT》ChatGPT的核心技术是什么,它如何实现人类反馈强化学习?ChatGP

文章来源《一本书读懂ChatGPT

ChatGPT的核心技术是什么,它如何实现人类反馈强化学习?

ChatGPT是一个非常出色的自然语言处理模型。它的横空出世,引起了人类不小的轰动。

人们惊叹于它的神奇以及它在自然语言处理领域表现出来的惊人能力,同样对它为什么能拥有这么强大的能力而好奇。

深度学习的发展,推进了自然语言处理技术的发展。

随着大规模预训练模型的出现,自然语言处理技术进入了一个全新的时代。

ChatGPT就是这个时代成功的产物。那么,它到底是怎么做到的?

它在发展的道路又经历了什么?

现在我们就来揭开它神秘的面纱,一起来看看这个神秘的ChatGPT背后的核心技术。

一 ChatGPT的整体技术流程

一个成功产品的出现,离不开它背后的技术。

ChatGPT也不例外,强大的技术核心造就了它的成功。

当强势地出现在大众视野中时,它引起的轰动程度相较于当年AlphoGo(阿尔法围棋)的出世,有过之而无不及。

在本节中我们将看到促使它成功的两大核心技术:Transformer模型和人类反馈强化学习,并猜想一下它的实现过程。

(一)自然语言处理

首先我们来谈谈什么是自然语言处理,大致可以将其分为“自然语言”和“处理”两个部分。

所谓自然语言,就是人类的语言。

我们都知道,人类的语言有很多种,并且使用起来非常灵活。

不同的国家有不同的语言,例如汉语、英语、法语、德语、日语等。

同一种语言在不同的场合下,表达方式也不一样。

比如,在日常生活中,我们的表达更为口语化一些,甚至不必符合语法规则,只要能够让听者理解意思即可。但如果在正式场合,或者以书面形式表达,选择方式就会更正式。

另外一个部分就是“处理”,这里“处理”的操作者并不是指人类,而是指计算机。

整个“处理”过程就是将自然语言输入计算机中,通过计算机对其进行一系列的操作处理,最后产生我们所期望的结果。

自然语言处理的应用非常广泛,例如

信息提取:

通过自然语言处理,可以在指定的文本范围中提取出一些重要信息,例如时间、地点、人物、事件等,帮助人们节省大量时间成本,且效率更高。

智能问答:

可以针对用户的提问,给出合适的回答,例如可以24小时不间断地为客户服务的智能客服。

机器翻译:

将一种语言的文本通过计算机自动翻译成另外一种语言的文本,例如我们熟悉的百度翻译、有道翻译、谷歌翻译等。

舆情分析:

能够通过获取互联网上的海量信息,对舆情进行自动化分析,快速给出当前的热点话题,并对热点话题的传播路径及发展趋势进行分析判断,及时对网络舆情进行监督和掌控,等等。

正如机械对人类的贡献是解放了人类的双手和双脚,自然语言处理则帮助人类处理了大规模的自然语言信息。

随着发展,这项技术可以实现从最初的辅助作用到最终实现替代。

例如,ChatGPT在很多方面几乎可以达到人类的水平。

图2-1 百度翻译

图片来源:百度官网

(二)ChatGPT的核心技术

接下来将介绍ChatGPT的两个核心技术,Transformer和人类反馈强化学习,它们的出现推动了自然语言处理技术突飞猛进的发展。

我们来看看这两个核心技术到底是什么。

首先来介绍Transformer。说到ChatGPT的核心技术,不得不说到的是它使用的一个核心技术模型Transformer。

Transformer,这个词我们可以翻译成“变形金刚”,一个很有意思的名字。

就是这样一个有意思的模型,可以解决我们的大问题。

假如我们要做一项把中文翻译成英文的工作,那么我们希望有这么一个模型。

当我们把中文“早上好!”输入这个模型后,它就可以输出英文“Good morning!”,从而完成了中英翻译的工作。

只要这个模型足够强大,我们就完全可以把它看成一个有经验的翻译官。

现在我们要做的事情就是去生成这样一个有经验的翻译官,而Transformer完全可以胜任这个翻译任务。

Transformer最初的功能就是机器翻译。

在Transformer出现之前,我们一直用RNN(循环神经网络)系列模型来完成机器翻译的工作,这个模型我们会在本章最后一节给大家介绍。

RNN系列模型可以帮助我们实现各种序列化问题,如文本、语音、视频等。

当然,也包括我们这里说的机器翻译。

在很长一段时间之内,RNN系列都是我们处理序列化问题的主要技术。

但是它存在着一些让我们困惑的问题。

例如,RNN模型无法实现并行化处理,因为在它的模型结构中,后续神经元的输入将等待前序神经元的输出。

也就是说,在一个句子中,每个单词都要等待它前序单词的隐藏状态输出以后才能开始处理,这是一个典型的串行结构,对现在大规模并行化的处理模式非常不友好。

如果说这个问题只是影响并行性的话,还有另一个更让人头疼的问题,就是我们常说的“可怕的梯度消失”问题。

这个问题可以导致RNN记性变得很差,并且长期困扰着我们。

具体说来,就是如果输入的语句非常长,网络可能会出现遗忘现象.

例如,我们想让机器生成这么一段话:“丽丽背着书包去上学,这是一个晴空万里的早上,小鸟在歌唱,太阳公公在微笑,路上碰到小朋友对()说:‘早上好,我们一起上学校。’”

那么这里应该用“他”还是“她”呢?

由于这句话太长,网络到了括号这里就不记得前面到底说的是女孩还是男孩,括号内应该填写“他”还是“她”了。

后来人们对RNN进行了改进,例如,著名的长短期记忆网络(LSTM)以及门控循环单元(GRU),在各方面性能上它们确实比RNN提升了不少,但还是存在一定的问题。

随着技术的推进,Transformer应运而生了。

2017年,谷歌在NISP(NeurlPS,神经信息处理系统大会)2017上发表了一篇名为Attention Is All You Need的论文。

这篇文章提出了大名鼎鼎的Transformer模型,从此Transformer在自然语言处理领域中大热起来。

后来取得成功的Bert和GPT都归功于这个模型,当然这都是后话了。

我们回到这篇论文上,Attention这个词,如同它所表达的意思一样,成功引起了我们的注意。

这也是Transformer模型的一个新机制——注意力机制。我们来简单描述一下什么是注意力机制。

当我们听到一段话的时候,这段话中虽然有很多词,但是它们对这句话的贡献并不一样。

我们的注意力总会在那么一两个关键词上。

例如,当你正坐在宿舍悠闲地玩着游戏的时候,突然同学进来对你说:“刚刚我在回宿舍的路上遇到了张老师,他告诉我今天晚上要考试,让我们好好准备一下。”

听到这句话时,你的关注点会在哪里?

这句话虽然很长,但是你并不会关心他是在哪里遇到的老师,而你最关心的应该是,晚上要考试这件事情。

所以你会把整句话的焦点放在“考试”这个词上,这是我们人类在长期训练和实践中练就的能力,无论是声音、文本、图像还是视频,我们都能快速地找出它的关键点所在。

那么,在自然语言处理任务中,如果模型有了这个能力,就能通过对上下文的判断,在众多信息中,知道哪些信息重要,哪些信息并不重要,并将注意力放在那些重要的信息上,这就是注意力机制。

这种机制不仅能用在文本上,同样也能用在图像上。

那么如何对这些注意力进行表示呢?

在该模型中,它是通过权重系数来实现的,那些重要的信息将会有更高的权重,而那些不太重要的信息权重值则非常低。

例如,我们在做机器翻译任务的时候,当我们输入一句中文“我是一名学生”,对应输出的英文应该为“I am a student.”。

这时,在翻译英语单词“student”时,中文单词“学生”的权重将会很高,而其他单词的权重将会相对较低。

有这样一个机制,当我们向模型输入信息的时候,它就能关注到那些有价值的信息。

这里先简单介绍一个概念——词向量。

众所周知,计算机是读不懂人类语言的,词向量就是把一个单词转换成对应向量的表达形式,可以让计算机读取。

在我们对单词做词向量编码的时候,不能只简单考虑当前的这个单词,而是要全局考虑当前这个词的上下文语境。

要将整个上下文语境融入这一个单词的词向量当中。

因为同样一个单词在不同的上下文中,表示的意思可能是不一样的。

例如,“这次没考好没关系,不要有思想包袱”与“小明背着他的小包袱,开开心心地和同学们去郊游”两句话中同样是“包袱”,但所表达出来的意思完全不同,这种现象在自然语言处理中是常见的。

在Transformer中,采用了自注意力机制,将上下文信息融入每个单词,以增强单词的表示,解决了深度网络记性差的问题。

它的原理就是计算文本中的每一个词与所有词之间的“关系”。

例如,有这么一句话,“今天空气很新鲜”,它们对应的词向量分别是V(今天)、V(空气)、V(很)、V(新鲜)。

通过self-attention计算每个单词与所有单词之间的关系,可以得到“新鲜”这个单词的词向量V(新鲜)=0.3*V(今天)+0.3*V(空气)+0.2*V(很)+0.2*V(新鲜)。

如果对每个词向量都做这样的操作,那么每个单词除记录了单词本身,还记录了上下文的信息。

同时,Transformer还采用了多头注意力机制来捕获更多、更丰富的特征。

Transformer就是这样一个基于注意力机制的网络结构,它可以将句子中每个单词与句子中所有的单词(包括要计算的这个单词自己)进行并行计算,得到这个词与句子中每个单词的“关系”,从而确定这个词在整个句子里准确的意义,成功突破了时序序列的屏障。

从最早的机器翻译开始,后来Transformer模型又被应用在了图像、语音、视频等各个领域。

ChatGPT的另一个核心技术就是人类反馈强化学习。

这是最近非常流行的一个技术,它是机器学习中的一个领域。

但是不同于其他经典的机器学习算法,它是通过智能体与环境之间的交互来学习信息的。

例如,我们想训练一个会跳舞的机器人,如果它能跟上节拍作出相应正确的动作,则会给它一个奖励;

如果动作错误,则会给它一个惩罚。

再如,我们想训练一个会下棋的机器人,我们并不会告诉它具体怎么去下棋,而是会给它反馈,如果对弈赢了则给它一个奖励,否则给它一个惩罚。

大家熟知的围棋大师AlphaGo的核心技术之一就是强化学习。可见强化学习是相当实用且强大的。

而ChatGPT使用的技术是人类反馈强化学习,它在强化学习的基础上稍作改进,加入了人工的指导,下面我们就来看看什么是人类反馈强化学习。

DeepMind和OpenAI联合发布的一篇名为Deep Reinforcement Learning from Human Preferences的论文对基于人类反馈的强化学习方法进行了描述。

一般来说,强化学习的整个过程不会受到人类的干预,而人类反馈强化学习则是通过人工标注作为反馈,从而提升了强化学习的表现效果。

当然,我们有这样做的理由。

因为,很多时候通过训练得到的模型并不是那么受我们的控制,如ChatGPT这种对话机器人,我们希望它能完美地回答问题,并符合大众的认知。

但是情况往往可能不尽如人意,例如,你问它:“癞蛤蟆和天鹅谁好看?”它可能会告诉你:“癞蛤蟆好看。”这样的回答是没有任何语法错误的,但结果不太符合我们大众的认知。

这时我们就希望能通过人类对其结果进行评判。

将人类反馈的结果作为强化学习的奖励传递给智能体,基于人类反馈的强化学习就这样应运而生了。

ChatGPT就是在一个预训练语言模型上通过人类反馈的强化学习训练出来的。

下面我们来揭开ChatGPT的神秘面纱,看看它具体是如何操作的。

(三)揭开ChatGPT的神秘面纱

说到ChatGPT,不得不说的是它的“兄弟”InstructGPT。

作为ChatGPT的前辈,与ChatGPT一样,InstructGPT也是OpenAI推出的对话机器人。

随着ChatGPT的爆红,大家对InstructGPT的关注度也越来越高。

截至目前,ChatGPT的论文以及源码都没有被公布出来。但是它与InstructGPT的原理基本相似,所以大家都是通过InstructGPT的论文来猜想和推测ChatGPT的原理和过程的。

我们就在这里给大家浅谈一下ChatGPT的原理。

我们可以看到来自论文Training Language Models to Follow Instructions with Human Feedback中的示意图。

根据InstructGPT的原理作为参考,我们同样将ChatGPT整个学习流程分为三个步骤,这里将分别介绍每个步骤所需要做的事情。

第一步:监督调优(SFT)模型。

这一步主要是收集数据,训练有监督的策略模型。

在训练一开始,需要做的第一件事就是选用一个非常经典的、实用的预训练语言模型作为初始模型。

在ChatGPT中,选用的是GPT-3.5模型。

虽然GPT-3.5已经很强大了,但是它对人类知识的储备还有所欠缺,所以它经常会一本正经地“胡说八道”,例如,

你问它:“糖是甜的还是咸的?”,

它会告诉你:“糖是咸的。”

你问它:“中国的首都是哪里?”

它会告诉你“中国的首都是上海”等一些不太符合人类认知的语句。

所以,我们希望它能具备一些人类的知识,而不会犯一些常识性的错误。

这里ChatGPT采用的方法是找来了大量的人工对GPT-3.5模型进行修正。

人们随机抽取了一些问题,并准确地给出答案,进行人工标注。

将人类的知识告诉模型,例如,

通过问题:“糖是甜的还是咸的?”

标注答案:“糖是甜的。

通过问题:“中国的首都是哪里?”

标注答案:“中国的首都是北京。”

这样让它可以具备一定的人类知识。

当然并不可能将全部的知识标注进去,因为人类的知识非常多,要做到完全标注是不可能的。

在这里也只是对少量的一部分提问进行了标注。

有了这些人工标记的数据就可以通过它们来微调GPT-3.5模型了。

这个被微调过的GPT-3.5模型就被称为SFT模型。

第二步:训练奖励模型(RM)。

通过收集比较数据,来训练奖励模型。

这一步的主要的目的就是训练奖励模型,这个模型可以对监督调优模型的输出进行打分,这个分数反映了被选定的人类标注者的一个偏好,当然这个偏好在大多数情况下是符合人类的共同认知的。

使用奖励模型对监督调优模型的输出结果进行打分,表示这个输出与人类认知的一个契合度(当然,这个“人类”也是有局限性的,它受限于被选定的人类标注者的群体倾向)。

此时,我们已经拥有了监督调优模型。

但是通过它给出的回答,虽然不存在语法错误,但仍然不一定能符合人类的认知倾向,当然这是一件比较主观的事情。

现在我们要做的事情就是要让这个模型拥有和人类一样的认知倾向。

它是如何做的呢?

首先,收集比较数据。

我们向监督调优模型输入一些问题,它会为每个问题生成多个输出。

例如,“你认为西游记中哪个人物最厉害”,该模型可能会输出这样几个结果:“孙悟空”“猪八戒”“土地公”“如来佛”。

这时将会找到许多不同的人类标注者,按照他们自己的认知,对输出的结果进行打分,然后按照分数从高到低进行排序,如A给出的排序是“如来佛”“孙悟空”“猪八戒”“土地公”。

B给出的排序是“孙悟空”“如来佛”“猪八戒”“土地公”。

B给出的排序是“孙悟空”“如来佛”“猪八戒”“土地公”。

C给出的排序是“如来佛”“孙悟空”“猪八戒”“土地公”。

不同的人对此问题有不同的见解,所以在这种情况下个人的主观意识比较强。

这里会找很多人,将会产生很多种不同的排序。

虽然不可能所有人给出的排序结果一模一样,但是这个结果应该是符合大众的认知的。

例如,多数人应该不会认为“土地公”是西游记中最厉害的人物。

得到比较数据后,将这些数据去训练一个奖励模型。

一个好的奖励模型,可以对模型的回答结果进行一个很好的评价,并给出奖励。

第三步:使用近端策略优化模型(PPO)微调监督调优模型。

这一步的目的就是用强化学习近端策略优化方法来微调监督调优模型。

首先使用监督调优模型(第一步中得到的模型)初始化近端策略优化模型,价值模型为训练奖励模型(第二步中得到的模型)。

随机向近端策略优化模型进行提问并得到回答,由奖励模型对回答进行评估和打分。

通过这个分数更新近端策略优化模型,使模型得到的分数越来越高。

其中第二步和第三步会迭代进行,使训练奖励模型和近端策略优化模型越来越强大。

二 ChatGPT背后的GPT-3.5语言模型

ChatGPT的火爆出圈得益于预训练语言模型,早期人们在自然语言处理领域做了非常多的研究和尝试,但是效果差强人意。

直到预训练语言模型的出现才将自然语言处理技术推到了一个新的高度。

正如我们目前所惊叹的ChatGPT,强势地进入大众视野中。

下面让我们透过ChatGPT来看看成就它的预训练语言模型到底是什么。

(一)预训练语言模型

2017年,Transformer模型诞生了,它标志着一个新时代的开始,从此预训练语言模型开启了新篇章。

这是自然语言处理领域近几年最大的突破之一。

在介绍预训练语言模型之前,我们先来了解一个概念——迁移学习。

假设这里有一个场景:“你曾经是一名网球爱好者,今天天气很好,你的朋友约你去打壁球,但是你根本就没打过壁球,本想拒绝,但又经不住朋友的盛情邀请,还是一起去了。

到了球场后,你将打网球的经验用在了打壁球上。

你惊喜地发现很快你就能熟练地掌握打壁球的技巧,而且发挥得还不错。”

这说明,当你有某一个行业经验的时候,你可以将它迁移到其他相近的行业上。这就是迁移学习。

预训练模型就很好地利用了迁移学习这一特点,它先学习知识,此时没有任何具体的任务。

把基础知识学扎实之后,需要它做具体任务的时候,再进行微调。

就好比我们培养一个小朋友,我们不知道他长大以后会从事哪个行业,但是我们会让他学习很多基础知识,具备一定的知识积累。

当他再去从事具体行业做具体事情的时候,就能利用他所掌握的知识快速上手了。

其实预训练模型并不是自然语言处理领域的“首创”技术。

在计算机视觉领域,也会经常用到预训练模型,因为我们在做如图像识别、目标检测、图像分割、图像分类等具体任务时,会因为各种原因导致训练结果不理想,所以常用的方法是采用在大规模标准数据集(如ImageNet数据集)上训练出来的预训练模型为基础,让模型先学习如何从图片中提取特征等一些基本技能,然后再根据具体任务进行微调使其能更好地完成指定任务。

预训练语言模型就是从大规模的文本数据中预先学习人类的语言知识,如学习单词的用法、语句之间的上下文关系、语法知识等,得到一个通用的文本模型。

基础打扎实,在后期有具体任务的时候,我们就可以将这个预训练语言模型拿过来,再对其进行微调,使其能够做一些具体任务。

例如,与搜索引擎结合,去处理搜索类的任务。

换句话说,预训练语言模型就是在大规模的语料库上进行预先训练,从而学习到人类语言的知识,它是后期做具体任务的基础模型。

我们这里说的火爆全球的ChatGPT则是基于预训练语言模型GPT-3.5优化后的一个模型。

可以将ChatGPT理解为一个具有强对话功能的通用机器人。

GPT-3.5前面有很多迭代的版本,下面对GPT的发展历史进行介绍。

(二)GPT发展史

2018年,有两个非常厉害的语言模型横空出世了。

一个是GPT,另一个就是Bert。

它们都是在超大规模的数据中心中训练出来的,其核心都是我们在本章第一节中所介绍的Transformer网络。

从这个时候开始,语言模型走上了辉煌之路。

既然说到了GPT,我们也顺便说说与它同时出世的Bert。

Bert是谷歌公司推出的,它的拿手好戏是做完形填空,例如,“我喜欢()的四季如春,有机会我一定要去昆明旅游”。

Bert可以利用上下文来确定括号内应填写的这个词大概率是“昆明”。

而与Bert擅长做完形填空不一样,GPT擅长根据前文来预测下一个词,例如,根据“我希望明天天气”来预测后面的单词是“好”。

GPT,我们把它翻译过来,就是生成式预训练模型。

它是一种深度学习模型,可以用于自然语言处理任务,主要用于生成文本。

当我们向它输入一个文本的时候,它会根据任务要求输出一系列新文本。

从这一点上来看,GPT做的事情好像比Bert更难一些。

总的来说,GPT是一种非常强大的自然语言处理模型,能够在诸多自然语言处理任务中取得让人惊叹的效果,尤其是现在火爆全球的ChatGPT。

当然,从第一代GPT到现在的ChatGPT, GPT的发展也经历了好几个版本。

我们依次来看看它的历代版本以及它们的贡献。

2018年,一篇名为Improving Language Understanding by Generative Pre-Training的论文开启了GPT的新篇章,GPT-1正式与世人相见了。

GPT-1的模型结构比较简单,包括12层Transformer,每一层拥有12个注意力头。

它使用的BooksCorpus数据集,大概拥有5GB的文本量,1.17亿参数量。

从这些数据可以看出,GPT-1并不是很大。GPT-1是自回归语言模型的代表。

所谓自回归语言模型,我们可以将其简单理解为就是一个词一个词地往后进行预测,主要是通过在无标签的数据上学习到一个通用的语言模型,之后再根据特定的任务进行微调。

对于GPT-1来说,所有的下游任务都需要再做微调。

这就好比一个公司招聘了一名新员工,虽然他的能力非常不错,但是在他做每项工作之前还需要再学习培训一段时间。

但对于公司领导而言,他还是希望能招聘来一名不需要再培训就能直接工作的员工。

在这里同样希望模型在对待下游任务时,不需要再做微调。

当然,此时的GPT-1是做不到的,直到2019年GPT-2出现。

2019年,可能大家熟知GPT-2是从一句“Too Dangerous To Release”的回复开始的。

OpenAI称GPT-2如果不加任何限制就直接开源发布的话,实在是太危险了。

GPT-2无论是文本量还是参数量都比GPT-1大了很多。

GPT-2通过抓取美国社交新闻网站Reddit上拥有点赞数超过3个的文章,获得了大概40GB的文本数据,称其为WebText。

同时模型结构也较GPT-1有轻微改变,模型规模也大了很多,参数量增加到了15亿。

当然,主体上还是Transforme模型。

与GPT-1的语言理解工作不同,GPT-2发现了它更擅长的东西——生成。

例如,它拥有智能问答、机器翻译、写文章、写故事、写剧本等一系列让人震惊的应用,且从它发布的论文来看,效果还是很不错的。

GPT-2同样也是使用自回归语言模型来进行预测的,但是它会不会陷入死循环呢?

例如,我们让它生成一个故事,它告诉我们:“从前有座山,山上有座庙,庙里有个老和尚在给小和尚讲故事,从前有座山,山上有座庙……”可能会如此循环下去,所以我们希望模型能有点多样性,不那么单调。

那么,如何让GPT-2能生成具有多样性的文本呢?这就与采样策略有关了。

一般来说,模型预测下一个单词时,会给出概率最大的那个。

为了让生成的词语有更大的多样性,GPT-2可以对采样策略中的参数进行调整,实现多样性的输出。

与GPT-1相比,GPT-2的真正强大之处在于,它可以去做Zero-Shot任务,Zero-shot任务也叫零样本任务

它只通过一则任务说明,没有任何范例,直接生成任务要求的数据。

刚刚我们在介绍GPT-1时说,GPT-1对于所有下游的任务都需要再做微调,但对GPT-2来说就不需要了。

它可以通过一些提示,暗示模型需要完成什么任务。

例如,我们想让模型做一项翻译任务,只需要给模型一段提示。

例如,“请将中文翻译成英文:学生=>”,模型会输出“student”。

这里就不需要模型再为此任务去做训练了。

所以相较于GPT-1,GPT-2实现了无须对下游任务再做微调。但是它这样做的效果真的很好吗?

时间来到了2020年,GPT-3问世了。

相较于前一个版本GPT-2,它的模型更大了,数据也更多了。

除了之前GPT-2用的WebText数据集的加强版,还增加了图书、维基百科、Common Crawl等数据集,共45TB(太字节)的文本,其中纯文本就达到了570GB(吉字节)。

并且其中的数据包罗万象,可以说它上通天文、下知地理。GPT-3坐拥1750亿个参数,是GPT-2的100多倍。

GPT-3在许多自然语言处理任务上均表现出了非常出色的能力,如机器翻译、智能问答、即时推理、文本填空等,还有一定数学计算的能力。

GPT-3预计每天能产生450亿个词。

GPT-3在GPT-2的基础上继续进行了改进。除了GPT-2中的Zero-shot任务,GPT-3增加了2种任务,具有“Few-shot”,“One-shot”和“Zero-shot”3种核心的下游任务方式。

我们来分别解释一下这3种任务方式。

Zero-shot任务,在GPT-2中我们已经介绍过了,它没有给出任何范例,只输入一则任务说明。

One-shot任务,可以输入一个例子和一则任务说明,例如,“请将中文翻译成英文:朋友=>friend,学生=>”,模型会输出“student”。Few-shot任务,可以输入多个例子和一则任务说明。

例如,“请将中文翻译成英文:朋友=>friend,计算机=>computer,数据=>data,学生=>”,模型会输出“student”。

从GPT-1、GPT-2到GPT-3,其核心改变并不是很多,但是模型参数的数量和文本的数据量越来越多。

深究ChatGPT的结构,我们能发现ChatGPT是在预训练语言模型GPT-3.5的基础上优化得到的一个模型。

OpenAI在GPT-3的模型上又做了一些改进,得到了GPT-3.5模型。

GPT-3.5重点的训练过程就是人类反馈强化学习。

三 深度学习技术演进带来ChatGPT

ChatGPT并不是凭空出现的,我们可以透过它看到人类在自然语言处理领域的研究历程。

在深度学习技术出现之前,自然语言处理领域使用的是一种基于统计学的自然语言处理技术,虽然现在我们回头再看这种技术会发现其中诸多的不足,但是它也曾经极大地影响了自然语言处理技术的发展,让自然语言处理技术从实验室走向了实际应用。

直到深度学习技术的出现,其应用到了自然语言处理领域,极大地推动了自然语言处理技术的飞速发展。

(一)基于统计学的自然语言处理技术

语言,是人类的专属特性。虽然动物也会通过叫声来进行简单的交流,但那不能称为语言。

虽然我们现在还不知道语言模型是什么,但从这个词的出现频率来看,应该是个非常重要且厉害的家伙。

正所谓应用驱使技术的发展,人们幻想能像鸟儿一样在天上飞翔,促使了飞机的发展,人们幻想机器能与人类进行语言交流,促使了自然语言处理技术的发展。

但是语言的应用存在极大的灵活性,如很多发音一样的单词,在不同的地方是不同的单词。

假设我们做了一个语音识别系统,向计算机输入一段音频,语音识别系统会生成多个句子作为候选句,但是哪个句子更为合理呢?

例如,当它听到一句语音输入时,输出“今天的夜空非常美,无数颗星星在向我眨眼睛”,或者“今天的夜空非常美,无数颗猩猩在向我眨眼睛”。

输出的语句中“星星”和“猩猩”同音,如果按照语音的输出,这两个词都没有问题,但哪个更为合理呢?

很显然是前者,大猩猩不可能在天上眨眼睛。

这时就该语言模型上场了,它可以对这些候选句子按照概率进行排序。

概率最大的那个就是语言模型认为最合理的句子。

如今语言模型的应用范围早已扩展到了自然语言处理的各个领域,如智能问题、机器翻译、文摘等。

语言模型任务当选为自然语言处理领域的核心任务是毫无疑问的。

语言模型通过计算句子的概率来判断句子的合理性。

是不是觉得很神奇,那它是怎么工作的呢?

世界著名的语音识别和自然语言处理专家弗莱德里克·贾里尼克(Frederek Jelinek)提出了一个假设:“一个句子是否合理,取决于它出现在自然语言中的可能性。”

这就是统计学语言模型的基础原理,并在此原理基础之上提出了基于统计的语音识别框架,将当时的语言识别率从70%提高到了90%。

刚刚我们提到过,语言模型是按照概率对句子进行排序的。

所以对于语言序列,语言模型的任务就是计算该序列的概率,如计算句子“小猫在院子里面晒太阳”的概率。语言模型的任务就是对每个句子在语言中出现的概率进行预测。

那么一个好的语言模型要做到的事情就是:对于一个合理的句子,语言模型应该给它一个相对高的概率,对于一个不合理的句子,语言模型应该给它一个相对低的概率,最好是趋近于零。

简单来讲,语言模型就是用来给语言进行打分的方法。

例如,我们这里有一个句子,“小猫在院子里面晒太阳”。

我们可以将它看成一系列单词的序列,如(小猫、在、院子、里面、晒太阳),统计语言模型可以赋予这个序列一个概率,我们用P(小猫,在,院子,里面,晒太阳)来表示,通过计算这个概率值来衡量该序列是否符合自然语言的语法和语义规则。

那么,现在要做的事情就是训练一个好的语言模型。

假设要创建一个中文的语言模型,首先需要一个大型的语料库,这个语料库中的词可以来自各大书报杂志、传记名著、百科知识、互联网等。语料库越大,能训练的样本就越多。

假设现在已经有了一个较为丰富的语料库,下一步就可以来计算P(小猫、在、院子、里面、晒、太阳)的值了。

在统计学语言模型时代,我们通过以下这个式子来完成句子的概率计算:

P(小猫、在、院子、里面、晒、太阳)=P(小猫)P(在|小猫)P(院子|小猫、在)P(里面|小猫、在、院子)P(晒|小猫、在、院子、里面)P(太阳|小猫、在、院子、里面、晒)。

就是说我们只需要计算P(小猫)、P(在|小猫)、P(院子|小猫、在)、P(里面|小猫、在、院子)、P(晒|小猫、在、院子、里面)以及P(太阳|小猫、在、院子、里面、晒)的值,然后把这些值相乘,就可以得到这个句子最终的打分了。

现在简单地解释一下每个参数的意思以及如何去计算这个值。

P(小猫)这个参数非常容易得到,即“小猫”这个词出现的次数相对整个语料库中所有词语总数的比例,从这里看,其实就是做了一个计数工作。

我们再来看P(在|小猫),与刚刚计算P(小猫)不一样,这是一个条件概率,表示在“小猫”这个词出现之后,“在”这个词出现的概率。

这里根据贝叶斯定理的思想,P(在|小猫)=C(小猫、在)/C(小猫),这里的C(小猫)表示“小猫”这个词在语料库中出现的次数,C(小猫、在)表示“小猫”“在”两个词同时在语料库中出现的次数,P(在|小猫)就是当“小猫”这个词出现的时候,“小猫”“在”同时出现的概率。

同样,P(院子|小猫、在)就是计算“小猫”“在”“院子”同时出现的次数与“小猫”“在”同时出现次数的比例。

后面几个参数的计算方法都是一样的。这时问题又来了,语言是非常灵活的,语言空间也是非常大的,尤其是越长的句子,参数也会越多,计算量也会越大。

有人说,大没关系,我们的计算能力在不断地提高,大规模计算不在话下。

但是又有另一个问题出现了,如果这句话在语料库中没有出现过呢?

这时统计学语言模型会给一个非常低的得分,但是这句话也有可能是符合要求的。

这样看来,好像不太符合常理。

当然我们可以去扩大语料库的容量,也可以对其统计方法进行改进,如后来常用的N-gram语言模型。

N-gram语言模型是统计语言模型中的一种经典模型。

统计语言模型是一种基于概率的判别模型。由于模型会存在因语料库中没有出现而对语句进行误判的情况,N-gram语言模型对上述方法稍作了改变。

N-gram语言模型依据马尔可夫(Markov)假设,未来的事件只取决于有限的历史信息。

N-gram语言模型认为第N个词出现只与它前面的N-1个词相关。通过这样的假设,N-gram语言模型大大简化了语言模型的计算。

如果是1-gram语言模型,则P(小猫、在、院子、里面、晒、太阳)=P(小猫)P(在)P(院子)P(里面)P(晒)P(太阳)。

如果是2-gram语言模型,则P(小猫、在、院子、里面、晒、太阳)=P(小猫)P(在|小猫)P(院子|在)P(里面|院子)P(晒|里面)P(太阳|晒)。

N-gram语言模型以此类推。

当然基于这样统计假设的语言模型一定会有它的弊端,它对前序任务如分词、词性标注、实体抽取步骤的依赖性很强,如果前序工作没有做好的话,它的工作效果也会受到影响。

(二)深度学习分水岭

2003年,一个在深度学习领域极具影响力的人物,2018年图灵奖获得者、人工智能先驱、深度学习三巨头之一的约书亚·本吉奥(Yoshua Bengio)发表了一篇论文A Neural Probabilistic Language Model。

首次提出了用神经网络来训练语言模型。

这个神经网络模型有预测的功能,当向其输入一句话中的前面几个单词的时候,神经网络就会输出紧接着的单词应该会是什么。

与上面讲的概率统计语言模型一样,它也是通过概率来判断的。只不过这里利用的不是统计学,而是用神经网络来计算句子的概率,并提出了可以用数学的方式去表示每个词语。

例如,大家较为熟悉的词袋模型(Bag-of-words model),它是一种在自然语言处理和信息检索下被简化的表达模型。

我们可以形象地解释,意为将文本表示为装着其中单词的袋子。

但是这种表示方式只保存了每个词出现的次数,而没有表示它们出现的顺序。

出于种种原因,这种语言模型并没有立即火起来,而是在自然语言处理行业里沉寂了10年,直到2013年才真正引起了人们的关注。

因为在这一年谷歌推出了一个影响自然语言处理领域技术的里程碑式的模型——词向量模型,它将输入的词编码转化成为稠密的向量,并且如果是相似的词,它们对应的词向量也会相近。

它在本质上也是神经概率语言模型,遵循着这样的基本思想:在一个句子中,一个单词只与在它周围的若干单词相关性较强,而与其他那些不在它周围的单词相关性较差。

根据这样的基本思想,可以构建神经网络对当前单词和其上下文单词进行模型训练,最终得到词向量。

这样从一定程度上可以表示出当前单词与上下文之间的关系。

它主要包括两个模型:CBOW和Skim-gram。CBOW主要是根据当前单词的上下文单词来预测当前单词,例如,“今天天气(),非常适合去爬山”。

而Skim-gram和CBOW相反,它输入当前单词,要求网络预测它的上下文单词,例如,“()天气()”。

可以用什么网络呢?有人认为可以使用标准的深度神经网络来处理。

只要它层次够深,提取它的特征毫无问题。

这是将序列数据作为深度神经网络的输入。

在传统的深度神经网络模型中,分为输入层、隐藏层以及输出层,每一层都有很多神经元,层与层之间是全连接的,同一层之间的神经元是无连接的。

但是使用这种标准的深度神经网络存在着一些问题。

标准的深度神经网络的输入层和输出层神经元的个数是固定的,但是我们的句子长度是不固定的。

例如,这里需要模型做一个机器翻译的工作,假设我们输入的语句是“我是一名学生”。

包括标点符号,它的长度是7,如果我们想让模型再翻译另外一句话,“今天的天气非常好”,包括标点符号,它的长度是9,那么我们如何设计一个固定输入数的神经网络来完成这个任务呢?

当然这里可以使用最浪费空间的方法来解决此问题,设定一个最大值(该值超过所有可能的句子长度),保证每一句话都能有足够的空间顺利传入网络,多余的部分可以输入0。

但是它们实现不了参数共享,假如要做的任务是对输入文本进行地名识别。

例如,“北京”,作为一个地名,在文本中很多地方都是指地名,但如果我们实现不了参数共享,那么每个“北京”都是一个个孤立的个体,这样就需要更多的参数,做更多的计算。

在那个时期,深度学习界又发生了一件轰动计算机视觉领域的事情。

2012年,杰弗里·辛顿(Geoffrey Hinton)和他的学生亚历克斯·克里热夫斯基(Alex Krizhevsky)利用AlexNet网络在2012年ImageNet大规模图像识别竞赛中以84.7%的Top5正确率获得冠军。

该比赛是在拥有大概100万张图像,且1000个类别的图像数据集上进行的。

由此,以AlexNet网络为代表的卷积神经网络在计算机视觉领域中取得了里程碑式的成功。在随后的几年里,各种卷积神经网络模型一直保持着冠军地位,且正确率也直线上升。

直到2015年,微软提出了一种残差网络,它的Top5正确率高达96.43%,甚至超过了人类的水平,当然这是后话了。

这时研究自然语言处理的专家们看到了契机,是否也能将卷积神经网络应用在自然语言处理的领域中呢?

随后的几年中,研究论文层出不穷地出现。

但是对于图片数据来说,它们之间都是孤立的,没有什么先后关系。

而在现实中,很多数据都是序列化数据,它们之间存在着紧密的先后顺序,如股票数据、语音数据、视频数据等。

所以,在处理这种存在先后关系的序列性数据时,卷积神经网络就不是特别适合了。

为了捕获自然语言的长程性特征,一个更适合的模型——循环神经网络就应运而生了。

循环神经网络是一种非常著名且实用的深度神经网络,在自然语言处理的多个任务上都取得了非常好的成绩。

从此,循环神经网络就成了自然语言处理最常用的方法之一,它拥有一个不断循环隐藏层的结构,这样的结构特征具体地表现为每一个隐藏层的输入不仅受当前层输入的影响,还受到来自上一个时间步输出的影响。

也就是说这个网络是具有记忆功能的。

换句话说,理论上只要输入循环神经网络中的数据,网络都会记录下来。

当然这只是理论上,实际上这类网络也存在着记忆力不好的问题(本章第一节已提到)。

所以理论上,循环神经网络能够对任何长度的序列数据进行处理,但是实际上还是会存在不同的问题,例如,时间复杂度高、记性差等。

后来大量的实际应用推进了技术的发展。

很多学者都在此模型基础上对其进行了改进,其中最有名的是长短期记忆网络以及门控循环单元。

它们可以用在很多序列性数据问题上,如语音识别、机器翻译、视频动作识别、命名实体识别等。

但正是因为循环神经网络以及类循环神经网络模型引入了时间步这个操作,因此它们必须等待上一步的操作结果出来后才能进入下一步的计算。

也就是它们共同的一个特点:串行处理机制,这就导致了它们的并行化计算很难实现。

直到2017年谷歌的一篇论文Attention Is All You Need发表,这标志着大名鼎鼎的模型Transformer出世了。

Transformer使用注意力机制来捕获输入和输出之间的关系,从而使整个架构更加并行化。

这也将自然语言处理的发展推向了一个新的时期——预训练语言模型时期。

ChatGPT就是这个时代的产物。

技术的发展从未停滞过,GPT-4于2023年3月14日与世人见面了。

GPT-4模型肯定会较现有模型在速度上更快,在安全性、准确性上更好。

GPT-4同样也具有代码生成、语言翻译、文本摘要、分类、聊天机器人和语法校正等各种应用。

GPT-4的回答准确性不仅大幅提高,还具备更高水平的识图能力,且能够生成歌词、创意文本,实现风格变化。

此外,GPT-4的文字输入限制也提升至2.5万字,且对于英语以外的语种支持有更多优化。

图2-2 OpenAI推出的GPT-4

图片来源:中新图片/王冈

       

【声明】内容源于网络
0
0
数组智控产业发展科技院
以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
内容 986
粉丝 0
数组智控产业发展科技院 以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
总阅读1.6k
粉丝0
内容986