从循环神经网络到GPT-3:全景解构Transformer的核心架构与数学机制

47 阅读9分钟

在深度学习与自然语言处理(NLP)的演进史上,Transformer架构的出现无疑是一场颠覆性的革命。从早期的机器翻译到如今动辄千亿参数的大语言模型(LLM),其底层都离不开这一架构的支撑。本文将从传统模型的瓶颈出发,层层剥茧,深入探究Transformer内部各大核心模块的运转机制与数学本质。

一、 架构前传:循环神经网络(RNN)的瓶颈

在Transformer诞生之前,自然语言处理的核心范式是以循环神经网络(RNN,包括LSTM和GRU)为基础的编码器-解码器(Encoder-Decoder)架构。在这类架构中,模型需要将输入的整段文字通过逐字循环计算,最终压缩成一个定长的终极向量,以此向量代表整段文本的全部语义信息,再交由解码器进行还原或翻译。

然而,作为编码器和解码器的内核,传统RNN存在三个致命的结构性缺陷:

  1. 长程信息丢失: 随着输入序列的拉长,早期输入的Token信息在反复的循环矩阵相乘中会被不断稀疏和覆盖,导致严重的健忘现象。
  2. 长文本表征无力: 面对短句子时RNN尚能应付,但面对长篇大论时,定长向量的信息容量极易饱和,无法完美承载复杂的长文本语义。
  3. 无法并行计算: RNN的计算具有严格的时间步依赖,计算当前第 tt 个词必须等待第 t1t-1 个词的计算完成。这种串行机制导致它无法有效释放GPU的并行算力,极大限制了模型的训练规模。

为了突破这一瓶颈,学术界和工业界彻底抛弃了循环结构,转向了完全由注意力机制与前馈神经网络构成的Transformer架构。

二、 现代之基:注意力机制(Attention)的本质

注意力机制的引入,本质上是模拟人类在阅读和理解语言时的选择性注意能力。在数学实现上,它通过定义三个多维数据矩阵:Q(Query,查询) 、K(Key,键)V(Value,值)来完成。

其核心计算流程可以分为两大步骤:

  1. 计算相关度系数: 当模型需要预估或生成新结果时,首先利用Q和K进行点积或其他相似度计算。Q代表当前关心的主体,K代表环境中现有的各元素。两者的计算结果经过缩放和归一化(Softmax)后,会生成一个“相关度系数矩阵”。这个系数反映了当前主体与各个环境元素之间的关联紧密程度。
  2. 加权求和提炼信息: 注意力机制中最具核心价值的部分是V。模型将每一个元素对应的V值与其计算出的相关度系数相乘,随后将所有相乘后的结果进行累加。这种加权求和得到的全新多维向量,就是最终的注意力输出。

通过这种方式,模型能够自动将“注意力”分配给相对更重要的数据,从而过滤掉无关的噪声。

三、 纵览全局:自注意力机制(Self-Attention)与信息聚合

当注意力机制中的Q、K、V不再来源于不同的序列,而是全部来自于输入段落本身时,这就演变成了自注意力机制(Self-Attention) 。自注意力机制的核心目标是在序列内部进行高效的信息聚合

在自注意力中,段落里的每一个Token都会轮流扮演Q的角色,去和段落中所有Token扮演的K进行相关度匹配,从而在内部构建出一个庞大的相关度矩阵。在这个矩阵中,每一个单元格都标明了文本内部词与词之间的语义关联度。

然而,这种全局关联也带来了极高的算力代价:

  • 自注意力机制的计算复杂度是平方级的( O(N2)O(N^2) )。
  • 如果输入的序列包含1万个Token,那么为了构建自注意力相关度系数矩阵,模型就需要进行 10000×10000=1亿10000 \times 10000 = 1亿 次的相关度系数计算。这也是长文本大模型研发中最耗费算力的计算瓶颈所在。

在实际工程中,为了让模型能够从不同的维度和层次去提取特征,原始数据不会直接拿来做Q、K、V的计算。模型会利用三组不同权重的神经网络(线性变换层),分别对原始输入数据进行特征提取,从而得到三组相似但聚焦不同的Q、K、V数据,进而开展后续的信息聚合。

