赞
踩
GPT的火爆程度,一下子让AI更接地气了,菜场大妈都开始讨论它了。GPT可以说是近期AI领域的突破性创新产品,为了加深自己对GPT的理解,特别整理了一篇文章,用于消化学习GPT,如果对大家有帮助甚好。(延伸阅读部分用斜体字标注)
GPT(Generative Pre-Training)是NLP领域的最强模型,NLP是(Natural Language Processing)自然语言处理的缩写,NLP是AI领域的一个重要方向,NLP又分为自然语言理解(NLU)和自然语言生成(NLG),前者是计算机能够理解人类自然语言的意思,后者是计算机能用自然语言来表达意图和思想。
要理解GPT,首先要了解NLP的发展历史。NLP总体分为3个阶段:从规则到统计,从统计到深度学习的过程,到深度学习阶段的下半场就出现了GPT,所以前两个阶段可以称为GPT前传,第三个阶段中包含GPT正传。
一、GPT前传
1、基于规则模型的阶段:20世纪50年代到70年代
1950年图灵提出了著名的“图灵测试”,这一般被认为是自然语言处理思想的开端,20世纪50年代到70年代自然语言处理主要采用基于规则的方法,研究人员们认为自然语言处理的过程和人类学习认知一门语言的过程是类似的,所以大量的研究员基于这个观点来进行研究,这时的自然语言处理停留在理性主义思潮阶段,以基于规则的方法为代表。但是基于规则的方法具有不可避免的缺点,首先规则不可能覆盖所有语句,其次这种方法对开发者的要求极高,开发者不仅要精通计算机还要精通语言学,因此,这一阶段虽然解决了一些简单的问题,但是无法从根本上将自然语言理解实用化,离通用的自然语言处理就更远了。
2、基于统计模型的阶段:20世纪70年代到21世纪初
70年代以后随着互联网的高速发展,丰富的语料库成为现实以及硬件不断更新完善,自然语言处理思潮由经验主义向理性主义过渡,基于统计的方法逐渐代替了基于规则的方法。贾里尼克和他领导的IBM华生实验室是推动这一转变的关键,他们采用基于统计的方法,将当时的语音识别率从70%提升到90%。在这一阶段,自然语言处理基于数学模型和统计的方法取得了实质性的突破,从实验室走向实际应用。
在这个阶段,大家开始尝试通过对大量已存在的自然语言文本(我们称之为语料库)进行统计,来试图得到一个基于统计的语言模型。比如通过统计,肯定可以确定“吃”后面接“饭”的概率肯定高于接其他词如“牛”的概率。虽然这个阶段有很多模型被使用,但是本质上,都是对语料库中的语料进行统计,并得出一个概率模型。一般来说,用途不同,概率模型也不一样。不过,为了行文方便,我们接下来统一以最常见的语言模型为例,即建模“一个上下文后面接某一个词的概率“。刚才说的一个词后面接另一个词的概率其实就是一元语言模型。在这里,我们很适合插播一下模型表达能力这个概念。
模型的表达能力
模型表达能力简单来说就是模型建模数据的能力,比如上文中的一元语言模型就无法建模“牛吃草”和“我吃饭”的区别,因为它建模的本质统计一个词后面跟另一个词的概率,在计算是选“草”还是选“饭”的时候,是根据“吃”这个词来的,而“牛”和“我”这个上下文对于一元语言模型已经丢失。你用再多的数据让一元语言模型学习,它也学不到这个牛跟草的关系。
模型参数数量
有人说,既然如此,为啥我们不基于更多的上下文来计算下一个词的概率,而仅仅基于前一个词呢?OK,这个其实就是所谓的n元语言模型。总体来说,n越大,模型参数越多,表达能力越强。当然训练模型所需要的数据量越大(显然嘛,因为需要统计的概率的数量变多了)。
模型结构
然而,模型表达能力还有另一个制约因素,那就是模型本身的结构。对于基于统计的n元语言模型来说,它只是简单地统计一个词出现在一些词后面的概率,并不理解其中的各类文法、词法关系,那它还是无法建模一些复杂的语句。比如,“我白天一直在打游戏”和“我在天黑之前一直在玩游戏“两者语义很相似,但是基于统计的模型却无法理解两者的相似性。因此,就算你把海量的数据喂给基于统计的模型,它也不可能学到ChatGPT这种程度。
上文提到,统计语言模型的主要缺点是无法理解语言的深层次结构。曾有一段时间,科学家们尝试将基于规则的模型和基于统计的模型相结合。不过很快,风头就被神经网络抢了过去。
与简单的基于统计的模型相比,循环神经网络(RNN)的主要亮点就是能够对一段文字中不同词之间的关系进行建模,这种能力在一定程度上解决了基于统计的模型无法理解深层次的问题,即能解决时序的问题。
我们知道人类并不是从零开始思考东西,就像你读这篇文章的时候,你对每个字的理解都是建立在前几个字上面。你读完每个字后并不是直接丢弃然后又从零开始读下一个字,因为你的思想是具有持续性的,很多东西你要通过上下文才能理解,所以就有了RNN(Recurrent Neural Network)循环神经网络。
3.1、循环神经网络RNN(Recurrent Neural Network)和长短期记忆网络LSTM(Long Short-Term Memory)
RNN是一类用于处理序列数据的神经网络。RNN的状态,不仅受输入影响,还受前一时刻状态的影响。RNN分为输入和输出,上一次输出是下一次输入,这样就建立起了上下文,做出更为有效的输出。在最近的几年,RNN在很多方向上都取得了成功:比如语音识别,语音模型,翻译,图片注释等等。
但是RNN也有两个问题:效率问题和长期依赖问题。
效率问题是RNN需要逐个词进行处理,后一个词要等到前一个词的隐状态输出以后才能开始处理。
注意:隐状态输出是指:即是中间态的输出。输入一个序列,把这个序列从左往右地往前做,对中间第n个词会计算一个输出 (也叫隐藏状态),不是最终输出。
长期依赖问题是指指当前系统的状态,可能受很长时间之前系统状态的影响。当RNN传递距离过长会有梯度消失(Vanishing)、梯度爆炸(Exploding)和遗忘问题。
举个例子:如果从“今天气温35度,天气很?”来预测下一个词,是很容易得出“热”结果的。但是如果有这么一句话,“他吃了一口菜,被辣的流出了眼泪,满脸通红。旁边的人赶紧给他倒了一杯凉水,他咕咚咕咚喝了两口,才逐渐恢复正常。他气愤地说道:这个菜味道真?”,让你从这句话来预测下一个词,确实很难预测的。因为出现了长期依赖,预测结果要依赖于很长时间之前的信息。
理论上,通过调整参数,RNN是可以学习到时间久远的信息的。但是,实践中的结论是,RNN很难学习到这种信息的。RNN 会丧失学习时间间隔较大的信息的能力,导致长期记忆失效。
正是因为有这两个问题,所以LSTM就被提出来了。现在很多问题的成功都必须归功于LSTM,它是RNN的一种,它在许多的任务中表现都比普通的RNN更好。LSTM被明确设计来避免长期依赖问题,记住长时间的信息对LSTM来说只是常规操作,不像RNN那样费力不讨好。
LSTM的关键是Cell State(神经元状态),Cell State就像是一条传送带。它作用于整个时序链条,在运行的过程中保留着深度的记忆。信息很容易就在这个传送带上流动但是状态却不会改变。Cell State上的状态相当于长期记忆,而自身的单个神经网络的则存储着短期记忆。LSTM之所以可以将长期记忆有选择性的加入到Cell中,关键的结构是一个称之为门(Gate)的结构。门是一种选择性地让信息通过的方式,使得LSTM有能力删除或者增加Cell State中的信息。
虽然RNN演变到LSTM,有了不小的进步,但是实际上在现实实践中还是有两个局限性:
(1)计算能力的限制:当要记住很多“信息“,模型就要变得更复杂,然而目前计算能力依然是限制神经网络发展的瓶颈。
(2)优化算法的限制:LSTM只能在一定程度上缓解RNN中的长距离依赖问题,且信息“记忆”能力并不高。
这样就开始尝试在NLP中应用注意力机制(Attention Mechanisms ),改善上面两个问题,核心目的就是让LSTM有选择性的挑选信息。
「注意力机制」可以看做是一种仿生,是机器通过对人类阅读、听说中的注意力行为进行模拟。
那为何要对「注意力」进行仿生呢?
按理说,计算机理应拥有无限的记忆力和注意力,这不是一件好事么?为什么我们特意对计算机进行“劣化”来模拟这一项机制呢?
这是因为,人脑在进行阅读任务、读图任务时,并不是严格的解码过程,而是接近于一种模式识别。简单理解就是大脑会自动忽略低可能、低价值的信息。为了让计算机更加适应人类交流场景,我们必须教会计算机选择遗忘和关联上下文,这种机制就是所谓的「注意力机制」。
严格来说,「注意力机制」更像是一种方法论。没有严格的数学定义,而是根据具体任务目标,对关注的方向和加权模型进行调整。简单的理解就是,在神经网络的隐藏层,增加「注意力机制」的加权,使不符合注意力模型的内容弱化或者遗忘。可以简单理解为,每一个神经元都具有输入门、输出门、遗忘门。输入门、输出门将LSTM神经元首尾连接在一起,而遗忘门将无意义内容弱化或遗忘。「注意力机制」就应用在LSTM的遗忘门,使得机器阅读更加贴近于人类阅读的习惯,也使得翻译结果具有上下文联系。
为了更便于理解注意力机制,举个例子,“注意力机制”常见应用场景,在机器视觉中的精细分类、图像分割、图像焦点等场景下应用注意力机制,例如,识别鸟类的品种问题。对于鸟品种的精细分类,对结果影响最大的可能是鸟类的头部,通过「注意力机制」将头部的特征强化,而忽略其他部分(羽毛、爪子),以实现区分鸟类的具体品种。
背景知识:
Attention 机制最早是在视觉图像领域提出来的,应该是在九几年思想就提出来了,但是真正火起来应该算是 2014 年 Google Mind 团队的这篇论文 Recurrent Models of Visual Attention(https://arxiv.org/abs/1406.6247),他们在 RNN 模型上使用了 Attention机制来进行图像分类。
随后,Bahdanau 等人在论文 Neural Machine Translation by Jointly Learning to Align and Translate (https://arxiv.org/abs/1409.0473)中,使用类似 Attention 的机制在机器翻译任务上将翻译和对齐同时进行,他们的工作算是第一个将 Attention 机制应用到 NLP 领域中。
接着 Attention 机制被广泛应用在基于 RNN/CNN 等神经网络模型的各种 NLP 任务中。2017 年,Google 机器翻译团队发表的 Attention is All You Need (https://arxiv.org/abs/1706.03762)中大量使用了自注意力(self-attention)机制来学习文本表示,并开创性的提出了Transformer模型,成为诞生GPT的基础。
注:自注意力机制(self-attention)是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。自注意力机制在文本中的应用,主要是通过计算单词间的互相影响,来解决长距离依赖问题。
3.3、Transformer模型
接下来,我们终于可以讲解NLP跨越式发展的标志之一Transformer模型。
transformer模型是一种采用自注意力机制(self-attention)的深度学习模型,这一机制可以按输入数据各部分重要性的不同而分配不同的权重。这使得单词之间的关系更加复杂,含义也更加的丰富。具体有以下特点:
1. 将Multi-Head Self-Attention直接内建到网络中。所谓Multi-Head Self-Attention其实就是多套并行的Self-Attention,可以用于建模词与词之间的复杂关系。Transformer不再使用传统的循环神经层(RNN),而是纯注意力机制。
2. 利用专用位置编码来替代之前RNN用输入顺序作为次序,使得并行计算成为了可能。也就是说Transformer模型抛弃了RNN,RNN本质上是递归,所以无法并行计算。
二、GPT正传
1、GPT(Generative Pre-Training)的特点:预训练(Pre-Training)和生成式(Generative)
模型:
GPT的模型是基于Transformer模型,但是更简单,仅用decoder解码器(decoder-only,没有encoder编码器)。Google论文《Attention is all you need》原版Transformer中,包含Encoder和Decoder两部分,前者(Encoder)对应的是 翻译,后者(Decoder)对应的是生成。
google以Encoder为核心,构建了一个BERT(Bidirectional Encoder Representations from Transformers,双向编码生成Transformer)模型。里面的双向(Bidirectional),是指BERT是同时使用上文和下文预测单词,因此 BERT 更擅长处理自然语言理解任务 (NLU)。相比BERT的上下文预测(双向),GPT主张仅使用单词的上文预测单词(单向),从而使模型更简单、计算更快,更适合于极致的生成,并因此GPT更擅长处理自然语言生成任务 (NLG),所以ChatGPT很擅长写"作文"、编瞎话。
训练方法:
预训练(Pre-Training)语言模型在自然语言处理领域有了重要进展。预训练模型指的是首先在大规模的无标签语料库(不需要人介入,不需要标注的数据集)上进行长时间的无监督预先训练(Unsupervised pre-training),获得通用的语言建模和表示能力。之后在应用到实际任务上时对模型不需要做大的改动,只需要在原有语言表示模型上增加针对特定任务获得输出结果的输出层,并使用任务语料对模型进行少许训练即可,这一步骤被称作有监督微调(Supervised fine-tunning)。
生成式(Generative):在机器学习模型里,有两种模型:生成式模式(Generative model)和判别式模式(discriminative model)。生成式模型相比判别式模型更适合大数据学习 ,后者更适合精确样本(人工标注的有效数据集)有监督训练。要更好实现预训练(Pre-Training),生成式模式会更合适。
数据集:
根据论文显示采用了一个名为BooksCorpus的数据集,包含了超过7000本未发表书籍。作者选这个数据集的原因有二:1. 数据集拥有更长的上下文依赖关系,使得模型能学得更长期的依赖关系;2. 这些书籍因为没有发布,所以很难在下游数据集上见到,更能验证模型的泛化能力。
参考:
2018年6月,OpenAI 发布论文Improving Language Understanding by Generative Pre-Training》(通过生成式预训练提升语言理解能力),首次提出GPT模型(Generative Pre-Training)。论文地址:https://paperswithcode.com/method/gpt 。
2、GPT-2的特点:无监督(Unsupervised)和多任务(Multitask)
GPT-2在GPT基础上的创新不大,主要在规模上提升较大。主要两个特点如下:
无监督(Unsupervised)
把GPT1中的有监督fine-tuning微调阶段给直接去掉了,将其变成了一个无监督的模型。
多任务(Multitask)
增加了一个关键字多任务(multitask),这点从其论文名称《Language Models are Unsupervised Multitask Learners》(语言模型应该是一个无监督多任务学习者)也可看出。
在传统ML中,如果要训练一个模型,就需要一个专门的标注数据集,训练一个专门的AI。比如说,要训练一个能认出狗狗图像的机器人,就需要一个标注了狗狗的100万张图片,训练后,AI就能认出狗狗。这个AI,是专用AI,也叫single task。而multitask多任务,就是主张不要训练专用AI,而是喂取了海量数据后,任意任务都可完成。
其实上面两个特点的加入都是为了尝试解决“Zero-Shot”问题(Zero-Shot Learning叫零样本学习)。ZSL是让计算机模拟人类的推理方式,来识别从未见过的新事物。在传统的图像识别算法中,要想让计算机认出斑马,往往需要给计算机投喂足够量的斑马图像才有做到。而且,训练出来的分类器,往往无法识别它没有见过的其他类别的图像。但是ZSL却可以在没有提供新事物数据的情况下,只凭特征描述就能识别出新事物。在去动物园前,我们告诉小朋友,去找出斑马来,它像熊猫一样,是黑白色,并且呈黑白条纹的类马动物,小朋友根据这个提示,能够正确找到斑马。
数据集
数据集增加到800万网页,40GB大小。而模型自身,也达到最大15亿参数、Transfomer堆叠至48层。
参考:
2019年2月,OpenAI 发布论文《Language Models are Unsupervised Multitask Learners》(语言模型应该是一个无监督多任务学习者),提出GPT-2模型。论文地址: https://paperswithcode.com/method/gpt-2
3、GPT-3的特点:少样本学习(Few-Shot)
其实GPT2的效果不够理想,在GPT3改用少样本学习(few-shot)后,效果产生了突破式的进展,正式封神。惊艳的效果有:
1、GPT-3在翻译 、问题回答和完形填空中表现出强大的性能,同时能够解读单词、句子中使用新单词或执行3位数算订。
2、GPT-3可以生成新闻文章的样本,人类已然区分不出来。
训练方法
GPT2中在无监督学习中采用了zero-shot,效果不佳,在GPT3中改用了Few-Shot。并且在论文中对比了Zero-shot零次学习 ;One-shot(单一样本学习)、Few-shot(少量样本学习),以及fine-tuning人工微调的方式,最后结果显示在多数情况下,few-shot(少量样本)的综合表现,是在无监督模式下最优的,但稍弱于fine-tuning微调模式。
数据集
GPT-3采用了过滤前45TB的压缩文本,并且在过滤后也仍有570GB的海量数据。在模型参数上,从GPT-2的15亿,提升到1750亿,翻了110多倍;Transformer Layer也从48提升到96。
参考信息
2020年5月,OpenAI 发布论文《Language Models are Few-Shot Learners》(语言模型应该是一个少量样本(few-shot)学习者),提出GPT-3模型。论文地址:https://paperswithcode.com/method/gpt-3
4、GPT-3.5(Instruction GPT)的特点:RHLF(Reinforcement Learning from Human Feedback)
Instruction GPT是基于GPT-3的一轮增强优化,所以也被称为GPT-3.5。前面提到,GPT-3主张few-shot少样本学习,同时坚持无监督学习。但是事实上,few-shot的效果,显然是差于fine-tuning监督微调的方式的。那么怎么办呢?走回fine-tuning监督微调?显然不是。核心方法就是RHLF(Reinforcement Learning from Human Feedback),使用强化学习RL(reinforecement learning)的方法,利用人类反馈信号直接优化语言模型。
RHLF训练方法
在GPT-3的基础上,有3步:
1、先做一轮有监督微调SFT(Supervised Fine-tuning)得到一个有SFT模型;
2、对此模型的输出结果,由人工反馈(Human Feedback)去训练一个奖励模型RM(Reward Model)(也就是由人给SFT模型的输出结果从高到低打分);
3、基于RM采用强化学习RL(reinforecement learning)去优化SFT模型,最后的出来的就是Instruction GPT模型了。第2、3步是可以反复进行的。
数据集
基础数据规模同GPT-3。
参考
2022年2月底,OpenAI 发布论文《Training language models to follow instructions with human feedback》(使用人类反馈指令流来训练语言模型),公布Instruction GPT模型。论文地址:https://arxiv.org/abs/2203.02155
5、ChatGPT
2022年11月30日,OpenAI推出ChatGPT模型,并提供试用,全网火爆。ChatGPT和InstructionGPT本质上是同一代际的,仅仅是在Instruction GPT的基础上,增加了Chat功能,同时开放到公众测试训练,以便产生更多有效标注数据。
最后,再简要概括GPT发展历史及各阶段特点:
1)、2017年,谷歌发布论文《Attention is all you need》,提出Transformer模型,为GPT铺就了前提。
2)、2018年6月,OpenAI发布了GPT生成式预训练模型,通过BooksCorpus大数据集(7000本书)进行训练,并主张通过大规模、无监督预训练(unsupervised pre-training)+有监督微调(superviesed fine-tuning)进行模型构建。
3)、2019年2月,OpenAI发布GPT-2模型,进一步扩大了训练规模(使用了40GB数据集,最大15亿参数(parameters))。同时在思路上,去掉了fine-tuning微调过程,强调zero-shot(零次学习)和multitask(多任务)。但是最终zero-shot效果显著比不上fine-tuning微调。
4)、2020年5月,OpenAI发布GPT-3模型,进一步扩大了训练规模(使用了570GB数据集,和1750亿参数)。同时采取了few-shot(少量样本)学习的模式,取得了优异效果。当然,在实验中同步对比了fine-tuning,比fine-tuning效果略差。
5)、2022年2月,OpenAI发布Instruction GPT模型,此次主要是在GPT-3的基础上,增加了有监督微调(Supervised Fine-tuning)环节,然后通过人工反馈为此模型的输出结果打分,形成奖励模型Reward Model,接着采用强化学习RL(reinforcement learning)的方法通过RM来优化此模型来,最终得到Instruction GPT模型。
6)、2022年11月30日,OpenAI发布ChatGPT模型,可以理解为一个多轮迭代训练后的InstructionGPT,并在此基础上增加了Chat对话聊天功能。
参考链接:
https://www.51cto.com/article/743197.html
https://zhuanlan.zhihu.com/p/590220208
https://www.huoban.com/news/post/18574.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。