零基础也能看懂的 ChatGPT 等大模型入门解析!

近两年,大语言模型LLM(Large Language Model)越来越受到各行各业的广泛应用及关注。 对于非相关领域研发人员,虽然不需要深入掌握每一个细节,但了解其基本运作原理是必备的技术素养。 本文笔者结合自己的理解,用通俗易懂的语言对复杂的概念进行了总结,与大家分享~一、什么是ChatGPT?

近两年,大语言模型LLM(Large Language Model)越来越受到各行各业的广泛应用及关注。对于非相关领域研发人员,虽然不需要深入掌握每一个细节,但了解其基本运作原理是必备的技术素养。本文笔者结合自己的理解,用通俗易懂的语言对复杂的概念进行了总结,与大家分享~

零基础也能看懂的 ChatGPT 等大模型入门解析!

一、什么是ChatGPT?

GPT 对应的是三个关键概念:生成式(Generative)、预训练(Pre-Training)和Transformer。

生成式(Generative):是指通过学习历史数据来生成全新的数据。当使用ChatGPT回答问题时,是逐字(或三四个字符一起)生成的。在生成过程中,每一个字(或词,在英文中可能是词根)都可以被称作一个 token。

预训练(Pre-Training):是指预先训练模型。举个简单的例子,我们想让一个对英语一窍不通的同学去翻译并总结一篇英语技术文章,首先需要教会这个同学英语的26个字母、以及单词语法等基础知识,然后让他了解文章相关的技术内容,最后才能完成任务。相比之下,如果让一个精通英语的同学来做这个任务就简单多了,他只需要大致了解文章的技术内容,就能很好地总结出来。「这就是预训练的作用——提前训练出一些通用能力。在人工智能中,预训练是通过不断调整参数来实现的。」如果我们可以提前将这些通用能力相关的参数训练好,那么在特定场景中,只需要进行简单的参数微调即可,从而大幅减少每个独立训练任务的计算成本。

Transformer:这是ChatGPT的核心架构,是一种神经网络模型。后文将对其进行详细的说明。

综上,ChatGPT就是一个采用了预训练的生成式神经网络模型,能够模拟人类的对话。

二、ChatGPT核心任务

ChatGPT核心任务就是生成一个符合人类书写习惯的下一个合理的内容。具体实现逻辑就是:根据大量的网页、数字化书籍等人类撰写内容的统计规律,推测接下来可能出现的内容。

1. 逐字/逐词推测

在使用ChatGPT时,如果细心观察会发现它回答问题时是逐字或逐词进行的。这正是ChatGPT的本质:根据上下文对下一个要出现的字或词进行推测。例如,假设我们要让ChatGPT预测“今天天气真好”,它的运行步骤如下:

  • 输入“今”这个字,输出可能是“天”,“日”,“明”这三个字,其中结合上下文概率最高的是“天”字。
  • 输入“今天”这两个字,输出可能是“天”,“好”,“气”这三个字,其中结合上下文概率最高的是“气”字。
  • 输入“今天天”这三个字,输出可能是“气”,“好”,“热”这三个字,其中结合上下文概率最高的是“气”字。
  • 输入“今天天气”这四个字,输出可能是“真”,“好”,“热”这三个字,其中结合上下文概率最高的是“真”字。
  • 输入“今天天气真”这五个字,输出可能是“好”,“热”,“美”这三个字,其中结合上下文概率最高的是“好”字。

由于ChatGPT学习了大量人类现有的各种知识,它可以进行各种各样的预测。这就是Transformer模型最终做的事情,但实际原理要复杂得多。

三、AI基础知识

在介绍 ChatGPT 的原理之前,先学习一下人工智能的一些基础知识:

1. 机器学习 (Machine Learning, ML)

机器学习是指从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并将这些规律应用到未观测数据样本上的方法。主要研究内容是学习算法。基本流程是基于数据产生模型,利用模型预测输出。目标是让模型具有较好的泛化能力。

举一个经典的例子,我们挑西瓜的时候是如何判断一个西瓜是否成熟的呢?每个人一开始都是不会挑选的,但是随着我们耳濡目染,看了很多挑西瓜能手是怎么做的,发现可以通过西瓜的颜色、大小、产地、纹路、敲击声等因素来判断,这就是一个学习的过程。

2. 神经网络

(1) 与人脑的类比

