(上)一文搞懂ChatGPT相關概念和區別:GPT、大模型、AIGC、LLM、Transformer、羊駝、LangChain等等

/ 默认分类ChatGPT / 没有评论 / 312浏览

ChatGPT横空出世后,伴随而来的是大量AI概念,这些概念互相之间既有联系也有区别,让人一脸懵,近期做了一个GPT相关概念的辨析,特此分享给你,今天要分享的概念包括以下:

Transformer、GPT、InstructGPT、ChatGPT(GPT3.5/GPT4.0)、大模型、AIGC(人工智慧生成内容)、AGI(通用人工智慧)、LLM(大型语言模型)、羊驼(Alpaca)、Fine- tuning(微调)、自监督学习(Self-Supervised Learning)、自注意力机制(Self-Attention Mechanism)、零样本学习(Zero-Shot Learning)、AI Alignment (AI对齐)、词嵌入(Word Embeddings)、位置编码(Positional Encoding)、中文LangChain

1、Transformer

Transformer 是一种基于自注意力机制(self-attention mechanism)的深度学习模型,最初是为了处理序列到序列(sequence-to-sequence)的任务,比如机器翻译。由于其优秀的性能和灵活性,它现在被广泛应用于各种自然语言处理(NLP)任务。Transformer模型最初由Vaswani等人在2017年的论文”Attention is All You Need”中提出。

Transformer模型主要由以下几部分组成:

(1)自注意力机制(Self-Attention Mechanism)

自注意力机制是Transformer模型的核心。它允许模型在处理一个序列的时候,考虑序列中的所有单词,并根据它们的重要性给予不同的权重。这种机制使得模型能够捕获到一个序列中的长距离依赖关系。

(2)位置编码(Positional Encoding)

由于Transformer模型没有明确的处理序列顺序的机制,所以需要添加位置编码来提供序列中单词的位置资讯。位置编码是一个向量,与输入单词的嵌入向量相加,然后输入到模型中。

(3)编码器和解码器(Encoder and Decoder)

Transformer模型由多层的编码器和解码器堆叠而成。编码器用于处理输入序列,解码器用于生成输出序列。编码器和解码器都由自注意力机制和前馈神经网路(Feed-Forward Neural Network)组成。

(4)多头注意力(Multi-Head Attention)

在处理自注意力时,Transformer模型并不只满足于一个注意力分布,而是产生多个注意力分布,这就是所谓的多头注意力。多头注意力可以让模型在多个不同的表示空间中学习输入序列的表示。

(5)前馈神经网路(Feed-Forward Neural Network)
(5)前耋生经网路(前馈神经网络)

在自注意力之后,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 (其中有一个用到Masked )。Multi-Head Attention 上方还包括一个Add & Norm 层,Add 表示残差连接(Residual Connection) 用于防止网路退化,Norm 表示Layer Normalization,用于对每一层的启动值进行归一化。

Transformer模型的优点在于,它能够并行处理序列中的所有单词,这使得它在处理长序列时比回圈神经网路(RNN)更高效。另外,自注意力机制使得模型能够捕获到序列中长距离的依赖关系,这是RNN难以做到的。

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表现出了强大的零样本(zero- shot)和少样本(few-shot)学习能力。这意味着它可以在没有或只有极少示例的情况下,理解并完成新的任务,它能生成更连贯、自然和人性化的文本,理解文本、获取常识以及理解复杂概念等方面也比GPT- 2表现得更好。

3、InstructGPT 3、指导GPT

GPT-3 虽然在各大NLP 任务以及文本生成的能力上令人惊艳,但模型在实际应用中时长会暴露以下缺陷,很多时候,他并不按人类喜欢的表达方式去说话:

(1)提供无效回答:没有遵循用户的明确指示,答非所问。

(2)内容胡编乱造:纯粹根据文字概率分布虚构出不合理的内容。

(3)缺乏可解释性:人们很难理解模型是如何得出特定决策的,难以确信回答的准确性。

(4)内容偏见有害:模型从数据中获取偏见,导致不公平或不准确的预测。

(5)连续交互能力弱:长文本生成较弱,上下文无法做到连续。

在这个背景下,OpenAI 提出了一个概念“Alignment”,意思是模型输出与人类真实意图对齐,符合人类偏好。因此,为了让模型输出与用户意图更加“align”,就有了InstructGPT 这个工作。

InstructGPT相对于GPT的改进主要是使用了来自人类回馈的强化学习方案— — RLHF( Reinforcement Learning with human feedback)来微调GPT-3,这种技术将人类的偏好作为激励信号来微调模型。

如上图所示,以摘要生成任务为例,详细展示了如何基于人类回馈进行强化学习,最终训练完成得到InstructGPT 模型。主要分为三步:

1. 收集人类回馈:使用初始化模型对一个样本生成多个不同摘要,人工对多个摘要按效果进行排序,得到一批排好序的摘要样本;

2. 训练奖励模型:使用第1步得到的样本集,训练一个模型,该模型输入为一篇文章和对应的一个摘要,模型输出为该摘要的得分;

3. 训练策略模型:使用初始化的策略模型生成一篇文章的摘要,然后使用奖励模型对该摘要打分,再使用打分值借助PPO 演算法重新优化策略模型

InstructGPT可以更好地理解用户意图,通过指令-回答对的数据集和指令-评价对的数据集,InstructGPT可以学习如何根据不同的指令生成更有用、更真实、更友好的输出。

