Transformer学习记录(6):模型存储事实和MLP模块的本质作用
2026/8/8 16:02:38 网站建设 项目流程

学习了3Blue1Brown的视频,以此进行记录与分享。
建议大家直接去观看大佬的视频,做的很好,很直观。
视频连接

文章目录

  • Transformer中的MLP模块
  • MLP模块如何存储事实
    • 基础假设
    • 具体介绍
      • 1. 第一个全连接层
      • ReLU激活函数
      • 3. 第二个全连接层
      • 4. 残差连接
  • 补充知识
    • Superposition(叠加)

Transformer中的MLP模块

在每个Transformer Layer中,数据经过注意力后,会流向一个包含残差结构的MLP模块,结构如图所示。

而MLP模块内部有3部分构成:一个线性层,一个ReLU激活函数和一个线性层。线性层是通过全连接层实现,相当于执行了矩阵乘法。最终再与原始向量进行相加。

在实际运行中,针对每个输入的嵌入向量都执行上述操作,因此输入的向量个数与MLP模块中包含的全连接层的个数是正相关的。
第一个全连接层的输入神经元的个数=嵌入向量的维度,第二个的输入神经元个数=嵌入向量的维度。而嵌入向量的维度一般都是很高的(GPT3中为12288),因此MLP模块是占据了参数两的大头。

MLP模块如何存储事实

通过一个例子来具体说明,以“Michael Jordan plays basketball”为例子说明,MLP是如何存储事实的。

基础假设

经过学习我们可以知道(补充视频),在高维空间中,不同的方向可以代表着不同的语义信息。
因此,这里在假设高维空间的三个方向分别代表“First Name Michael”、“Last Name Jordan”和“Basketball”这三个信息,而且它们之间是几乎垂直的(这点和重要,几乎垂直这一特性,让模型可以存储更多的事实,后面的讲解)。

若一个向量与“First Name Michael”的向量的点积为1.0,则代表该向量编码了“First Name Michael”这个信息。点积的大小代表了该向量与所代表含义的一致性。

假设一个向量代表了全名为“Michael Jordan”,那么这个向量和这两个方向的点积必定为1

假设一个MLP模块若储存了“Michael Jordan plays basketball”这一事实,那么将蕴含“Michael Jordan”方向的向量输入到模块中,会得到包含“Basketball”方向的向量,最后将它们相加。

具体介绍

1. 第一个全连接层

第一个全连接层相当于进行一次矩阵乘法,列数=嵌入向量的维度,每行与嵌入向量相乘。一般第一个全连接层都会提升向量的维度。

第一个全连接层的目的是为得到嵌入向量与各类语义特征之间的相关性,具体解释如下:
我们可以将矩阵的每行视作一个向量,那么矩阵乘法的结果就由嵌入向量和这些向量的点积构成。

而正如之前学的,点积的大小代表了它们之间的相似度。这样的话,我们可以将每行向量都代表了一种语义特征或一个问题,通过矩阵乘法就可以得到嵌入向量与各类语义特征之间的相关性,为后面使用。

举个例子,若第一行向量代表了“First Name Michael”这个特征,那么输出向量的第一个分量代表了嵌入向量是否编码了“First Name Michael”,若编码了则为1,反之小于0。

有时,一个行向量不仅编码了一种语义特征。假如第一个行向量包含“First Name Michael”和“Last Name Jordan”,嵌入向量与它的点积若为2,则代表它编码了“Michael Jordan”。

而在具体计算中,通常会添加一个Bias向量来对点积的值进行规范,可以在向量包含多类语义特征时,保证通过正负就可以确定是否相关,这为后面ReLU提供方便。

第一个全连接层的操作如图所示。

ReLU激活函数

前面的全连接层的操作是线性的,但语言是高度非线性的过程。即使输入项中“Michael”+“Jordan”的预测值高,也不能说明它就是“Michael Jordan”,可能由其他相近但无关的词导致

而我们所需要的是简单的判断其蕴含的信息是否为我们需要的。

因此,引入了一个非线性函数ReLU来作为激活函数,让负数之间为0,其余的不变。这样就可以只保留与嵌入向量有关的语义特征,避免没有关系的语义特征影响最终输出的向量,相当于只激活有关的。

3. 第二个全连接层

第二个全连接层同样是进行一个矩阵乘法,对向量进行降维,维度变为与嵌入向量一样。

而与第一个嵌入向量不同的是,此时矩阵的行数=嵌入向量的维度。因此,计算时将权重矩阵按列进行分块,与向量进行分块乘法。此时矩阵中每列就代表着高维空间中的一个方向,代表着一类语义特征;而嵌入向量中的每个值相当于各类语义特征的权重,控制着哪些信息会被加入到最终结果中。
相当于融合各种相关的语义特征,最终输出的是包含所有的相关特征的向量。

4. 残差连接

将输出的向量与初始的嵌入向量相加,相当于在原本的信息上增加了新的信息
图中展示了输入编码了“First Name Michael”+“Last Name Jordan”方向的向量,得到编码了“Basketball”方向的向量,将它们相加后,就得到了编码三个方向的向量,实现了信息的增加。

而在实际计算中,以上的构成都是并行计算的。

补充知识

Superposition(叠加)

我们前面假设一个神经元只代表单一一种语义特征,但在实际情况中,每个神经元都会代表多种语义特征,这种现象称为叠加。
这种现象可以解释为什么模型难以解释以及扩展性好。具体思想如下:

在一个N维空间中,若要使用一堆正交向量来表示不同的特征,那么最多表示N种特征,这与维度数相同。这种情况下,所包含的信息很少。

但如果我们将限制放宽,容忍一下噪声,允许这些特征的向量不是完全垂直,而是几乎垂直,比如89和91度之间。
在2维或3维中,这种假设不会影响特征向量的个数,但在高维空间中,情况就完全不同。
根据“约翰逊-林登斯特劳斯引理”,空间中能放入的几乎垂直的向量的个数,随着维度增加成指数型增长
这对于LLM意义重大,这样极具增加了模型可以表示的相互独立的概念,意味着在有限的空间中存储数量多得多的各种概念。
这也解释了为什么模型的性能随着规模增大而显著提升,十倍的维度可以存储远超十倍的独立概念

这种特质也就决定了一种特征不会由单一一个神经元激活,而会是某种特定的神经元组合,是一种叠加。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询