庆云古诗词

庆云古诗词

解析chatgpt背后的工作原理 chatgpt引发的大模型时代变革

互联资讯 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

chattra,chatrge,chatthit,chat it

(报告出品方/作者:方正证券,方闻千)

1 自然语言处理的发展历史回顾

自然语言处理(Natural Language Processing, NLP)作为人工智能的 重要研究方向,旨在帮助计算机理解、解释和运用人类语言。回顾 NLP 的主要发展历程,可大致分为三个阶段:1)上世纪 80 年代之前, 人工智能开始萌芽,基于规则的语言系统占据主导;2)80 年代之后, 从机器学习的兴起到神经网络的引入,带动了 NLP 的快速发展和商业 化;3)2017 年至今,基于 Attention 注意力机制构建的 Transformer 模型开启了大语言模型时代。

第一阶段:基于规则的语言系统。早在上世纪 50 年代前后,人工智 能就已经诞生,1956 召开了达特茅斯会议,首次正式提出了“人工智 能”。1980 年,自然语言处理的分为了两大阵营,分别为基于语言规 则的符号派和基于概率统计的随机派,而当时基于规则方法的势头明 显强于基于概率统计的势头,因此当时大多数 NLP 系统都使用复杂 的逻辑规则,能够处理包括字符匹配、词频统计等一些简单的任务。 同时在这一时期,也产生了一些机器翻译以及语言对话的初级产品, 比较著名的是 1966 年 MIT 发布的世界上第一台聊天机器人 Eliza, Eliza 能够遵循简单的语法规则来实现交流。但总体来看,这一时期 NLP 领域形成的成果还无法商业化,包括机器翻译的成本还是远高于 人工翻译,而且还无法与人真正实现基本的对话。

第二阶段:从机器学习到神经网络。1980 年美国的卡内基梅隆大学召 开了第一届机器学习国际研讨会,标志着机器学习在全世界兴起,而 自然语言处理也逐渐走向纯粹的统计学。90 年代以后,神经网络模型 被引入到 NLP 领域,其中最著名的两个神经网络模型为循环神经网络 (Recurrent Neural Network, RNN)和卷积神经网络(Con【【微信】】orks,CNN),特别是 RNN 因其处理序列数据的特性, 成为了大部分 NLP 模型的主流选择。2000 年后,一方面 Multi-task learning,Word Embedding,Seq2seq 等层出不穷的新技术推动了 NLP 技术的快速进步,另一方面 NLP 逐步实现了商业化,包括机器翻译、 文本处理等商业化产品开始大量出现。

第三阶段:基于 Attention 注意力机制构建的 Transformer 模型奠定 了大语言模型的基础。2017 年 Google 机器翻译团队发布了著名论文 《Attention is All You Need》,提出了基于 Attention 注意力机制构建 的 Transformer 模型,这也成为了 NLP 历史上的一个标志性的事件。 相较于传统的神经网络,基于 Attention 注意力机制构建的 Transformer 模型在提升了语言模型运行的效率(效率更高),同时能够更好的捕 捉语言长距离依赖的信息(效果更好)。2018 年 OpenAI 公司的 GPT 以及 Google 公司的 BERT 均是基于 Attention 注意力机制与 Transformer 而构建,而 NLP 也正式进入到了大语言模型的全新阶段。

2 Attention 注意力机制的基本原理

注意力(Attention)机制与 Transformer 模型构建了大语言模型的基 石。注意力(Attention)机制最早由 Bengio 团队在 2014 年提出,随 后开始广泛应用在深度学习中的各个领域。Attention 的思想很简单, 它的最初灵感来源于人类的视觉,即当人用眼睛观察东西的时候,会 首先快速扫描全局图像,然后再捕捉需要重点关注的目标区域,将视 觉重点聚焦在这个目标区域,对重点区域投入更多注意力资源,同时 忽略其他信息。因此 Attention 机制最早应用在计算机视觉领域,用 于捕捉图像上的感受野,随后在 NLP 领域也开始得到应用,并且在 NLP 领域真正的发扬光大。2017 年,Google 机器翻译团队发布 Transformer 模型, 在 Transformer 中抛弃了传统的 CNN 和 RNN 结构, 整个网络完全是由 Attention 机制组成,2018 年 Google 的 BERT 模型 以及 OpenAI 公司的 GPT 模型都是在 Transformer 的基础上构建。