4、ChatGPT(GPT3.5/GPT4.0) 4、聊天GPT(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步:

1.预训练一个超大的语言模型;

2.收集人工打分数据,训练一个奖励模型;

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、大模型

关于大模型,有学者称之为“大规模预训练模型”(large pretrained language model),也有学者进一步提出“基础模型”(Foundation Models)的概念。

2021年8月,李飞飞、Percy Liang等百来位学者联名发布了文章:On the Opportunities and Risks of Foundation Models,提出“基础模型”(Foundation Models)的概念:基于自监督学习的模型在学习过程中会体现出来各个不同方面的能力,这些能力为下游的应用提供了动力和理论基础,称这些大模型为“基础模型”。

“小模型”:针对特定应用场景需求进行训练,能完成特定任务,但是换到另外一个应用场景中可能并不适用,需要重新训练(我们现在用的大多数模型都是这样)。这些模型训练基本是“手工作坊式”,并且模型训练需要大规模的标注数据,如果某些应用场景的数据量少,训练出的模型精度就会不理想。

“大模型”:在大规模无标注数据上进行训练,学习出一种特征和规则。基于大模型进行应用开发时,将大模型进行微调(在下游小规模有标注数据进行二次训练)或者不进行微调,就可以完成多个应用场景的任务,实现通用的智慧能力。

可以这么类别,机器学习同质化学习演算法(例如逻辑回归)、深度学习同质化模型结构(例如CNN),基础模型则同质化模型本身(例如GPT-3)。

人工智慧的发展已经从“大炼模型”逐步迈向了“炼大模型”的阶段。ChatGPT只是一个起点,其背后的Foundation Module的长期价值更值得被期待。

大模型发展的前期被称为预训练模型,预训练技术的主要思想是迁移学习。当目标场景的数据不足时,首先在数据量庞大的公开数据集上训练模型,然后将其迁移到目标场景中,通过目标场景中的小数据集进行微调,使模型达到需要的性能。在这一过程中,这种在公开数据集训练过的深层网路模型,被称为“预训练模型”。使用预训练模型很大程度上降低下游任务模型对标注数据数量的要求,从而可以很好地处理一些难以获得大量标注数据的新场景。

2018年出现的大规模自监督(self-supervised)神经网路是真正具有革命性的。这类模型的精髓是从自然语言句子中创造出一些预测任务来,比如预测下一个词或者预测被掩码(遮挡)词或短语。这时,大量高品质文本语料就意味着自动获得了海量的标注数据。让模型从自己的预测错误中学习10亿+次之后,它就慢慢积累很多语言和世界知识,这让模型在问答或者文本分类等更有意义的任务中也取得好的效果。没错,说的就是BERT 和GPT-3之类的大规模预训练语言模型,也就是我们说的大模型。

2022年8月,Google发表论文,重新探讨了模型效果与模型规模之间的关系。结论是:当模型规模达到某个阈值时,模型对某些问题的处理性能呈现快速增长。作者将这种现象称为Emergent Abilities,即涌现能力。

大模型的典型架构就是Transformer架构,其自2018年开始统治NLP领域,NLP领域的进展迎来了井喷。为何预训练的transformer有如此威力?其中最重要的思想是attention,也就是前面提到过的注意力机制。就是句子中每个位置的表征(representation,一般是一个稠密向量)是通过其他位置的表征加权求和而得到。

为什么这么简单的结构和任务能取得如此威力?

原因在其通用性预测下一个单词这类任务简单且通用,以至于几乎所有形式的语言学和世界知识,从句子结构、词义引申、基本事实都能帮助这个任务取得更好的效果。大模型也在训练过程中学到了这些资讯,让单个模型在接收少量的指令后就能解决各种不同的NLP问题。也许,大模型就是“大道至简”的最好诠释。

“大模型”通常是具有大量的参数,它们定义了模型的复杂性和学习能力。实现大模型主要涉及以下几个步骤:

(1) 模型架构设计:大模型通常具有更深的网路架构(更多的层)和/或更宽的层(更多的神经元)。这种设计可以使模型拥有更强大的表示能力,可以学习和记忆更复杂的模式,比如Transformer 架构。

(2) 数据准备:训练大模型需要大量的数据。这些数据为模型提供了学习的机会,使其能够捕捉到数据中的潜在模式。大量的训练数据也有助于防止模型过拟合,这是深度学习模型常常需要面临的问题。

(3) 计算资源:大模型需要大量的计算资源来进行训练,包括强大的GPU和足够的记忆体。大模型的训练通常需要并行化和分布式计算来处理大量的计算任务。

(4) 优化演算法:训练大模型需要高效的优化演算法。这些演算法(如随机梯度下降及其变体)用于调整模型的参数以最小化预测错误。

(5) 正则化技术:大模型由于其复杂性,更容易过拟合训练数据。因此,训练大模型通常需要使用正则化技术(如权重衰减、dropout等)来防止过拟合。

(6) 模型并行和数据并行:由于大模型的规模,训练过程常常需要在多个GPU或者多个机器上进行。模型并行和数据并行是两种常用的策略,前者是将模型的不同部分分布在不同的设备上,后者是将数据分布在不同的设备上。

这些是实现大模型的一般步骤和要求。然而,这也带来了一些挑战,如计算资源的需求、训练时间的增加、过拟合的风险等。因此,选择合适的模型规模以平衡性能和效率是深度学习中的一个重要任务。

除了GPT-3、GPT-3.5及GPT-4,当前还有BERT、RoBERTa、T5、XLNet等大模型。这些模型都是由不同的公司和组织开发的,它们都有自己的优点和缺点。以下是这些模型的简要介绍:

(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.7B版本有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亿个参数。