学习参考视频:【Transformer 算法原理与实战】https://www.bilibili.com/video/BV1ej1EBWEWu?vd_source=885c958fed22b3aa519cf675b9bbe233 up 主:炮哥带你学。
对比了几个课程,感觉这套 Transformer 课程直击重点,对新手友好,对transformer架构感兴趣的 推荐去看该视频课程。
另外其实原up主也有好多套讲cv的课程,做相关方向的朋友可以去学习参考一下
下面是我对 Transformer 架构的简单理解与该视频的一些笔记。
Transformer整体架构示意图![]()
注:该 Transformer 架构是用于机器翻译的。
首先看左边的输入部分,分为 input embeddings 和 positional encoding。
Inputs输入
公式:输入 = 词向量 + 位置编码
示意图
input embedding
embedding就是把 词变为词向量 的一个过程
目的:将每个自然语言词汇转化为对应的向量,该向量称为词向量。
公式:词向量 = 词嵌入矩阵 × 独热向量
示意图
独热向量(one-hot vector)只有一个位置为 1,其余均为 0。假设词表共有 v 个单词,则独热向量的维度为 v。
词嵌入矩阵形状为 d×v,初始化为随机值,属于可训练参数。
词嵌入矩阵与独热向量相乘相当于一次查表操作:若独热向量为 [1,0,…],则取出的词向量即为词嵌入矩阵的第一列。
(我习惯将每一行理解为一个词的向量表示,相当于做了一次转置,下文统一按"每一行为一个词向量"的约定来讲解。)
positional encoding位置编码
目的:为每个词向量添加对应的位置信息。
因为上一步得到的词向量不包含位置信息,而"我爱你"和"你爱我"含义并不相同,所以需要额外添加位置信息。
公式:
公式:
P E ( p o s , 2 i ) = sin ( p o s 10000 2 i d ) P E ( p o s , 2 i + 1 ) = cos ( p o s 10000 2 i d ) \begin{align*} PE(pos,2i) &= \sin\left(\frac{pos}{10000^{\frac{2i}{d}}}\right) \\ PE(pos,2i+1) &= \cos\left(\frac{pos}{10000^{\frac{2i}{d}}}\right) \end{align*}PE(pos,2i)PE(pos,2i+1)=sin(10000d2ipos)=cos(10000d2ipos)
特点:第 2i 项与第 2i+1 项分别对应同一角度的正弦与余弦,二者平方之和恒等于 1。
举例子:
假设查表得到:“篮球” 词向量:[0.2,0.5,-0.1,0.3]
计算得到 PE()=[0,1,0,1]
所以 inputs=[0.2,1.5,-0.1,1.3]
注:原论文中每个词向量的维度为 512 维。
Encoder编码器
一共三个结构:Multi-Head Attention、Add&Norm、Feed Forward。
Multi-Head Attention多头注意力机制
多头注意力机制可以说是 Transformer 最重要的架构之一,如果这里能够理解,后面的结构就都比较简单了。
作用:让输入的每个词向量都融入其他词向量的信息,即融合上下文信息。
输入 input 的维度为 L×d,经过该结构后输出矩阵的维度仍为 L×d。
- L:length,输入单词的数量
- d:dimension,维度
所谓"多头",指的是多套 Q、K、V。
先介绍单头注意力机制,即只有一套 Q、K、V 的情况。
Attention公式:
Attention ( Q , K , V ) = softmax ( Q K ⊤ d k ) V \text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)VAttention(Q,K,V)=softmax(dkQK⊤)V
其中,Q=Wq·input、K=Wk·input、V=Wv·input。
s o f t m a x ( z ) i = e z i ∑ j = 1 n e z j softmax(\boldsymbol{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}}softmax(z)i=∑j=1nezjezi
Wq、Wk、Wv 为可训练的权重矩阵,维度均为 d×dk。一般 dk≤d,降维可以减少计算开销。原论文中 d=512、dk=64,多头注意力共有 8 个头(8 套 QKV),由于 512=64×8,便于最后直接拼接。
符号含义
Q:Query 查询矩阵,代表要查询的内容,来自当前位置的 token,维度 n×dk。
K:Key 键矩阵,代表待匹配的索引键,是所有 token 的特征,维度 n×dk。
V:Value 值矩阵,代表最终要提取的信息,维度 n×dk。
QK^T:Q 和 K 的转置做矩阵乘法,得到相似度矩阵,衡量每个 Query 与各个 Key 之间的匹配程度。
dk:经过 Wq 等权重矩阵降维后的维度。
多头注意力机制示意图
提醒:原论文中 d=8×dk,所以右侧维度 8dk×d 应是一个方阵,图示此处略有小问题。
简单来说,多头注意力机制就是采用 8 套 QKV(即 8 套 Wq、Wk、Wv),分别独立执行注意力公式,QKV 各自降维到 dk(因为 d=8dk),最后将各头的结果直接拼接,从而保证输入输出维度不变。
注:自注意力机制中的"自"表示 Q、K、V 均来自同一个输入;若来自不同输入,则称为交叉注意力机制(Cross-Attention),解码器中便包含该结构。除此之外,二者在计算上没有区别。
Add&Norm残差连接与层归一化
Add残差连接
公式上很简单,就是输入矩阵与输出矩阵相加。
x o u t = x + SubLayer ( x ) \boldsymbol{x}_{out} = \boldsymbol{x} + \text{SubLayer}(\boldsymbol{x})xout=x+SubLayer(x)
作用:
- 解决深度模型的梯度消失问题,梯度可以通过直连支路直接回传;
- 让网络只需要学习残差,学习目标从"完整映射"简化为"增量修正",深层网络更容易训练。
Norm归一化
论文里指的是 LayerNorm 层归一化(与之对应的还有一个叫批归一化 BN)。
公式:
LayerNorm ( x ) = γ ⋅ x − μ σ 2 + ε + β \text{LayerNorm}(\boldsymbol{x}) = \gamma \cdot \frac{\boldsymbol{x}-\mu}{\sqrt{\sigma^2+\varepsilon}} + \betaLayerNorm(x)=γ⋅σ2+εx−μ+β
其中 γ 和 β 为可学习参数,μ 是均值,σ² 是方差,ε 是一个极小值(约等于零),用于防止分母为零,实际计算时可省略。
作用:
- 对每一个样本单独做归一化(BN 是对 batch 维度归一化,LN 是对特征维度归一化);
- 将特征拉到均值为 0、方差为 1 的分布,加速模型收敛、稳定训练;
- Transformer 使用 LN,不受 batch 大小影响,适配 NLP 变长序列。
✅ Transformer 原始论文顺序:先子层 → Add 残差相加 → LayerNorm
(现在很多实现是 Pre-LN:先 Norm 再进子层,原始论文是 Post-LN)
Feed Forward前馈神经网络
公式:
F F N ( x ) = max ( 0 , x W 1 + b 1 ) W 2 + b 2 \mathrm{FFN}(\boldsymbol{x})=\max(0,\boldsymbol{x}\boldsymbol{W}_{1}+b_{1})\boldsymbol{W}_{2}+b_{2}FFN(x)=max(0,xW1+b1)W2+b2
W1、W2 为权重矩阵,b1、b2 为偏置矩阵,ReLU(x)=max(0,x)。
作用:逐 token 独立做非线性特征变换,每个词向量单独计算,token 之间互不影响。
结构如下:
前馈神经网络 = linear 层 → ReLU → linear 层
这里进行了维度变换,维度变换过程:
- 第一层权重 W1:512 → 2048(升维)
- 经过 ReLU 激活函数,引入非线性特征
- 第二层权重 W2:2048 → 512(降维)
维度变化作用:先升维扩空间、激活学特征,后降维做浓缩、保维度,既提升了模型拟合能力,又满足了 Transformer 残差连接的结构要求。
Decoder解码器
解码器的结构大体上与编码器相同,相同的部分不再赘述,主要在两种注意力机制的变体:Masked Multi-Head Attention(掩码注意力机制)和 Cross-Attention(交叉注意力机制)。
Masked Multi-Head Attention因果掩码注意力机制
公式:
Attention ( Q , K , V ) = softmax ( Q K ⊤ d k + m a s k ) V \text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}+mask\right)VAttention(Q,K,V)=softmax(dkQK⊤+mask)V
图示:
mask 矩阵如图所示:左下角全为 0,右上角全为 -∞。
mask 矩阵的作用:将掩码加到注意力分数矩阵后再送入 softmax。softmax 对 -∞ 的计算结果趋近于 0,从而让当前 token 无法看到未来位置的 token,只能利用自身以及此前已出现的词,防止模型提前看到后面的单词,保证生成任务的因果性。
注:该结构也是 Transformer 在训练时能够实现并行的关键。
Cross-Attention交叉注意力机制
即为该结构,公式与多头注意力机制中的公式相同,区别在于这里的 Q、K 来自编码器,而 V 来自解码器。
作用:建立源句子与目标句子之间的关联。
架构总结
原论文中 N=6,整体结构如图左所示,图右是一些变体。
此处笔记写得并不详尽,原视频讲解得十分细致,感兴趣的朋友可前往下方视频链接深入学习。
【Transformer算法原理与实战】https://www.bilibili.com/video/BV1ej1EBWEWu?vd_source=885c958fed22b3aa519cf675b9bbe233