在 Attention 注意力机制应用于 NLP 领域以前,大部分语言模型都是 基于 RNN 及 CNN 所构建,特别是 RNN 处理序列信息的特性,使得 其在 NLP 领域得以广泛应用。RNN 对处理具有序列特性的数据非常 有效,比如在自然语言处理领域,将每一个字或每一个词的组合作为 一个序列;在语音处理领域,将每一帧的声音信号的组合作为一个序 列;在时间序列方面,比如股价数据,将每一天或者每一时刻的股票 价格的组合作为一个序列。因此通过利用了 RNN 处理序列数据的能 力,在语音识别、机器翻译等领域中取得了很多成果,很多早期的 NLP 商业化产品都是基于 RNN 所构建。与此同时,为什么说后来的 Attention 机制优于之前的 RNN 以及 CNN,可以从运算机制和算法思 想等方面对三者的角度做一个直观对比。

首先,RNN 在 NLP 领域得到广泛应用的同时,其算法机制一直存在 着两个缺点,第一个缺点就是语言的长距离信息会被弱化。比如在这 样的长句子中:“原来是你把我的苹果拿走了,下次记得提前跟我说 一声,我还得用它来发邮件呢”,我们要确定“苹果”指代的是苹果电 脑/手机还是水果,就需要进行通过长距离的信息学习。由于在 RNN 模型中,对序列中的元素是按顺序处理的,比如在第一个 RNN 层中 的第二个节点 h2,它的计算是由第一个节点 h1,即词向量 1 输入模 型后得出的结算结果,以及词向量 2 的输入,二者共同决定的。在 RNN 模型中,两个词之间的交互距离可以认为是他们之间的相对距 离,因此第 1 个词和第 n 个词之间的交互距离是 n-1,因此如果一个 序列足够长,RNN 模型中的节点经过许多阶段的计算后,之前比较长 的时间片的特征已经被覆盖,很难将将信息从较早的时间步传送到后 面的时间步,距离越远的信息越容易被忽略掉。虽然在实际情况下, 大多数词的词义在一个较小范围的上下文语义环境中就可以确定,对 于一个更好的语言模型而言,我们的期望是模型能够更好的获取长距 离的信息。

RNN的第二个缺点就是RNN是串行处理机制所带来的计算效率低的 问题。从 RNN 实现的原理来讲,是因为每个时间步(time step)的 计算,都依赖于对前一时间步的计算和输出结果,难以进行并行化运 算进行加速。并且在长句中的每个时间步都包括一个 memory I/O 操 作,这导致了模型的性能严重受限于 GPU 的最大线程和最大内存带 宽的约束。特别是在处理长句的训练样本时,RNN 存在的模型运行速 度慢的问题会体现的更加明显,因此导致了语言模型中能够堆叠 RNN 的数量受到了明显的限制。

为了应对 RNN 模型存在的缺陷,一般会使用双向的 RNN 及 LSTM 长时间的短期记忆网络(Long Short-Term Memory Networks),比 传统 RNN 在长距离信息识别方面有更好的表现。双向 RNN 结构作为 RNN 的变体,在使用一个 RNN 对序列中的元素从左往右进行处理的 同时,另一个 RNN 对序列从右向左进行处理,因此能够在一定程度 上优化对长距离信息的处理,可以考虑整个句子的信息,然而双向 RNN 的缺点在于需要完整数据的序列,比如语音识别系统中,必须等 待一个人说完整句话,才能做出识别,这样就有一个比较长的等待时 间。而 LSTM 作为一种带有门控(Gate)机制的 RNN 模型,是一种 让信息选择式通过的方法,门控可以只保留有效信息来进行预测,并 忘记不相关的数据。因此能够记住重要的信息,而忽略无关紧要的信 息。LSTM 虽然理论上可以对历史信息进行有选择的存储和遗忘,但 是门控参数量一定的情况下,这种能力是一定的。随着句子的增长, 相对距离的增大,存在明显的理论上限。

