Transformer 算法核心架构与原理详解
Transformer 的核心思想是通过完全基于注意力机制的方式来建模序列关系,而不依赖传统序列模型(如 RNN 和 LSTM)的循环结构,极大提高了训练并行性,在自然语言处理等任务中取得了显著的成果。
Transformer 是一种基于注意力机制的深度学习模型,摒弃了 RNN 和 LSTM 的循环结构,显著提升了训练并行性。文章详细解析了其编码器 - 解码器架构、输入嵌入、位置编码、自注意力机制、多头注意力、前馈网络以及残差连接与层归一化等核心组件。通过引入位置编码解决顺序感知问题,利用掩码机制确保解码器的因果性,Transformer 在自然语言处理等领域取得了突破性成果。

Transformer 的核心思想是通过完全基于注意力机制的方式来建模序列关系,而不依赖传统序列模型(如 RNN 和 LSTM)的循环结构,极大提高了训练并行性,在自然语言处理等任务中取得了显著的成果。

Transformer 由编码器(Encoder)和解码器(Decoder)两部分组成。

编码器接收输入序列,将其映射为潜在表示。编码器由多个编码层堆叠组成,每个编码层包含两个子层:
解码器接收编码器的输出和目标序列,生成最终输出。它由多个解码层堆叠组成,每个解码层包含三个子层:

输入嵌入是将输入序列中的每个离散符号(例如单词或子词)转换为密集的向量表示(即嵌入向量)的过程。
计算公式如下:

由于 Transformer 没有像 RNN 或 LSTM 那样的序列顺序处理机制,它不能自动感知序列中词与词之间的顺序关系。因此,需要显式地引入位置编码来为每个词的表示添加位置信息。
位置编码通常通过正弦和余弦函数的组合来实现。
计算公式为:
$$PE(pos, 2i) = \sin(pos / 10000^{2i/d_{model}})$$ $$PE(pos, 2i+1) = \cos(pos / 10000^{2i/d_{model}})$$
其中:
然后将位置编码和输入嵌入相加形成最终的输入表示。

自注意力机制是 Transformer 的核心组件之一,它允许模型在处理一个输入序列时,关注序列中不同位置的相关性。
具体来说,输入序列的每个元素都可以动态关注序列中的其他元素,以捕获长距离的依赖关系。
生成查询、键和值(Q, K, V)向量
输入矩阵 $X$ 通过三个线性变换,生成查询(Query)、键(Key)、和值(Value)矩阵:
$$Q = XW^Q, \quad K = XW^K, \quad V = XW^V$$
其中 $W^Q, W^K, W^V$ 是可训练的参数矩阵。
计算注意力分数
通过矩阵 $Q$ 和矩阵 $K$ 的点积计算注意力分数:
$$\text{Score} = QK^T$$
这里的 $\sqrt{d_k}$ 是一个缩放因子,用来避免点积值过大导致梯度爆炸。
计算注意力权重
对注意力分数应用 Softmax,得到每个位置的注意力权重:
$$\text{Weights} = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)$$
加权求和
使用注意力权重对 $V$ 进行加权求和,得到最终的输出:
$$\text{Output} = \text{Weights} \cdot V$$

多头自注意力机制(Multi-Head Self-Attention)是对自注意力机制的扩展,它通过并行计算多个注意力头来捕获不同子空间中的特征。
假设有 $h$ 个头,每个头的维度为 $d_k = d_v = d_{model}/h$(通常满足 $d_{model} % h = 0$),多头机制的计算过程如下:
独立计算多个头的注意力输出
每个头独立计算对应的查询、键和值矩阵:
$$Q_i = XW_i^Q, \quad K_i = XW_i^K, \quad V_i = XW_i^V$$
然后计算每个头的自注意力输出:
$$\text{head}_i = \text{Attention}(Q_i, K_i, V_i)$$
拼接所有头的输出
将所有头的输出按列拼接,形成一个矩阵:
$$\text{Concat} = \text{head}_1 || \text{head}_2 || \dots || \text{head}_h$$
最终线性变换
拼接后的输出通过一个线性变换得到最终的输出。
$$\text{MultiHead}(Q, K, V) = \text{Concat} \cdot W^O$$
其中 $W^O$ 是线性变换矩阵。

前馈网络是 Transformer 中每个编码器和解码器层的组成部分,用于对每个位置的表示进行独立的非线性变换。
前馈网络通常由两个线性变换和一个 ReLU 激活函数组成。
公式如下:
$$\text{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2$$

残差连接与层归一化是 Transformer 中提升训练稳定性和加速收敛的关键技术。

残差连接将子层的输入与其输出相加,以便为深层网络提供梯度流的捷径。
其公式为:
$$\text{Output} = \text{LayerNorm}(x + \text{Sublayer}(x))$$
作用
层归一化对每个输入向量的所有维度进行归一化,确保输出的均值为 0,方差为 1。
公式为:
$$\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}}, \quad y = \gamma \hat{x} + \beta$$
作用
Masked 多头自注意力是 Transformer 解码器中的一个重要组件,用于确保模型在训练时保持因果性,即在生成序列时,当前位置只能看到当前位置及之前的位置,不能看到未来的标记。

具体来说,在计算注意力分数时引入了遮掩矩阵 $M$,对所有未来位置设置极小值(通常是负无穷)。
公式为:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}} + M\right)V$$
其中 $M$ 为遮掩矩阵:
编码器 - 解码器多头注意力是解码器中另一个关键组件,用于将解码器中的查询向量 (Query) 与编码器输出的键 (Key) 和值 (Value) 向量交互,从而动态提取输入序列的相关信息。

Transformer 通过引入注意力机制解决了传统序列模型的并行化难题,成为现代深度学习的基础架构。理解其核心组件对于掌握大模型技术至关重要。在实际应用中,结合具体的硬件环境和数据特性进行调优,能够进一步释放模型的性能潜力。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online