神经网络的设计灵感来源于人脑的工作方式。当信息进入大脑时,神经元的每一层或每一级都会完成其特殊的工作,即处理传入的信息,获得洞见,然后将它们传递到下一个更高级的层。神经网络模仿了这一过程,通过多层结构来处理和转换输入数据。

(2) 基本形式的人工神经网络

最基本形式的人工神经网络通常由三层组成:

  • 输入层:这是数据进入系统的入口点。每个节点代表一个特征或属性,例如在预测房价的例子中,输入层可能包含房屋面积、卧室数量、浴室数量等特征。
  • 隐藏层:这是处理信息的地方。隐藏层可以有多个,每一层中的节点会对来自前一层的数据进行加权求和,并通过激活函数(如 ReLU、Sigmoid 或 Tanh)进行非线性变换。隐藏层的数量和每层的节点数可以根据任务复杂度进行调整。
  • 输出层:这是系统根据数据决定如何继续操作的位置。输出层的节点数量取决于任务类型。例如,在分类任务中,输出层可能对应于不同类别的概率分布;在回归任务中,输出层可能直接给出预测值。

零基础也能看懂的 ChatGPT 等大模型入门解析!

每一层的每一个节点都会对模型的某个参数进行调整计算。在大部分情况下,每个当前节点与上层的所有节点都是相连的,这种连接方式被称为全连接(fully connected)。然而,在某些特定的应用场景下,完全连接的网络可能会显得过于复杂,因此需要采用更高效的网络结构。

(3) 卷积神经网络(Convolutional Neural Networks, CNNs)

在处理图像等具有特定已知结构的数据时,使用卷积神经网络(CNN)会更加高效。CNN 的设计是为了捕捉局部模式和空间关系,其特点包括:

  • 卷积层:卷积层中的神经元布置在类似于图像像素的网格上,并且仅与网格附近的神经元相连。这种方式减少了参数数量,同时保留了重要的局部信息。
  • 池化层:用于降低特征图的空间维度,减少计算量并防止过拟合。常见的池化方法包括最大池化(Max Pooling)和平均池化(Average Pooling)。
  • 全连接层:通常位于网络的末端,用于将提取到的特征映射到最终的输出类别或预测值。

4. 参数/权重

所有的AI都有一个模型,这个模型可以简单地被理解为我们数学里的一个公式,比如一个线性公式:。参数(权重)就是  和 。在 ChatGPT 中,3.0 版本已经有了 1750 亿个参数,4.0 的参数规模未公布,但可以猜测只会比 3.0 版本更多。因此,在这样巨大的参数规模中进行调参训练是一个非常耗费计算资源(如 GPU)的工作,所以需要大量的资金和机房支持。

5. 监督学习 / 无监督学习

「监督学习」:简单的理解就是给算法模型一批已经标记好的数据。例如,我们提前给模型提供 1000 个西瓜,并且标记好这 1000 个西瓜是否已经成熟,然后由模型自己不断去学习调整,计算出一组最拟合这些数据的函数参数。这样我们在拿到一个全新的西瓜时,就可以根据这组参数来进行比较准确的预测。

「无监督学习」:就是我们扔给模型 1000 个西瓜,由算法自己去学习它们的特征,然后把相似的类逐渐聚合在一起。在理想情况下,我们希望聚合出 2 个类(成熟和不成熟)。

6. 过拟合 / 欠拟合

在模型进行训练时,最终的目的就是训练出一组参数来最大限度地拟合训练数据的特征。但是训练的过程总会出现各种问题,比较经典的就是过拟合和欠拟合。其中,

直接举例说明更直接一点,如下图,我们希望模型能尽量好的来匹配我们的训练数据,理想状态下模型的表现应当和中间的图一致,但实际训练中可能就会出现左右两种情况。左边的欠拟合并并没有很好的拟合数据,预测一个新数据的时候准确率会比较低,而右侧看起来非常好,把所有的数据都成功拟合了进去,但是模型不具有泛化性,也没有办法对新的数据进行准确预测。

零基础也能看懂的 ChatGPT 等大模型入门解析!

那么怎么解决过拟合和欠拟合的问题呢?可以根据模型训练中的实际表现情况来进行正则化处理、降低复杂度处理等方法,这一点可以自行查阅相关资料。

四、有监督微调(Supervised Fine-Tuning, SFT)