相较于 RNN 在 NLP 领域的广泛应用,CNN 此前较多应用于计算机 视觉领域,同样,CNN 也存在长距离信息丢失的问题。 从 CNN 的 运算机制来看,每一层的 CNN 每个节点覆盖的语义环境范围是一定 的,这是由 CNN 存在的感受视野(Recepti【【微信】】)所决定的,比如 第一层 CNN 中第二个节点 h2 的计算只利用了词 1、词 2、词 3 的信 息。而第二个 CNN 层覆盖的语义环境范围会变大,且越往上层覆盖 的语义环境会变得越大。因此,在语言序列中,一个词首先会与自身 距离较近的词发生交互,比如在第一层的第二个节点 h2 中,词 1、词 2、词 3 发生了交互,而距离较远的词,如词 1 和词 n,则需要在高层 上才能发生交互。因此词与词之间的信息的获取与相互关键,取决于 它们之间的相对距离,距离越远,信息获取的难度也就越大,因此同 样,CNN 也存在语言序列的长距离信息依赖的问题。

相较于 RNN 和 CNN,Attention 注意力机制的原理就是在每一层的 计算中都考虑了词与词之间的全连接关系,在模型的并行化运算的同 时,能够很好的解决长距离信息依赖的问题。从 Attention 的计算过 程来看,一个语言序列中的每一个词和 Attention 中每一个节点都是 全连接的关系,比如第一层中第一个节点 h1 的计算会考虑全部输入 词 1 到词 n 的信息,而第一个 Attention 层和第二个 Attention 层之间 的全部节点也都是全连接的关系,因此任意两个词之间的交互,与词 与词之间的远近距离都不存在关系。句子中每个词义的确定,都考虑 了与整个句子中所有的词的关系(计算量更大),因此这样能够更好 的捕捉到长距离的信息,就算文本或者语句比较长,也能够抓住重点, 不丢失掉重要的信息。同时,Attention 模型是并行计算的,每一步计 算不依赖于上一步的计算结果,可以并行处理语言序列数据,大幅提 升了语言模型运行的效率,在运算机制上更加契合现代 GPU 的硬件 架构。

从 Attention 和 CNN 的关系来看,CNN 可以看作是有注意力范围的 Attention,而 Attention 则是实现了全连接的 CNN。二者之间的区别 就是 CNN 存在的感受野(Recepti【【微信】】),有局部的归纳偏置,而 Attention 是全连接的,能够捕捉全局信息的。因此从训练难度的角度 来说,Attention 的难度更大,因为 Attention 没有做任何的局部归纳, 因而也需要更多的数据。而早期 CNN 之所以更多的应用在视觉领域, 是因为图片天然具有局部特征,因此 CNN 能做到在不需要非常多数 据的情况下有比较好的效果。但是在 NLP 领域,Attention 通常在数 据量足够的时候,表现比 CNN 更优秀。

Attention 的数学原理来看,就是用数字来表达词与词之间的相关程 度,当数字越大时,这两个词之间相关程度越高。比如在“原来是你 把我的苹果拿走了,下次记得提前跟我说一声,我还得用它来发邮件 呢。”这句话中,语言模型要去理解 “苹果”指的是苹果电脑/手机还 是水果,就需要计算苹果与这个句子中其他所有词包括之间的相关系 数,用相关系数,或者说注意力分数来表达他们之间的相互联系,得 出的分数越高,那么这两个词之间的相关程度就越高。比如在这个句 子中,通过计算,能够发现“苹果”与“邮件”的分数较高,最终可以得 出“苹果”指代的就是苹果电脑/手机,以此来实现了注意力机制。

在 Attention 注意力机制中又包含了自注意力机制 Self-Attention、交 叉注意力机制 Cross-Attention 等,而自注意力机制 Self-Attention 就 是 Transformer 等大语言模型的核心组成部分。自注意力机制指的不 是输入语句和输出语句之间的 Attention 机制(不同输入),而是在输 入语句的内部元素之间发生(同一输入),即在同一个句子内部实现 注意力机制。Self-Attention 的详细计算具体可分为以下三步:

第一阶段,信息的预处理:词的向量化,句子的矩阵变换。在运行 Attention 机制之前,需要对输入模型的语句文本进行预处理,首先需 要讲文本语句进行分词操作(Tokenization),即将语言序列切分成 一个个字符串。对英文来说,分词操作为输出一个一个的单词,对中 文来说分词操作为输出一个一个的字。然后,我们需要将字或词向量 化(Word Embeddings)(比如在我们输入的句子中每一个词都转化 为一个向量,而这个句子则是一个矩阵,而 Attention 机制本质上就是 对这个输入语句的矩阵进行了多次的矩阵变换)。在分词和向量化后, 得到了向量序列(a1,a2,a3,a4),接下来需要对输入向量做矩阵 变换,即用三个权重矩阵 Wq ,Wk ,Wv(这三个权重矩阵实际上 就是我们所需要训练的内容,因为其他输入都是既定的)与(a1,a2, a3,a4)分别相乘,得到三个向量序列 Q(q1,q2,q3,q4),K(k1, k2,k3,k4),V(v1,v2,v3,v4)。由于在 【【微信】】 中,Q、K、V 都是由同一个矩阵变换而来,因此 Q、K、V 是同源的,而 Q、 K、V 之间的相互计算 Self-Attention(Q、K、V),则称之为自注意 力。

第二阶段,相关程度计算:计算出词与词之间的相关程度。在预处理 之后,接下来需要通过 Q 和 K 来计算 Attention 相关度。比如计算第 一个词与句子中的所有词(包括自己)的相关度,即用向量 q1 与向 量 k1,k2,k3,k4 分别两两求点积(由两个向量的点积可以得到两 个向量的相似度)。因此在每次输入了两个向量后,输出一个数,比 如用 q1 和 k1 可以得出α1,1,而α1,1,α1,2,α1,3,α1,4 则代表 了第一个词与句子中所有词(包括自己)的相关程度,如果第一个词 和第三个词关联性较高,那么α1,3 的数值就会比较大。在计算完成 之后,再使用 Softmax 函数归一化处理就得到了α1,1,α1,2,α1,3, α1,4,使得每一个数的范围都在(0,1)之间,且所有数之和为 1。最后 得到的α1,1,α1,2,α1,3,α1,4 就代表了第一个词与其他词的相关 系数。

第三结算:输出最终结果:用相关系数来加权求和。在经过 softmax 的 归一化处理得到了一组注意力系数α1,1,α1,2,α1,3,α1,4 之后, 最后再依次乘以预处理的第三个向量序列 V(v1,v2,v3,v4),并 求和,即α1,1*v1+α1,2*v2+α1,3*v3+α1,4*v4,得到输出结果 b1, 如果 a1 和 a3 关联性比较高, 则α1,3 的数值就会就比较大,而输出 的向量 b1 就与向量 v3 更加接近,同理可以并行计算出 b2、b3、b4。 因此,回顾整个 Self-Attention 的计算过程,输入的是向量(a1,a2, a3,a4),输出的向量(b1,b2、b3、b4)就是 attention 的最终输出 结果。

3 Transformer 构建大模型的基石

Transformer 作为大语言模型的基础模型,分为编码器和解码器两大 模块,实际模拟的是人类大脑从理解语言到表达语言的过程。从 Transformer 的结构来看, Transformer 由 Encoder 编码器和 Decoder 解码器两个部分组成,具体而言是由 6 个编码器和 6 个解码器堆叠而 成。而编码器-解码器结构作为语言模型的经典结构,它模拟的是大脑 理解自然语言的过程,其中编码就是将语言转化成一种大脑所能理解 和记忆的内容,而解码就是将大脑中所想的内容表达出来。比如在计 算机训练语言模型的过程中,最初是不知道“你好”和“Hello”背后 的意思的,也不知道他们所表达的含义是相关的,而模型学习的过程, 就是将这两种不同的表达映射到同一个意识概念上。因此在以 Transformer 为代表的语言模型中,编码器的功能就是把自然语言序列 映射为某种数学表达,而解码器则是再把这个数学表达映射为自然语 言序列的过程。

