简介:本文从架构分类、Transformer基础、残差连接、自注意力机制到完整编码流程,系统解释大语言模型为什么能理解上下文、缓解梯度消失并完成高质量语义表示。读者可借此建立对编码器、解码器与编解码模型运行机制的底层认知,理解注意力计算、多头建模、归一化与残差协作逻辑,并避开常见理解误区。
大语言模型的核心能力,并不是简单记住词语,而是通过深层神经网络对文本进行连续表示、上下文建模与语义归纳。要理解大模型为什么能够完成补全、问答、摘要、翻译等任务,首先需要理解其底层架构机制:模型如何接收 token,如何计算词与词之间的关系,如何把局部特征逐步抽象为全局语义,以及如何保证深层网络仍能稳定训练。
从宏观分类看,当前主流大语言模型主要分为三类:编码器模型、解码器模型和编解码模型。三类模型都建立在同一种基础架构之上,即 Transformer。Transformer 不是某一种具体的语言任务模型,而是一种通用的序列建模架构。它由自注意力机制、前馈网络、残差连接、归一化等关键模块组成,通过堆叠多个相同结构层来学习输入序列中的深层语义关系。
本文重点不是介绍某一款模型如何使用,而是解释这些模型内部“为什么这样设计”“数据如何流动”“注意力如何形成上下文关联”“残差连接为什么能缓解梯度消失”等机制问题。
在自注意力机制成为主流之前,循环神经网络、长短期记忆网络等结构长期用于文本处理。它们按照时间步逐个处理 token,后续状态依赖前序状态。这种串行方式带来两个明显问题:
第一,长距离依赖较弱。当句子很长时,早期信息经过多步传递后容易衰减,模型难以建立远距离词之间的关联。
第二,并行计算受限。由于每一步都要等待上一步完成,训练效率受到较大限制。
Transformer 的提出,正是为了突破这两类限制。它不再按顺序逐字处理,而是一次性读取整个序列,并让序列中的每个词直接与全句所有词建立关系。这种机制被称为自注意力。通过自注意力,每个 token 可以根据整句内容动态调整自己的表示,从而获得更完整的上下文信息。
同时,由于每个 token 的计算在一定程度上可以并行执行,模型训练效率也明显提升。这也为后来更大规模语言模型的出现提供了架构基础。
理解大模型原理前,需要先理解几个基础概念。
文本进入模型前,会先被切割为 token。英文通常采用字节对编码方式,其思想是按照语料中的高频子词片段进行合并与拆分。例如,出现频率较高的词根、前缀、后缀可能被保留为一个 token,而罕见词则可能继续拆分为更小片段。中文则通常按字或子词进行切分。切分标准并非人工规则,而是通过统计语料自动学习得到。
token 并不是完整的词,也不是任意字符,而是模型在训练过程中形成的语义处理最小单位。模型后续所有计算都以 token 为基本单元。
文本无法直接被神经网络计算,因此每个 token 都会被映射为固定维度的向量。这个向量可以理解为 token 在初始语义空间中的位置。模型训练过程中,token 向量会不断调整,使得语义相近的 token 在向量空间中更接近。
同一个 token 在不同句子中可能有不同含义。因此,模型不能只依赖静态词向量,而需要根据上下文动态生成新的表示。例如,“苹果”可能表示水果,也可能表示某种电子设备。自注意力机制的核心作用,就是让每个 token 从全句其他 token 那里获取信息,从而生成与上下文相关的动态表示。
大语言模型通常由多层 Transformer 结构堆叠而成。每一层可以看作一个基本计算单元,主要包含以下模块:
该子层负责计算 token 之间的关联。输入是上一层的 token 表示,输出是融合了全句上下文信息的新表示。
自注意力主要完成信息聚合,而前馈网络则对每个 token 的表示进行非线性变换。自注意力让词之间交换信息,前馈网络则让每个位置在更高维空间重新表达这些信息,从而提炼出更抽象的特征。
残差连接围绕每个子层设置。其形式可以表示为:
y = x + F(x)
其中,x 是当前层的原始输入,F(x) 是自注意力子层或前馈网络子层处理后的变化量,y 是该子层最终输出。
需要注意的是,这里的残差并不是均方误差意义上的残差。残差连接中的“残差”表示子层在原始输入基础上需要补足的变化量。换句话说,模型不是完全推翻原始表示,而是在原始表示上增加一个修正项。
归一化用于稳定数值分布。每个子层输出后都进行归一化,避免深层网络中数值范围失控。因此,在一个标准 Transformer 层中,通常存在两组“残差连接 + 归一化”结构,分别对应自注意力子层和前馈网络子层。
下面按照数据进入一层 Transformer 后的处理顺序,说明完整链路。
每个 token 的当前向量表示记为 X。模型使用三组可学习权重矩阵,将其分别映射为查询向量 Q、键向量 K 和值向量 V:
Q = XWQ
K = XWK
V = XWV
三者含义不同:
可以这样理解:Q 是检索条件,K 是索引标签,V 是最终返回的内容。模型通过 Q 与 K 的匹配程度决定应该从 V 中读取多少信息。
举个例子,当某个 token 的查询向量接近另一些 token 的键向量时,说明它们语义关联较强。但最终融合进当前 token 的信息,并不是键向量本身,而是对应 token 的值向量。这也解释了为什么 K 与 V 需要区分:K 负责“是否匹配”,V 负责“匹配后输出什么”。
对每个 token,模型用它的 Q 与全句所有 token 的 K 进行点积运算,得到一组分数。这些分数表示当前 token 与其他 token 的相关程度。
点积结果可能随着向量维度增大而变大。为了避免数值进入 softmax 后过于集中,模型会将点积结果除以根号下 d_k,其中 d_k 是键向量的维度。这样做可以控制分数尺度,使训练过程更稳定。
此时得到的是分数矩阵,其含义并不是最终权重,而是未归一化的相关性度量。
分数矩阵经过 softmax 后,每个 token 与全句其他 token 的相关性被转换为 0 到 1 之间的权重。所有相关 token 的权重之和为 1。
这一步的意义在于,模型不是简单判断“相关还是不相关”,而是生成一种概率分布。权重高的 token 对当前 token 影响更大,权重低的 token 影响更小。这样模型可以同时融合多个上下文信息,而不是只依赖某一个最相关词。
得到注意力权重后,模型用这些权重对所有 token 的 V 向量进行加权求和。这样,当前 token 的新表示就包含全句信息,而不再只是自身静态词向量。
该过程可以整理为:
Attention(Q, K, V) = softmax(QKᵀ / √d_k) V
这个输出并不是最终层输出,还需要经过后续残差、归一化和前馈网络处理。
自注意力子层输出后,首先进行残差连接,即与子层输入相加。随后进行归一化,得到稳定的中间表示。
中间表示进入前馈网络。前馈网络通常包含非线性激活函数,可对 token 表示进行更高维的映射与变换。它并不改变 token 之间的排列关系,而是在每个位置上独立完成特征提取。
自注意力完成了“横向”信息聚合,前馈网络则完成“纵向”特征抽象。两者配合,使模型既能获得上下文,又能逐步形成更抽象的语义表示。
前馈网络输出后,再次执行残差连接和归一化。至此,一个 Transformer 层完成处理。其输出将作为下一层的输入继续向上传递。
经过多层堆叠后,模型最终得到每个 token 的深层上下文表示。这些表示可以被后续任务层用于分类、生成或其他预测。
深层神经网络容易出现梯度消失问题。反向传播时,梯度需要从输出层逐层传回输入层。如果每一层都是复合函数嵌套,梯度会被反复缩放。当网络很深时,靠近输入层的梯度可能趋近于零,导致参数无法有效更新。
残差连接通过引入恒等映射缓解了这一问题。设残差输出为:
y = x + F(x)
对 x 求导可得:
∂y/∂x = 1 + ∂F(x)/∂x
即使 ∂F(x)/∂x 很小,梯度中仍然存在一个常数项 1。这意味着反向传播时,梯度可以通过这条直连通道较为完整地传递到前层。无论 F(x) 本身带来多少衰减,输入 x 仍有一条近似恒等的路径可供梯度流动。
因此,残差连接并不是简单地把输入再加一遍。它本质上是在深层网络中保留了一条低阻力的信息通道,使模型更易于训练,也让更深的 Transformer 结构成为可能。
自注意力的核心思想,是让序列中的每个 token 主动从全句其他 token 处收集信息。与固定窗口或固定语法结构不同,这种收集是动态的、内容相关的。
每个 token 通过 Q 发起查询,用 K 匹配其他 token,再根据匹配程度从 V 中读取信息。这样,每个 token 的最终表示不仅与自身有关,也由整句内容共同决定。对于同一个词,在不同上下文中,注意力权重分布不同,最终获得的表示也不同。
例如,“银行”在“去银行取钱”和“河岸边的银行”两个语境中,会与不同 token 建立高权重关联。前者可能更关注“取钱”,后者可能更关注“河岸”。这种动态关系无法通过静态词向量直接表达,必须通过注意力计算完成。
此外,自注意力可以捕捉长距离依赖。因为每个 token 都直接与全句所有 token 计算关系,不存在逐层传递导致的信息衰减。无论两个 token 在文本中相距多远,都可以直接建立联系。
Transformer 和自注意力机制的主要优势如下:
第一,上下文建模能力强。每个 token 都能直接利用全局信息,适合处理长文本、复杂语义关系。
第二,并行效率较高。相较于串行递归结构,Transformer 的训练过程更容易并行化,能够支持大规模模型训练。
第三,表示能力灵活。多层堆叠使模型可以逐步从局部特征抽象到高层语义,再根据任务生成相应输出。
但同时也要看到限制:
第一,注意力计算复杂度较高。对于序列长度较长的场景,全量注意力计算会带来明显资源压力,需要额外设计优化策略。
第二,模型对训练数据质量敏感。注意力权重来自数据驱动学习,若训练数据存在偏差,模型可能学到不合理的关联。
第三,残差连接和归一化虽然有助于训练稳定,但并不能完全消除深层网络中的全部优化难题。超大规模模型仍需结合其他训练技巧。
残差连接中的 F(x) 不是预测误差,而是子层学习到的变化量。整个机制的重点是“保留原始信息并做增量修正”,而不是计算损失。
K 和 V 通过不同权重矩阵生成,角色不同。K 用于匹配查询相似度,V 用于输出实际内容。即便两个 token 对当前 token 都有较高注意力权重,它们最终贡献的是各自的 V,而不是 K。
注意力分数是经过 Q、K 映射后计算出的中间结果,并不完全等同于人类直觉中的语义相似度。它受模型训练目标影响,更多表示在当前任务语境下 token 之间应有多少信息交互。
虽然主流语言模型普遍采用 Transformer 架构,但编码器模型、解码器模型和编解码模型在注意力掩码、信息流向和任务定位上仍存在差异。不能简单认为它们只是同一结构的不同名称。
大语言模型的能力并非来自单一模块,而是由 token 切分、向量表示、自注意力、前馈网络、残差连接、归一化等多个机制协同构成。Transformer 通过自注意力让 token 之间直接建立全局关系,通过残差连接让深层网络保留稳定梯度通道,通过前馈网络逐层提炼语义特征,最终形成可支撑多种语言任务的通用表示能力。
理解这些原理,有助于更准确判断模型行为:为什么同一个词在不同上下文中会有不同含义,为什么深层模型仍可稳定训练,为什么生成结果会受上下文影响,以及在不同任务中应选择哪类架构更合适。对于开发者来说,掌握这些底层机制,也能为模型微调、推理优化、长文本处理和工程落地提供更清晰的判断依据。