GPT 全称为 “生成式预训练 Transformer(Generative Pre-trianed Transformer)”,Generate 是指用来生成新文本的机器人,Pre-trained是指模型经历了从大量数据中学习的过程,Transformer 是一种特殊的神经网络,一种机器学习模型,是当今 AI 热潮的和新发明。本文旨在解释其运作方式。基础神经网络知识见神经网络
GPT-3参数总量及其分布:
一、 数据如何在 Transformer 中流动
Transformer 基本思路——将信息编码嵌入高维向量
-
首先,输入内容被切分成许多小片段,称为 token。在文本中,token 往往是单词或单词片段,或其他常见的字符组合;对于图像或声音,token 则是小块图像或声音片段。
每个 token 对应一个向量,即一组数字,旨在设法编码该片段的含义,意思相近的词对应的向量往往也相近,向量在空间坐标的方向也越相近。
-
这些向量随后经过“注意力模块”处理,使向量能够互相交流,通过互相传递信息,来更新自己的值。
“注意力模块”的工作就是找出上下文哪些词会改变哪些词的含义,以及这些词应该更新为何种含义。时这些向量能够获得比单个词更丰富具体的含义。
这种网络一次只能处理特定数量的向量,称为上下文长度(Context size),限制了模型在预测下一个词时能结合的文本量。 -
随后,这些向量经过“多层感知器”,也叫“前馈层”,此时向量不再互相交流,而是并行经历同一处理。(以上两步的处理主要是大量的矩阵乘法)
-
之后模型重复以上两个阶段,层层堆叠,最后的目标是,能够使整段文字的所有关键含义以某种方式融入到序列的最后一个向量。
-
对这最后一个向量进行某种操作,得出所有可能 token 的概率分布。
此时,就可以根据给定文本预测下一个词,就可以给它 feed 一些初始文本,反复进行预测、抽样、追加过程,生成故事和文章。
这样,只要准备一段文本,设定用户与AI助手互动的场景(即系统提示词),然后将用户的初始问题或提示词作为第一段对话,让模型预测AI助手会如何回应。
二、深度学习基本知识
深度学习是机器学习中的一种方法,而机器学习采用数据驱动,反馈到模型参数,指导模型行为。最简单的机器学习就是线性回归,输入和输出都是单个数字。深度学习使用的训练算法就是反向传播(详见神经网络)。
要让反向传播这种训练算法在大规模应用中有效运行,模型必须遵守特定的结构:
- 输入的格式必须为实数数组,数组的维数称为张量(Tensor)
- 输入数据通常被逐步转换为多个不同的层(Layer),每一层同样也是实数数组,最后一层即看作输出
- 模型的参数称为权重(Weights),参数与待处理数据之间的唯一交互方式即为加权和
-
嵌入矩阵(Embedding matrix)
记作W_E,模型有一个预设的词汇库,包含了所有可能的词(准确地说是token,例如GPT-3有约50000个),每个词对应嵌入矩阵的一列,这些列决定了第一步中每个单词对应的向量,初始值随机。
这种将单词转化为向量的做法称为词嵌入
向量的行数称为嵌入维度,例如GPT-3有12288维 -
解嵌入矩阵(Unembedding matrix)
记作W_E,这个矩阵将上下文中的最后一个向量,映射到一个包含50000个值的列表(对GPT-3来说),每个值对应词库里一个 token,然后用 softmax 函数将其归一化为概率分布。矩阵初始值随机,在训练过程中学习。
解嵌入矩阵每行对应词汇库中的一词,每列对应一个嵌入维度 -
softmax 函数
若想将一串数字作为概率分布,那么每个值都必须介于 0 到 1,且总和为1
softmax函数使得最大值最接近 1,较小值接近于 0。
通常将 softmax 函数的输出称为概率(Probabilities),输入称为Logits
三、注意力机制(attention mechanism)
Transformer 的核心,首次出现于2017年的一篇著名论文《Attention is All You Need》
其大小等于上下文长度的平方——这是限制大模型上下文长度的瓶颈
注意力机制的成功,源于他的可并行性,极大方便了使用GPU进行训练,且极容易扩大规模
Attention_Is_All_You_Need_详细讲解
注意力机制要做什么:根据上下文,计算出给初始的泛型嵌入加入一个向量,将他移动到上下文对应的具体方向上。注意力机制不仅精细化了一个词的含义,还允许模型相互传递这些嵌入向量所蕴含的信息。
3.1单头注意力机制(Single head of attention)
- 注意力模式(Attention Pattern)