整个 Transformer 网络没有使用传统的 CNN 和 RNN 结构,而完全是由 Attention 机制组成,其中 Self-Attention 则是 Transformer 最核心的组 成部分。首先看编码器 Encoder 的结构:编码器 Encoder 由两个子层 组成,第一个子层为 Muti-head Attention(多头注意力机制) +Add&Norm 层,其中多 Muti-head Attention 是将多个 Self-Attention 拼 接在一起,本质上仍是 Self-Attention;第二个子层为 Feed Forward Neural Network(前馈神经网络)+Add&Norm 层,这一层中通过引入 了非线性函数(具体为 ReLU 激活函数,此前的自注意力层都是线性 变换),能够使得神经网络中的神经元也具有了稀疏激活性,即能够帮助模型更好的挖掘相关特征,拟合训练数据。同时在两个子层中, 均加入了 Add&Norm 层,Add&Norm 包含 Residual connection(残差连 接)和 Normalization(标准化)两个部分,这也是此前语言模型中被 验证过的有效的方法,即通过 Residual connection 用于防止网络特征 退化,而 Normalization 的使用可以加快模型的收敛速度。总的来说, Transformer 中编码器 Encoder 的多层结构即为 self-attention 层与 Feed Forward 层的堆叠使用,其中 self-attention 层是 Transformer 最核心的 部分。

Transformer 的解码器 Decoder 与编码器 Encoder 在结构上有许多共 同之处,二者的最大不同,就是解码器使用了带有遮盖的自注意力机 制(Masked Self-attention)。解码器与编码器同样也是多层结构, 即 self-attention 层与 Feed Forward 层的堆叠使用,而二者的侧重点有 所不同的是,Decoder 是用来预测信息的,因此在训练预测能力的时 候,模型需要将未来的信息遮盖住(只看上文),而不能提前看到训 练的答案(不看下文),因此解码器采用了 Masked Self-attention。 Masked Self-attention 与 Self-attention 在算法原理上的主要不同,即Masked Self-attention 每一步的计算都只能依赖当前时刻以前的输出, 而看不到当前时点之后的输出。比如在 Self-attention 中,输出的结果 b2 读取了所有的输入 a1,a2,a3,a4…,而 Mask Self-attention 中, b2 只能读取 a1,a2,而读取不了 a3,a4…的信息。总的来看,解码 器 Decoder 的运算过程中需要进行多次 mask 操作。

在基于 Transformer 所构建的大语言模型中,最著名的两个模型是 OpenAI的 GPT和 Google的 BERT,虽然二者都是基于 Transformer, 但 GPT 模型仅使用了解码器的部分,而 BERT 仅使用了编码器的部 分,二者在技术路线上也走向了两条不同的道路。具体来说,BERT 仅运用了 Transformer 的 Encoder 框架,而 Encoder 中采用了 Self-attention 机制,即训练时每一个词需要对整个输入序列的上下文进行相关性分析,从模式上来看更接近于一个完形填空模型;而 GPT 运用了 Transformer 的 Decoder 框架,Decoder 中的 Self-attention 机制 是 Mask Self-attention,在训练时会对下文进行了遮盖(mask)处理, 仅基于上文,来生成下文,因此 GPT 更接近人类的语言生成模式,更 适合来构建语言生成模型。

从 GPT 的语言生成模式来看,并不是一次性将整个序列全部生成, 而是每个字每个词逐一生成,即在生成每一个词的时候,必须先生成 它的前一个词。而每一个字的生成,会用到这个字之前的全部上文, 即全部输入+这个字之前的全部输出,比如向 GPT 提问:“地球有多 大?”,GPT 的完整回答为:“地球是太阳系内第三颗最靠近太阳的 行星,其直径约为...”,而在生成“系”这个字时,所用到的信息 为:输入“地球有多大?”+“系”这个字之前所已生成的输出“地 球是太阳...”。在生成“系”之后,再依照同样的原理,也“系” 也作为上文,再生成下一个字。因此 GPT 实际上是一种自回归生成的 语言模型,而在 GPT 和 BERT 的背后则是 Transformer 的编码器与解 码器在算法思想上的差异,因此 GPT 作为基于解码器所构建的语言模 型,在其后的语言生成方面也展现出了更大的潜力。

