| 第27行: |
第27行: |
| | 第二个关键组成是前馈神经网络(Feed-Forward Network, FFN)。该子层对每个位置的表示独立地进行非线性变换,其形式可写为: | | 第二个关键组成是前馈神经网络(Feed-Forward Network, FFN)。该子层对每个位置的表示独立地进行非线性变换,其形式可写为: |
| | | | |
| − | <math>FFN(x) = max(0, xW_1 + b_1)W_2 + b_2</math> | + | <math>\mathrm{FFN}(x) = \max(0, xW_1 + b_1)W_2 + b_2</math> |
| | | | |
| | 这一结构本质上等价于对每个位置分别应用的两层全连接网络,也常被类比为通道维度上的“1×1卷积”,因为它不涉及不同位置之间的信息交互,而是对每个位置的特征进行独立映射与提升。 | | 这一结构本质上等价于对每个位置分别应用的两层全连接网络,也常被类比为通道维度上的“1×1卷积”,因为它不涉及不同位置之间的信息交互,而是对每个位置的特征进行独立映射与提升。 |
| 第33行: |
第33行: |
| | 第三个重要机制是贯穿各子层的残差连接与层归一化,其标准形式为: | | 第三个重要机制是贯穿各子层的残差连接与层归一化,其标准形式为: |
| | | | |
| − | <math>y = LayerNorm(x + Sublayer(x))</math> | + | <math>y = \mathrm{LayerNorm}(x + \mathrm{Sublayer}(x))</math> |
| | | | |
| | 这种设计一方面通过残差路径缓解梯度消失问题,使深层模型更易训练;另一方面通过层归一化稳定激活分布,从而提升收敛速度与模型表现。 | | 这种设计一方面通过残差路径缓解梯度消失问题,使深层模型更易训练;另一方面通过层归一化稳定激活分布,从而提升收敛速度与模型表现。 |
| | | | |
| | 整体来看,编码器层具有几个鲜明特征:它完全基于注意力机制来建模序列内部关系,不再依赖任何循环结构或卷积操作;同时,其计算过程是纯前馈的,这使得模型可以在所有位置上实现高度并行计算,从而显著提升训练效率。 | | 整体来看,编码器层具有几个鲜明特征:它完全基于注意力机制来建模序列内部关系,不再依赖任何循环结构或卷积操作;同时,其计算过程是纯前馈的,这使得模型可以在所有位置上实现高度并行计算,从而显著提升训练效率。 |
| | + | |
| | + | ===缩放点积注意力=== |
| | + | |
| | + | 缩放点积注意力是 Transformer 中最核心的计算机制,其基本形式可以表示为: |
| | + | <math> |
| | + | \mathrm{Attention}(Q, K, V) |
| | + | = \mathrm{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V |
| | + | </math> |
| | + | |
| | + | 在这一机制中,查询(Query)、键(Key)和值(Value)分别承担不同角色,可以用一个直观的类比来理解:Query 类似于“检索需求”,即你想寻找什么信息;Key 相当于“索引或标签”,用于描述每个候选信息的特征;Value 则是实际承载的信息内容。通过计算 Query 与 Key 之间的相似度,模型能够为每个 Value 分配不同的权重,从而实现对相关信息的加权聚合。 |
| | + | |
| | + | 之所以采用点积(dot-product)来计算相似度,主要是因为其计算形式可以高效地转化为矩阵乘法,从而充分利用现代硬件(如 GPU/TPU)的并行计算能力,相比其他相似度函数具有更高的效率和更好的工程适配性。 |
| | + | |
| | + | 然而,当键向量的维度<math>d_k</math>较大时,点积结果的数值范围会显著增大,从而使<math>\mathrm{softmax}</math>函数进入梯度极小的区域,影响训练稳定性。为了解决这一问题,引入了缩放因子<math>\frac{1}{\sqrt{d_k}}</math>。 |
| | + | |
| | + | 从数学角度看,若查询向量<math>q</math>和键向量<math>k</math>的各分量相互独立且方差为1,则其点积 |
| | + | <math> |
| | + | q \cdot k |
| | + | </math> |
| | + | 的方差为: |
| | + | <math> |
| | + | \mathrm{Var}(q \cdot k) = d_k |
| | + | </math> |
| | + | |
| | + | 因此,通过乘以缩放因子: |
| | + | <math> |
| | + | \frac{1}{\sqrt{d_k}} |
| | + | </math> |
| | + | 可以将结果的方差归一化到稳定范围,从而避免梯度消失问题,并提升模型训练的稳定性与收敛效果。 |