-
每个 token 的初始初始嵌入只编码了该单词的含义以及所在的位置,和上下文没有关联。使用字母 \vec{E_i} 来表示这些嵌入向量。
最终目标是通过一系列计算,产生一组新的、更为精准的嵌入向量。 -
查询向量\vec{Q_i}(Query):当前这个词希望从其他词中获得什么样的信息?
取一个查询矩阵W_Q,再乘以嵌入向量\vec{E_i},得到查询向量\vec{Q_i}
查询向量的维度比嵌入向量小得多,由查询矩阵将嵌入向量映射到更小的维度
将查询矩阵分别乘以每一个嵌入向量,给每一个 token 算出一个查询向量,查询矩阵内部的数值都是模型的参数 -
键向量\vec{K_1}(Key):当前这个词能够提供什么样的特征?
取一个键矩阵W_K,再乘以嵌入向量\vec{E_i},得到键向量\vec{K_i}
键向量的维度比嵌入向量小得多,由键矩阵将嵌入向量映射到更小的维度将查询向量与键向量做点积,结果的大小代表了两个词的匹配程度,专业术语为:词A的嵌入注意到了词B的嵌入。将查询向量所在的一列的点积结果加权求和,然后使用softmax将数值介于0-1。
核心公式:
\operatorname{Attention}(Q,K,V) = \operatorname{softmax} \left( \frac{QK^{\mathrm T}}{\sqrt{d_k}} \right)V
其中:
- Q:所有的查询向量
- K:所有的键向量
- V:
- d_k:键—查询空间维度,除以其平方根可以增强数值稳定性
- V:Value ,每个词真正携带的内容
注意: 在注意力模式中,后面的词不能影响前面的词,不然就会泄露“答案”,因此矩阵左下方的值应当为0。做法是在使用softmax之前,先将矩阵左下角的值设为-\infty,应用softmax之后都会变为0。这个操作名称为掩码
-
更新嵌入向量
把各个词的信息传递给与之相关的其他词
-
值矩阵(Value Matrix)
想要给嵌入向量所加的向量称为值向量,由值矩阵乘以嵌入向量得到,值矩阵是个方阵,其维度与嵌入矩阵相同对于表格中的每一列,使用值向量乘以对应的权重,再将这一列加权值求和,得到想引入的变化量\Delta E,加入原始嵌入向量,得到更新后的嵌入向量。
一般在实际中,将值矩阵表示为两个矩阵相乘,使得参数量等于键矩阵与查询矩阵之和——对大矩阵进行“低秩分解”
以上整个过程就是单头注意力机制。
3.2 多头注意力机制(Multi-headed attention)(简介)
多头注意力机制把Q、K、V拆成多组,称为头,每组独立算注意力,最后拼接合并结果,多套标准同时捕捉多种语义关系。每个头都会独立算出一个\Delta E,然后将所有的\Delta E与原嵌入向量相加。
- 输出矩阵(Output Marix)
将所有头的输出拼在一起乘以输出矩阵W_O,得到最终输出
作用:合并多头信息,输出统一特征向量
输出矩阵为方阵
四、多层感知器(Multi-layer perceptrons)MLP
在每一个注意力层之后,都会接一个MLP层,其流程为:
- W_{\uparrow} ,B_{\uparrow}:升维
- ReLU激活
- W_{\downarrow},B_{\downarrow},降维

其中:
- W为权重矩阵,将向量映射到高维或低维空间。
- B为偏置向量
- ReLU:线性整流函数(线性修正单元)作为非线性函数,使模型非线性化。
如果不进行非线性化,再多层的网络也会退化为单层,只能拟合线性函数 - 最终输入向量与输出向量相加,得到新向量。