有监督微调是一种用于机器学习的超参数调整方法,它可以使用从未见过的数据来快速准确地调整神经网络的权重参数,以获得最佳的性能。它可以帮助机器学习模型快速地从训练数据中学习,而不需要重新训练整个网络。

五、强化学习模型(Proximal Policy Optimization, PPO)

强化学习模型(PPO)是一种强化学习算法,可以使智能体通过最大化奖励信号来学习如何与环境进行交互。它使用剪裁目标函数和自适应学习率来避免大的策略更新。PPO 还具有学习可能不完全独立和等分布数据的优势。

六、人类反馈强化学习(Reinforcement Learning with Human Feedback, RLHF)

人类反馈强化学习(RLHF)是训练 GPT-3.5 系列模型而创建的一种方法。主要包括三个步骤,旨在通过人类反馈来优化语言模型的输出质量。

  • 使用监督学习训练语言模型:首先通过大量标记数据训练一个基础语言模型。
  • 根据人类偏好收集比较数据并训练奖励模型:生成多个输出并让人类评估其质量,训练一个奖励模型来预测这些输出的质量分数。
  • 使用强化学习针对奖励模型优化语言模型:通过奖励模型优化语言模型,使其生成更符合人类偏好的输出。

举个例子,假设我们要训练一个能够生成高质量对话的LLM,RLHF具体步骤如下:

(1) 预训练和微调:使用大量的对话数据对 LLM 进行预训练和微调,使其能够生成连贯的对话文本。

(2) 生成多个输出:

① 给 LLM 提供一个提示,例如:“今天天气怎么样?”

② LLM 生成多个响应,例如:

  • 响应1:今天天气真好。
  • 响应2:不知道,我没有查看天气预报。
  • 响应3:今天天气晴朗,适合外出。

③ 人工评估:让人类评估这些响应的质量,并为每个响应分配一个分数。

  • 响应1:3
  • 响应2:1
  • 响应3:4

④ 训练奖励模型:使用这些人工评估的数据来训练一个奖励模型。奖励模型学习如何预测 LLM 生成文本的质量分数。

⑤ 强化学习循环:

  • 创建一个强化学习循环,LLM 的副本成为 RL 代理。
  • 在每个训练集中,LLM 从训练数据集中获取多个提示并生成文本。
  • 将生成的文本传递给奖励模型,奖励模型提供一个分数来评估其与人类偏好的一致性。
  • 根据奖励模型的评分,更新 LLM 的参数,使其生成的文本在奖励模型上的得分更高。

通过这种方式,RLHF 能够显著提高 LLM 的输出质量,使其生成的文本更符合人类的偏好和期望。

七、Transformer架构

对于像ChatGPT这样的大语言模型,Transformer架构是其核心。与传统的RNN和LSTM不同,Transformer完全依赖于自注意力机制(self-attention mechanism),允许模型并行处理长序列数据,而不需要逐个处理时间步。Transformer的主要组成部分包括:

  • 编码器(Encoder):负责将输入序列转换为上下文表示。每个编码器层包含一个多头自注意力机制(Multi-Head Self-Attention Mechanism)和一个前馈神经网络(Feed-Forward Neural Network),两者之间通过残差连接(Residual Connection)和层归一化(Layer Normalization)连接。
  • 解码器(Decoder):负责生成输出序列。解码器层不仅包含自注意力机制和前馈神经网络,还包括一个编码器-解码器注意力机制(Encoder-Decoder Attention Mechanism),用于关注输入序列中的相关信息。
  • 位置编码(Positional Encoding):由于Transformer没有内在的时间/顺序概念,位置编码被添加到输入嵌入中,以提供关于单词相对位置的信息。

八、Transformer基本原理

第一步:Embedding

在Transformer架构中,embedding的过程可以简单理解为将输入的词(token)映射成向量表示。这是因为神经网络处理的是数值型数据,而文本是由离散的符号组成的。因此,需要一种方法将这些符号转换为模型能够理解和处理的连续向量形式。

(1) Token Embedding

每个输入的token通过一个查找表(lookup table)被映射到一个固定维度的稠密向量空间中。这个查找表实际上是一个可训练的参数矩阵,其中每一行对应于词汇表中的一个token。例如,在GPT-2中,每个token会被转化为长度为768的embedding向量;而在更大型的模型如ChatGPT所基于的GPT-3中,embedding向量的长度可能达到12288维。

(2) Positional Encoding

