随着ChatGPT的爆火,很多AI概念风靡互联网,让人目不暇接。从Transformer到GPT、Bert以及ChatGPT,这些概念彼此之间又有联系也有区别。文本做些相关概念的总括与辨析,特此分享给大家。
1、Transformer
Transformer 是一种基于自注意力机制(self-attention Mechanism)的深度学习模型,最初是为了处理序列到序列(sequence-to-sequence)的任务,比如机器翻译,它是由论文《Attention is All You Need》提出。得益于其优秀的性能和灵活性,它现在被广泛评估各种自然语言处理(NLP)任务。
Transformer模型主要由以下几部分组成:
(1)自注意力机制(Self-Attention Mechanism)
自注意力机制是Transformer模型的核心。它允许模型在处理一个序列的时候,考虑序列中的所有单词,并根据它们的重要性赋予不同的权重。这种机制使得模型能够捕获到一个序列中的长距离依赖关系。
(2)位置编码(Positional Encoding)
由于Transformer模型没有明确的处理序列顺序的机制,所以需要添加位置编码来提供序列中单词的位置信息。位置编码是一个向量,与输入单词的嵌入向量相加,然后输入到模型中。
(3)编码器和解码器(Encoder and Decoder)
Transformer模型由多层的编码器和解码器很好完成。编码器用于处理输入序列,解码器用于生成输出序列。编码器和解码器都由自注意力机制和前馈神经网络(Feed-Forward Neural)组成网络)组成。
(4)多头注意力(Multi-Head Attention)
在处理自我注意力时,Transformer模型并不只满足于一个注意力分配,而是产生多个注意力分配,这就是所谓的多头注意力。多头注意力可以让模型在多个不同的表示空间中学习输入序列的表示。
(5)前馈神经网路(Feed-Forward Neural Network)
在自注意力之后,Transformer模型会通过一个前反馈神经网络路来进一步处理序列。这个网络路由两层全连接层和一个ReLU启动函数组成。
(6)残差连接和层归一化(Residual Connection and Layer Normalization)
Transformer模型中的每一个子层(自注意力和前馈神经网路)都有一个残差连接,而其输出会通过层归一化。这有助于模型处理深度网路中常见的峰值消失和突然爆炸的问题。
下图示例了架构图:

左边为Encoder block,右边为Decoder block。红色圈中间的部分为Multi-Head Attention,是由多个Self-Attention组成的,可以看到Encoder block包含一个Multi-Head Attention,而Decoder block包含两个Multi-Head Attention -Head Attention(其中有一个可用Masked)。Multi-Head Attention上面还包括一个Add & Norm层,Add表示残差连接(Residual Connection)用于防止网路损伤,Norm表示Layer Normalization,用于对每层层次的启动值进行归一化。
Transformer 模型的优点在于,它能够高效处理序列中的所有单词,这使得它在处理长序列时比回圈神经网络(RNN)有更机制。另外,自注意力使得模型能够捕获到序列中长距离的依赖关系,这是RNN难以实现的。
更详细的Transformer实现原理与步骤可以参考文章:
2、GPT
GPT,全称Generative Pre-training Transformer,是OpenAI开发的一种基于Transformer的大规模自然语言生成模型。GPT模型采用了自监督学习的方式,首先在大量的无标签数据上进行预训练,然后在特定任务的数据上进行微调。
GPT模型的主要结构是一个多层的Transformer解码器,但它只使用了Transformer解码器的部分,没有使用编码器-解码器的结构。另外,为了保证生成的文本在语法和语义上的连贯性, GPT模型采用了因果掩码(causal mask)或者称为自回归掩码(auto-regressive mask),这使得每个单词只能看到其前面的单词,而不能看到后面的单词。
在预训练(Pre-training)阶段,GPT模型使用了一个被称为“Masked Language Model”(MLM)的任务,要求预测一个句子中被遮盖住的部分。预训练的目标是最大化句子中每个位置的单词的条件概率,这个概率由模型生成的分布和真实单词的分布之间的交叉熵来计算。
在微调(fine-tuning)阶段,GPT模型训练在特定任务的数据上进行,例如情感分类、问答等。最大的目标是最小化特定任务的损失函数,例如分类任务的交叉熵损失函数。
GPT模型的优点在于,由于其预训练-强度的训练策略,它可以有效地利用大量无标签数据进行学习,并且可以轻松地适应各种不同的任务。此外,由于其基于Transformer的结构,它可以处理输入序列中的所有单词,比基于回圈神经网络的模型更高效。
GPT演进了三个版本:
(1)GPT-1用的是自监督预训练+有监督参数,5G文档,1亿参数,这两段式的语言模型,其能力还是比较单一,即翻译模型只能翻译,填空模型而已能填空,抽象模型只能抽象等等,要在实际任务中使用,需要分别在各自的数据上做参数训练,这显然很不智慧。
(2)GPT-2用的是纯自监督训练预训练,相对于GPT-1,它可以无监督学习,即可以从大量未标记的文本中学习语言模式,而无需人工标记的数据。这使得GPT-2在训练时更加灵活和。训练它引入了更多的任务进行高效预,40G文档,15亿参数,能够在没有针对下游任务进行训练的条件下,就在下游任务上有很好的表现。
(3)GPT-3沿用了GPT-2的纯自监督预训练,但数据大了好几个量级,570G文档,模型参数量为1750亿,GPT-3表现出强大的零样本(零-这意味着它可以在没有或只有极少例子的情况下,理解并完成新的任务,它能够生成更连贯、自然和人性化的文本,理解文本、获取常识以及理解复杂概念等方面也比 GPT-2 表现得更好。
3、InstructGPT
GPT-3虽然在伟大的NLP任务以及文本生成的能力上令人惊叹,但模型在实际应用中时长会暴露以下缺陷,很多时候,他并不是按人类的表达方式去说话:
(1)提供无效回答:没有遵循用户的明确指示,回答非所问。
(2)内容胡编乱造:部分根据文字概率分布虚构出不合理的内容。
(3)缺乏可解释性:人们很难理解模型是如何做出特定决策的,难以相信答案的准确性。
(4)内容偏差:模型从数据中获取偏差,导致预测不公平或不准确。
(5)连续交易能力弱:长文本生成较弱,上下文无法实现连续。
在此背景下,OpenAI 提出了一个概念“对齐”,意思是模型输出与人类真实意图一致,符合人类偏好。因此,为了让模型输出与用户意图更加“对齐”,需要指导 GPT 这个工作。
InstructGPT相对于GPT的主要改进是采用了来自人类回馈的强化学习——RLHF(Reinforcement Learning with human Feedback)来配置GPT-3,这种技术将人类的偏好作为预警信号来调控模型。
如上图所示,以抽象生成任务为例,详细展示了如何基于人类回馈进行强化学习,最终训练完成得到InstructGPT模型。主要分为三步:
收集人类回馈:使用初始化模型对一个样本生成多个不同的摘要,人工对多个摘要按效果进行排序,得到一批排好序的摘要样本;
训练奖励模型:使用第1步得到的样本集,训练一个模型,该模型输入为一篇文章和回答的一个摘要,模型输出为该摘要的得分;
训练策略模型:使用初始化的策略模型生成一篇文章的摘要,然后使用奖励模型进行摘要打分,再使用打分值借助PPO演算法重新优化策略模型
InstructGPT可以更好地理解用户的意图,通过指令-回答对的数据集和指令-评价对的数据集。此外,它可以学习如何根据不同的指令生成更有用、更真实、更友好的输出。
4、ChatGPT(GPT3.5/GPT4.0)
ChatGPT由OpenAI公司于2022年11月30日发布。同时由OpenAI开发的GPT-3.5模型基础上,ChatGPT通过无监督学习与强化学习技术进行调节,并提供了客户端界面,通过客户端支持用户与模型进行问答交互。ChatGPT不开源,但通过WebUI为用户提供免费的服务。
OpenAI没有公布ChatGPT的论文和相关的训练和技术细节(GPT-3.5没有开源),但我们可以从其兄弟模型InstructGPT以及网络公开的碎片化的情报中寻找到实现ChatGPT的蛛丝马迹。根据OpenAI所言,ChatGPT相对于InstructGPT的主要改进在于收集标注数据的方法上,而整个训练过程没有什么区别,因此,可以推测ChatGPT的训练过程应该与InstructGPT的类似,大体上可分成3步:
预训练一个超大的语言模型;
收集人工打分数据,训练一个奖励模型;
使用强化学习方法优化语言模型。
相对于GPT-3,GPT-3.5拥有3个变体,每个变体有13亿、60亿和1750亿参数,当前ChatGPT提供了基于GPT-4的版本,相对于GPT-3.5,GPT-4模型据说有1万亿个参数,GPT4是一个多模态(multimodal)模型,即它可以接受图像和文本作为输入,并输出文本;而GPT3.5只能接受文本作为输入,并输出文本。这使得 GPT4 可以处理更复杂的视觉信息任务,例如图像描述、图像问答、图像到文本等。

5、LLM
大语言模型(中文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智慧模型,旨在理解和生成人类语言。它们在大量的文本数据上进行训练,可以执行广泛的任务,包括文本总结、翻译、情感分析等。LLM的特点是规模庞大,包含包含、成百、上千亿的参数,该模型可以捕捉语言的复杂模式,包括句法、语义和一些上下文信息,从而生成连贯的、有意义的文本。
GPT3、ChatGPT、BERT、T5、文心一言等都是典型的大型语言模型。
以下这些模型的简要介绍:
(1)BERT: BERT是由Google开发的一种预训练语言模型,它在自然语言处理领域取得了很大的成功。BERT有340M和1.1B两个版本,其中1.1B版本有33亿个参数。
(2)RoBERTa: RoBERTa是Facebook AI Research开发的一款预训练语言模型,它在自然语言处理领域取得了很大的成功。RoBERTa有125M、250M、500M、1.5B和2.7B五个版本,其中2.7 B版本有27亿个参数。
(3)T5: T5是由Google开发的一种预训练语言模型,它在自然语言处理领域取得了很大的成功。T5有11B和22B两个版本,其中22B版本有220亿个参数。
(4)XLNet: XLNet是由CMU和Google Brain开发的一种预语言模型,它在语言自然处理领域取得了很大的成功。XLNet有两个版本,分别为XLNet-Large和XLNet-Base,其中XLNet-Large有18亿个参数。
(5)GShard: GShard是由Google开发的一种预训练语言模型,它在自然语言处理领域取得了很大的成功。GShard有两个版本,分别为GShard-Large和GShard-Base,其中GShard-Large有6亿个参数。
(6)Switch Transformer: Switch Transformer训练是由CMU开发的一种预语言模型,它在语言自然处理领域取得了很大的成功。Switch Transformer有两个版本,分别为Switch Transformer-Large和Switch Transformer-Base ,其中Switch Transformer-Large有1.6亿个参数。
6、AIGC
AIGC(Artificial Intelligence generated Content / AI-Generated Content)中文译为人工智慧生成内容,一般认为是相对于PCG(专业生成内容)、UCG(用户生成内容)而提出的概念。AIGC精准概念是利用AI自动生成内容的生产方式。广义的AIGC可以近似训练像人类一样具备生成创建能力的AI技术,即生成式AI,它可以基于数据和生成演算法模型,自主生成创建新的文本、图像、音乐、视频、3D交互内容等各种形式的内容和数据,以及包括开启科学新发现、创造新的和意义等。
下面示例了AIGC能做的事情:

AIGC技术中,耳熟能详的当属Transformer、GPT、Diffusion、CLIP、Stable Diffusion,下面简要介绍下Diffusion、CLIP、Stable Diffusion。
(1)Diffusion
“Diffusion”来自一个物理现象:当我们把墨汁滴入水中时,墨汁会均匀散开;这个过程一般不能逆转,但AI可以实现。当墨汁刚滴入水中时,我们可以区分哪里是墨哪里是水,资讯是非常集中的;当墨汁扩散开来时,墨和水就很难区分了,资讯是分散的。类比于图片,这个墨汁扩散的过程就是图片逐渐变成噪声点的过程:从资讯集中的图片变成资讯分散、没有资讯的质疑点图很简单,逆转这个过程就需要人工智能的加持了。

研究人员对图片加上噪声点,让图像逐渐变成纯噪声点图;再让AI学习这个过程的逆过程,知道如何从一张噪声点图得到一张有资讯的高清图。这个模型就是AI绘画中的各种演算法,如Disco Diffusion、Stable Diffusion中的常客扩散模型(Diffusion Model)。
(2)CLIP
如果让你把下面左边三张图和右边三句话设置,你就可以轻松完成这条连线。但对AI来说,图片就是一系列像素点,文本就是一串字元,要完成这项工作可并不简单。

大规模预训练图文表征模型用4亿对来自网路的图文数据集,将文本作为标签,进行训练。一张图像及其对应的文本描述,希望通过对比学习,模型能够学习到文本-图像对的匹配。CLIP为CV中断打开了一片非常非常脆弱的天地,把语言自然级别的抽象概念带到电脑屏幕里。
(3)Stable Diffusion
扩散演算法针对任何杂讯图片去噪后得到的图片是不可控的,如果让扩散演算法能够接受文字的提示从而生成想要的图片,这就是AIGC的另一个大热点,AI画:只输入文字描述,可以自动生成各种图像,其核心演算法-稳定扩散,就是上面提到的文字到图片的多模态演算法CLIP和生成图像演算法DIffusion的结合体,CLIP就是作为作为文字提示用的,首先对DIffusion施加影响生成所需的图片。
参考下面演算法核心逻辑的示意图,稳定扩散的数据会在像素空间(Pixel Space)、潜在空间(Latent Space)、条件(Conditioning)之间流转三个部分,其演算法逻辑大概分这一个:

1、图像编码器将图像从像素空间(Pixel Space)压缩到更小维度的潜在空间(Latent Space),捕捉图像更本质的信息,否则维度太多计算量简化;
2、对潜在空间中的图片添加杂讯,进行扩散过程(Diffusion Process);
3、通过CLIP文本编码器将输入的描述语转换为去噪过程的条件(Conditioning);
4、基于一些条件(Conditioning)对图像进行去噪(Denoising)生成图片的潜在表示,噪去步骤可以灵活地以文本、图像和其他形式为条件(以文本为条件即text2img、以图像为条件即img2img);
5、图像解码器通过将图像从潜在空间转换回像素空间来生成最终图像。
7、LangChain
中文LangChain开源项目最近很火,其是一个工具包,帮助把LLM和其他资源(比如你自己的领域资料)、计算能力结合起来,实现本地化知识库搜索与智慧答案生成。
LangChain的准备工作包括:
1、海量的本地领域知识库,知识库是由一段时期的文本构成的。
2、基于问题搜索知识库中文本的功能语言模型。
3、基于问题与问题相关的知识库文本进行问答式的对话式大语言模型,比如开源的chatglm、LLama、Bloom等。
其主要工作思路如下:
1、把领域内容拆成一块块的小块、对块进行了嵌入后放入索引库(为后面提供语义搜索做准备)。
2、搜索的时候把Query进行Embedding后通过语义检索找到最相似的K个Docs。
3、把相关的文档构建成提示的语境,基于相关内容进行QA,让chatglm等进行语境学习,用人话回答问题。