大模型基础 | 第三章 Transformer介绍
本章系统性地解析了Transformer模型的核心架构与关键机制,揭示了其作为现代大语言模型基石的深层原理。Transformer由谷歌于2017年在《Attention Is All You Need》论文中提出,凭借其完全基于注意力机制的创新设计,彻底改变了自然语言处理领域的格局,成为BERT、Llama等主流模型的核心组件。
Transformer大模型的基石
Transformer凭借其结构优雅性与卓越性能,已成为自然语言处理等领域中具有里程碑意义的模型。本节将深入解析Transformer架构的设计精妙之处,系统阐述其工作机制,帮助读者理解该模型如何高效处理信息并捕捉数据中复杂的依赖关系。
该模型由谷歌在2017年发表的论文《Attention Is All You Need》中首次提出。如今,绝大多数主流语言模型(如BERT、Llama等)均以Transformer作为核心特征提取组件。
Transformer的结构如下,分成编码器和解码器两大部分,根据模型参数量的不同堆叠的层数也是不同的。
下图展示了一个Transformer模型每一层的结构
整体框架
编码器部分
- 输入文本:这是原始的输入文本数据。
- 位置编码:为了使模型能够理解序列中元素的位置信息,会在输入文本向量上加上位置编码。
- 多头注意力:这是一个关键组件,它允许模型关注输入序列的不同部分,从而捕捉到更丰富的上下文信息。多头注意力机制通过多个注意力头并行工作,每个注意力头独立地计算注意力分数,然后将结果拼接起来并通过一个线性层进行转换。
- 残差连接和层归一化:在多头注意力之后,会有一个残差连接,即将输入直接加到输出上,以及层归一化,以帮助稳定和加速训练过程。
- 前馈神经网络:这是一个全连接的前馈神经网络,用于进一步处理经过注意力机制处理后的特征。
- 重复上述步骤:编码器通常包含多个相同的层堆叠在一起,每一层都执行类似的处理步骤。
解码器部分
- 已输出的文本:这是模型已经生成的部分输出文本。
- 位置编码:同样地,位置编码被添加到输出文本向量上。
- 掩码多头注意力:这是解码器特有的一个组件,它不仅使用多头注意力机制,还应用了一个掩码,以确保在生成某个时间步的输出时,只能看到之前的时间步的信息,而不能看到未来的信息。
- 多头注意力:与编码器中的多头注意力类似,但在这里它用于关注编码器的输出,以便解码器可以利用编码器提取的特征。
- 残差连接和层归一化:与编码器相同,用于稳定和加速训练。
- 前馈神经网络:另一个全连接的前馈神经网络,用于进一步处理特征。
- 全连接层和softmax:最后,通过一个全连接层和softmax函数,将解码器的输出转换为概率分布,表示下一个词的可能性。
整个模型通过这种方式,能够在给定输入文本的情况下,生成相应的输出文本,如机器翻译、文本摘要等任务。
我们下面会拆解几个组件进行讲解
输入嵌入层
首先是输入的嵌入层,我们首先需要将文本序列转换成一种计算机能够理解的形式,即向量表示。考虑到自注意力机制本身并不具备识别词元顺序的能力,而词序对于理解文本意义至关重要,因此,我们在构建每个词元的向量表示时,不仅包含了词本身的语义信息(词向量),还融入了其在句子中的位置信息(位置编码)。这样,通过将词向量与位置编码相加,我们为模型提供了既包含词汇意义又体现词序结构的综合信息。随后,这些精心构造的文本序列向量被送入多头注意力层,以进行更深层次的信息交互和特征提取。
自注意力 Self-Attention
想象一下,当我们阅读一篇文章时,我们的大脑会自动地将每个词与文章中的其他词进行关联,以理解整个句子或段落的意思。自注意力机制正是模仿了这种人类阅读和理解的方式。
在自注意力机制中,对于输入序列中的每个词元,我们首先通过线性变换得到其查询向量(query)、键向量(key)和值向量(value)。假设输入序列的嵌入表示为 X∈Rn×dmodelX \in \mathbb{R}^{n \times d_{\text{model}}}X∈Rn×dmodel,其中 nnn 是序列长度,dmodeld_{\text{model}}dmodel 是嵌入维度。
我们定义三个可学习的权重矩阵:
WQ∈Rdmodel×dk,WK∈Rdmodel×dk,WV∈Rdmodel×dv W_Q \in \mathbb{R}^{d_{\text{model}} \times d_k}, \quad W_K \in \mathbb{R}^{d_{\text{model}} \times d_k}, \quad W_V \in \mathbb{R}^{d_{\text{model}} \times d_v} WQ∈Rdmodel×dk,WK∈Rdmodel×dk,WV∈Rdmodel×dv
其中设置 dk=dvd_k = d_vdk=dv,则每个词元的查询、键、值向量计算如下:
Q=XWQ,K=XWK,V=XWV Q = X W_Q, \quad K = X W_K, \quad V = X W_V Q=XWQ,K=XWK,V=XWV
接下来,自注意力中先计算Q与K相乘结果公式如下:
Attention(Q,K,V)=softmax(QKTdk)V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V
然后再计算与V乘积结果
其中 dk\sqrt{d_k}dk 是缩放因子,用于防止点积过大导致 softmax 梯度消失。
多头注意力(Multi-Head Attention)
多头注意力能让模型能够同时从多个不同的角度去关注输入序列的不同部分,从而捕获更丰富、更细致的上下文依赖关系。这就像我们人类在理解一句话时,会同时关注其语法结构、关键词、情感色彩和语义焦点等多个方面,而不是只盯着一个点。
在多头注意力(Multi-Head Attention)最白话的意思就是有多个注意力,如上图所示,注意力过程并行执行h次,(例如h=8),每次使用不同的线性投影矩阵:
WQi∈Rdmodel×dk,WKi∈Rdmodel×dk,WVi∈Rdmodel×dv W_Q^i \in \mathbb{R}^{d_{\text{model}} \times d_k}, \quad W_K^i \in \mathbb{R}^{d_{\text{model}} \times d_k}, \quad W_V^i \in \mathbb{R}^{d_{\text{model}} \times d_v} WQi∈Rdmodel×dk,WKi∈Rdmodel×dk,WVi∈Rdmodel×dv
其中 WQi,WKi,WViW_Q^i, W_K^i, W_V^iWQi,WKi,WVi 是第i个注意力头的参数,i的总数为h,(h=8)
每个头的输出为:
headi=Attention(XWQi,XWKi,XWVi) \text{head}_i = \text{Attention}(X W_Q^i, X W_K^i, X W_V^i) headi=Attention(XWQi,XWKi,XWVi)
然后将所有头的输出拼接,并通过一个最终的线性变换得到多头注意力的输出:
MultiHead(Q,K,V)=Concat(head1,…,headh)WO \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h) W_O MultiHead(Q,K,V)=Concat(head1,…,headh)WO
其中 WO∈Rhdv×dmodelW_O \in \mathbb{R}^{h d_v \times d_{\text{model}}}WO∈Rhdv×dmodel。
这种机制允许模型在不同子空间中联合关注来自不同位置的信息,从而增强表示能力。
残差链接与归一化
在Transformer模型中,对于多头注意力机制产生的输出向量Z,首先会与输入向量x进行残差连接,形成一个新的向量x+Z。这一步骤旨在保留输入信息的同时,融入注意力机制带来的新信息。随后,为了确保数据的稳定性和一致性,会对x+Z应用层归一化操作,即LayerNorm(x+Z)。这一过程能够将x+Z的数据分布调整至标准正态分布,有效防止在训练过程中可能出现的梯度消失或梯度爆炸问题,进而提高模型训练的稳定性和效率。
前馈反馈层
在 Transformer 架构中,前馈反馈层模块应用于多头注意力机制输出的每一个位置上。假设多头注意力在某个位置的输出为 x∈Rdmodelx \in \mathbb{R}^{d_{\text{model}}}x∈Rdmodel
前馈神经网络由两个线性变换和一个 ReLU 激活函数组成,其计算公式为:
FFN(x)=W2⋅ReLU(W1x+b1)+b2 \text{FFN}(x) = W_2 \cdot \text{ReLU}(W_1 x + b_1) + b_2 FFN(x)=W2⋅ReLU(W1x+b1)+b2
由于 ReLU(z)=max(0,z)\text{ReLU}(z) = max(0,z)ReLU(z)=max(0,z),那么可得
FFN(x)=W2max(0,W1x+b1)+b2 \text{FFN}(x) = W_2 \max(0, W_1 x + b_1) + b_2 FFN(x)=W2max(0,W1x+b1)+b2
具体而言,前馈神经网络首先通过与权重矩阵W1和偏置向量b1的线性组合,将输入x映射到一个更高维度的特征空间中,接着利用ReLU激活函数引入非线性特性,对这些特征进行筛选和调整。最后,再通过与另一组权重矩阵W2和偏置向量b2的线性运算,将特征转换回原始维度的空间。
以上是Transformer编码器部分的主要功能,接下来我们介绍一下Transformer解码器的部分。
Transformer解码器
Transformer解码器与编码器比较多的功能重合,我们下面具体说一下不一致的功能内容。
掩码多头注意力层
在Transformer的解码器中,掩码多头注意力层会使用一个序列掩码(Sequence Mask),其核心目的就是防止解码器在生成当前词元时“偷看”未来时刻的词元信息,从而避免信息泄露,确保自回归生成过程的合理性。
下面我们来详细解释这个机制:
首先我们说一下掩码多头注意力的作用,在解码器的自注意力层中,为了保证模型在时间步t只能依赖于之前(包括当前)的输出,而不能看到未来的输出,我们需要对注意力权重进行掩码操作。
这里我们又重复一下,标准的注意力公式如下:
Attention(Q,K,V)=softmax(QKTdk)V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V
其中:
- Q:查询矩阵(Query)
- K:键矩阵(Key)
- V:值矩阵(Value)
- dkd_kdk:键向量的维度,用于缩放防止梯度消失/爆炸
在解码器中,我们引入一个上三角掩码(Upper Triangular Mask),记作M,其定义为:
Mi,j={0if i≥j−∞if i<j M_{i,j} = \begin{cases} 0 & \text{if } i \geq j \\ -\infty & \text{if } i < j \end{cases} Mi,j={0−∞if i≥jif i<j
实际计算中,用一个非常大的负数(如 -1e9)代替 −∞-\infty−∞,以避免数值问题。
假设序列长度为 3,掩码矩阵M 为:
M=[0−∞−∞00−∞000] M = \begin{bmatrix} 0 & -\infty & -\infty \\ 0 & 0 & -\infty \\ 0 & 0 & 0 \\ \end{bmatrix} M= 000−∞00−∞−∞0
然后根据标准的注意力公式,将掩码加到注意力得分上,就可以得到多头掩码注意力层:
MaskedAttention(Q,K,V)=softmax(QKTdk+M)V \text{MaskedAttention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}} + M\right)V MaskedAttention(Q,K,V)=softmax(dkQKT+M)V
举例说明一下,在 softmax 之前加上掩码矩阵M的效果可得
- 第1行(对应第1个时间步)只能关注位置1
- 第2行(对应第2个时间步)可以关注位置1和2
- 第3行(对应第3个时间步)可以关注位置1、2、3
这保证了每个位置只能看到自己及之前的位置,符合自回归生成逻辑。掩码多头注意力通过在 softmax 前加入一个上三角掩码M,使得注意力权重中未来位置的得分变为极小值(接近0),从而实现了对后续词元的“遮蔽”,确保了解码器的因果性(causality)。
总结
本章系统性地解析了Transformer模型的核心架构与关键机制,揭示了其作为现代大语言模型基石的深层原理。Transformer由谷歌于2017年在《Attention Is All You Need》论文中提出,凭借其完全基于注意力机制的创新设计,彻底改变了自然语言处理领域的格局,成为BERT、Llama等主流模型的核心组件。
模型整体由编码器和解码器两大部分堆叠而成。编码器负责对输入文本进行深度语义理解,其核心在于自注意力机制(Self-Attention),通过为每个词元生成查询(Q)、键(K)、值(V)向量,计算词元间的全局依赖关系,从而捕捉上下文信息。为了增强表示能力,模型采用多头注意力(Multi-Head Attention),允许多个注意力头并行工作,从不同子空间联合关注信息,捕获更丰富、更细致的语义特征。
为了确保模型能感知序列的顺序,输入部分引入了位置编码,将词序信息与词向量相加,弥补了自注意力机制本身对位置不敏感的缺陷。在每一层处理中,残差连接与层归一化被广泛应用于多头注意力和前馈神经网络之后,有效缓解了深层网络训练中的梯度问题,提升了训练的稳定性与效率。前馈神经网络则在每个位置上进行非线性变换,进一步提炼特征。
解码器结构与编码器相似,但引入了关键的掩码多头注意力机制。通过在自注意力计算中加入上三角掩码(Upper Triangular Mask),确保在生成当前词元时只能依赖于已生成的前序词元,防止信息泄露,保障了自回归生成过程的因果性。最终,解码器的输出经由全连接层和Softmax函数,转化为下一个词的概率分布,完成文本生成任务。
综上所述,Transformer通过自注意力、多头机制、位置编码、残差连接与掩码注意力等精巧设计,实现了对长距离依赖的高效建模和并行化训练,奠定了当前大模型时代的技术基础。
更多推荐
所有评论(0)