从横向来看,在同一层网络中,各个Token之间的自注意力计算是各自独立、互不干扰的,这使得模型能够实现完全的并行运算,彻底解决了RNN的串行痛点;从纵向来看,前一层的聚合计算完成后,其输出作为下一层的输入,随着信息聚合的次数(层数)增多,模型就需要更长、维度更高的向量来存储日趋复杂的上下文语义信息。

四、 维度升华:多头自注意力机制(Multi-Head Self-Attention)

为了进一步增强模型在多方向、多语境下的特征捕获能力,设计者在自注意力的基础上发展出了多头自注意力机制(Multi-Head Self-Attention)

以目前顶尖的工业级大语言模型(如GPT-3 175B模型)为例,其多头自注意力机制的运行参数与流程极其严密:

  1. 高维输入: 模型的底层隐藏层向量维度达到了惊人的 12,288维
  2. 多视角分头提取: 算法设计了 96组(解构为96个“头”) 不同的神经网络。每一组神经网络都从一个独特的语义角度出发,将12,288维的原始高维数据进行降维特征提取,生成一组 128维 的低维向量数据。
  3. 独立计算与加权聚合: 每一组(每一个头)独立的128维Q、K数据会单独计算属于自己的注意力矩阵,并与对应的V进行加权聚合,输出一个全新的128维向量。由于共有96个头,这一步会并行产生96个不同的128维输出。
  4. 拼接还原: 最终,模型将这96组128维的向量进行横向拼接,重新组合成一个 128×96=12,288128 \times 96 = 12,288 维的高维向量。

这种“分头行动、合力合流”的精妙框架,使模型能够同时捕捉到代词指代、句法结构、上下文逻辑等96种不同的复杂特征。

五、 特征过滤与深度堆叠:前馈神经网络(Feed Forward)

在每一个多头自注意力层之后,紧接着的是一个前馈神经网络(Feed-Forward Network, FFN)

前馈神经网络的结构非常纯粹,通常仅由两层全连接神经网络组成,其核心逻辑在于空间的放大与缩小

  • 第一层(升维): 首先将多头注意力拼接出来的12,288维向量,在数学空间上放大3到5倍(在GPT-3中通常是放大4倍,至49,152维)。
  • 第二层(降维): 在高维空间经过非线性激活函数处理后,第二层网络再将该向量相应地缩小回原本的12,288维

这一看似“多此一举”的升降维过程,在深度学习中起到了至关重要的特征提取、空间变换与信息过滤作用。它负责将自注意力层聚合到的各方信息进行融合与精炼。

在标准的大模型结构中,这样的组合(多头自注意力机制 + 前馈神经网络)被定义为一个标准的Transformer Block(层)。模型会将这样的结构纵向连续堆叠96层。随着文本向量在96层网络中穿梭,信息被反复聚合与过滤,大模型最终表现出的非凡“智慧”便在此过程中悄然孕育。

六、 秩序的划分:编码器(Encoder)与解码器(Decoder)的根本区别

虽然编码器和解码器在底层都大量复用了多头自注意力和前馈神经网络,但由于它们承担的任务性质不同(编码器倾向于全局理解,解码器倾向于单向自回归生成),导致它们在计算注意力矩阵时存在着根本性的区别。

其核心差异体现在掩码(Mask)机制的应用上:

  • 编码器(Encoder): 编码器计算出的相关度矩阵是完整的、全通透的。矩阵的每一个位置都有具体的数字,这意味着在编码阶段,序列中的任意一个Token都可以无限制地与前后的所有Token计算相关度,实现双向、全局的上下文感知。
  • 解码器(Decoder): 解码器计算出的相关度矩阵则带有严格的因果掩码(Causal Mask) 。在数学表现上,其注意力矩阵对角线的右上角区域是完全没有意义的(通常在Softmax前被赋予负无穷大,使权重归零)。

之所以要人为将解码器矩阵的右上角“抹去”,是因为解码器在生成文本时必须遵循时间的先后顺序。当模型在预测第 tt 个词时,它绝对不能提前“偷看”第 tt 个词之后的未来信息。通过这种掩码阻断,解码器在进行信息聚合时,每个Token就只能向左看、抓取自己前面的历史Token信息。这种带有不对称秩序的矩阵设计,正是解码器能够完美实现“自回归生成”并成为现代大模型核心主流的底层保障。