由于Transformer没有像RNN那样的内在顺序处理机制,它无法直接感知序列中元素的位置信息。为了弥补这一点,引入了位置编码(positional encoding),它为每个位置添加了一个唯一的标识符,使得模型能够在处理过程中考虑到token的相对或绝对位置。位置编码通常也是通过一个固定的函数生成,或者是作为额外的可学习参数加入到模型中。

(3) Token和Position Embedding的结合

最终的embedding是通过将token embedding和position embedding相加得到的。具体来说:

零基础也能看懂的 ChatGPT 等大模型入门解析!

这种相加的方式并不是随意选择的,而是经过大量实验验证后被认为有效的方法之一。其背后的原因在于:

  • 保持原始信息:通过简单地相加,既保留了token本身的语义信息,又引入了位置信息。
  • 允许自适应调整:即使初始设置不是最优的,随着训练的进行,模型可以通过梯度下降等优化算法自动调整这些embedding,以更好地捕捉数据中的模式。
  • 简化计算:相比于其他复杂的组合方式,简单的相加操作更加高效,并且不会增加太多额外的计算负担。

以字符串“天气”为例,假设我们使用GPT-2模型来处理:

  • Token Embedding:首先,“天”和“气”这两个字符分别被映射到它们对应的768维向量。
  • Positional Encoding:然后,根据它们在句子中的位置(第一个位置和第二个位置),分别为这两个字符生成相应的位置编码向量。
  • 相加生成最终的embedding:最后,将上述两个步骤得到的向量相加以形成最终的embedding向量序列。

零基础也能看懂的 ChatGPT 等大模型入门解析!

如上图,第一张图中展示了token embedding,其中纵向一列表示一个向量,依次排列的是“天”和“气”的embedding向量。第二张图则显示了位置的embedding,反映了这两个字符的位置信息。将这两者相加后,我们就得到了包含语义和位置信息的完整embedding序列。

第二步:Attention

在Transformer架构中,Attention机制是核心组件之一,它使得模型能够并行处理长序列数据,并且有效地捕捉输入序列中的依赖关系。Attention机制的核心思想是让模型关注输入序列的不同部分,从而更好地理解上下文信息。

(1) 自注意力(Self-Attention)

自注意力(也称为内部注意力)是Transformer中的一种特殊形式的Attention,它允许每个位置的token与序列中的所有其他位置进行交互。这意味着每个token都可以根据整个序列的信息来调整自己的表示,而不仅仅是依赖于前一个或后一个token。

(2) Attention Head

每个“注意力块”(Attention Block)包含多个独立的Attention Heads,这些Head可以看作是不同视角下的Attention计算。每个Head都会独立地作用于embedding向量的不同子空间,这样可以捕捉到更多样化的信息。例如,在GPT-3中有96个这样的注意力块,每个块中又包含多个Attention Heads。

(3) Q、K、V 的生成

对于每个token的embedding向量,我们通过线性变换(即乘以三个不同的可训练矩阵零基础也能看懂的 ChatGPT 等大模型入门解析!零基础也能看懂的 ChatGPT 等大模型入门解析!零基础也能看懂的 ChatGPT 等大模型入门解析!)将其转换为三个向量:Query (Q)、Key (K) 和 Value (V)。这三个向量分别代表查询、键和值。具体来说:

零基础也能看懂的 ChatGPT 等大模型入门解析!

其中,X是输入的embedding向量,零基础也能看懂的 ChatGPT 等大模型入门解析!零基础也能看懂的 ChatGPT 等大模型入门解析!零基础也能看懂的 ChatGPT 等大模型入门解析!零基础也能看懂的 ChatGPT 等大模型入门解析!是随机初始化并在训练过程中学习得到的权重矩阵。

(4) Attention分数的计算

接下来,我们需要计算每个token与其他所有token之间的Attention分数。这一步骤使用了Scaled Dot-Product Attention公式:

零基础也能看懂的 ChatGPT 等大模型入门解析!

这里,零基础也能看懂的 ChatGPT 等大模型入门解析!是Key向量的维度大小,用于缩放点积结果以稳定梯度。Softmax函数确保输出的概率分布加起来等于1,这样可以突出最重要的部分。

以上就是 Transformer 的大致原理,用一张图来表示上面的步骤,如下所示。

零基础也能看懂的 ChatGPT 等大模型入门解析!

相关资讯