总体来看,2017 年发布的 Transformer 无论是在机器翻译、文本生成、 问答系统等任务处理,还是在模型训练速度上,其性能均超过了之前 的模型,而这还仅仅只是 Transformer 的初始形态。从多项测试的结 果来看:1)机器翻译任务中,Transformer 在 WMT 2014 英德翻译任务上,相对于之前的 SOTA 模型,实现了近 2 个 BLEU 值的提升, 达到了 28.4 BLEU 分数;2)文本生成任务中,Transformer 在 WikiText-103 数据集上的困惑度仅为 18.3,相对于之前最好的困惑度 20.5,实现了很大的提升;3)问答任务中,Transformer 在 SQuAD 数 据集上的 F1 分数为 87.4,优于之前最好的模型。同时,Transformer 的运行速度也有了很大提升,例如,Google 使用了 64 个 TPU v3 设备 对 Transformer 进行训练,处理英德翻译任务的速度快于之前最好的 RNN 模型 7 倍。

4 持续进化:从 GPT-1 到 GPT-3

在 2018 年,自然语言处理 NLP 领域正式步入了大语言模型时代, OpenAI 公司的 GPT 模型与谷歌的 BERT 模型在同年相继推出。2018 年 6 月,OpenAI 公司发布了 GPT 模型的初代版本,GPT-1 运用了 Transformer 的 Decoder 框架中 Mask Self-attention 机制,目前已经迭 代到了最新 ChatGPT 与 GPT-4,毫无疑问 GPT 模型已经成为了当前 最为强大的语言模型。在 2018 年 10 月,Google 也发布了 BERT 模型, BERT 采用了 Transformer 的 Encoder 框架中 Self-attention 机制,作为 一个拥有 3 倍 GPT 参数量的更大体量的语言模型,BERT 在当时的多 项测评以及业内影响力等方面,要领先于 GPT 的初代版本。特别是在 BERT 开源之后,包括 Facebook、百度等国内外大厂均推出了基于 BERT 之上开发的大模型,其中包括 Facebook 的 XLM、RoBERTa 模 型,以及百度的 ERINE 系列模型。

从 GPT 的初代版本来看,GPT-1 在训练方式上仍依赖于数据标注和 模型微调,同时 GPT-1 的语言泛化能力仍然不足,因此可以说 GPT-1 更接近于处理特定语言任务的专家模型,而非通用的语言模型。GPT-1的模型训练采取的是二段式的训练模式,第一阶段利用无监督学习进 行预训练,使用未标记的数据生成语言模型;第二阶段则根据特定的 下游任务来对模型进行人工微调,比如分类任务、自然语言推理、语 义相似度、问答和常识推理等任务。因此相较于此前 NLP 模型,GPT-1 实际上还是一个半监督式学习的语言模型。GPT-1 在多种语言任务方 面都有不错的效果,在自然语言推理、分类、问答、对比相似度的多 种测评中均超越了之前的模型。但与此同时,GPT-1 的语言泛化能力 仍然不足,无法解决通用的语言任务,且和同时代的 BERT 模型比较 的话,GPT-1 在能力上要逊色于 BERT。

2019 年 2 月,GPT-2 正式发布,相较于 GPT-1,GPT-2 舍


gpt10


摘要 您好!很高兴为您解答!ChatGPT10代表着使用了GPT-3技术的开源聊天机器人模型,是英伟达公司开发的人工智能语言模型,可以用于对话生成、机器翻译、文章摘要等自然语言处理任务。GPT-3是当前自然语言处理领域最为先进的技术之一,能够生成高质量的文本,拥有强大的语言处理能力和创新性思维,已经被广泛应用于各类人工智能应用中。ChatGPT10是基于GPT-3技术的聊天机器人模型,可与用户进行自然、流畅的交互,并从中学习不断提高自身水平。