Transformer模型中的维度变化主要发生在以下几个部分:输入嵌入(embedding)、多头注意力机制(Multi-Head Attention)、前馈神经网络(Feed-Forward Neural Network)以及残差连接和层归一化(Residual Connection and Layer Normalization)。下面详细说明各部分的维度变化:
1. 输入嵌入
输入序列 X X X 的维度通常为 ( n , d ) (n, d) (n,d),其中 n n n 是序列长度, d d d 是嵌入维度。假设输入是一个词汇表索引序列,经过嵌入层(Embedding Layer)后,每个索引被转换为一个 d d d 维的向量。
Input Embedding: X ∈ R n × d \text{Input Embedding:} \quad X \in \mathbb{R}^{n \times d} Input Embedding:X∈Rn×d
2. 位置编码(Positional Encoding)
为了引入位置信息,Transformer会将位置编码(Positional Encoding)添加到输入嵌入中。位置编码的维度与输入嵌入的维度相同。
Positional Encoding:
P
∈
R
n
×
d
\text{Positional Encoding:} \quad P \in \mathbb{R}^{n \times d}
Positional Encoding:P∈Rn×d
Input with Positional Encoding:
X
′
=
X
+
P
\text{Input with Positional Encoding:} \quad X' = X + P
Input with Positional Encoding:X′=X+P
3. 多头注意力机制(Multi-Head Attention)
多头注意力机制将输入分成 h h h 个头,每个头的维度为 d k = d / h d_k = d / h dk=d/h。具体步骤如下:
- 线性变换生成查询、键、值矩阵:
Q = X ′ W Q , K = X ′ W K , V = X ′ W V Q = X'W_Q, \quad K = X'W_K, \quad V = X'W_V Q=X′WQ,K=X′WK,V=X′WV
其中, W Q , W K , W V ∈ R d × d W_Q, W_K, W_V \in \mathbb{R}^{d \times d} WQ,WK,WV∈Rd×d。 - 分成多个头:
Q i , K i , V i ∈ R n × d k Q_i, K_i, V_i \in \mathbb{R}^{n \times d_k} Qi,Ki,Vi∈Rn×dk
其中, i = 1 , 2 , . . . , h i = 1, 2, ..., h i=1,2,...,h。 - 每个头独立计算注意力得分和加权和:
Attention i ( Q i , K i , V i ) = softmax ( Q i K i T d k ) V i \text{Attention}_i(Q_i, K_i, V_i) = \text{softmax}\left(\frac{Q_i K_i^T}{\sqrt{d_k}}\right) V_i Attentioni(Qi,Ki,Vi)=softmax(dkQiKiT)Vi - 拼接所有头的输出:
Concat ( head 1 , head 2 , . . . , head h ) ∈ R n × d \text{Concat}( \text{head}_1, \text{head}_2, ..., \text{head}_h) \in \mathbb{R}^{n \times d} Concat(head1,head2,...,headh)∈Rn×d - 通过线性变换得到最终输出:
Multi-Head Output = Concat ⋅ W O \text{Multi-Head Output} = \text{Concat} \cdot W_O Multi-Head Output=Concat⋅WO
其中, W O ∈ R d × d W_O \in \mathbb{R}^{d \times d} WO∈Rd×d。
4. 前馈神经网络(Feed-Forward Neural Network)
前馈神经网络包括两个线性变换和一个激活函数(通常是ReLU),其输入和输出维度均为 d d d。
- 第一层线性变换:
F F N 1 ( X ) = ReLU ( X W 1 + b 1 ) FFN_1(X) = \text{ReLU}(XW_1 + b_1) FFN1(X)=ReLU(XW1+b1)
其中, W 1 ∈ R d × d f f , b 1 ∈ R d f f W_1 \in \mathbb{R}^{d \times d_{ff}}, b_1 \in \mathbb{R}^{d_{ff}} W1∈Rd×dff,b1∈Rdff,通常 d f f ≫ d d_{ff} \gg d dff≫d。 - 第二层线性变换:
F F N 2 ( X ) = F F N 1 ( X ) W 2 + b 2 FFN_2(X) = FFN_1(X)W_2 + b_2 FFN2(X)=FFN1(X)W2+b2
其中, W 2 ∈ R d f f × d , b 2 ∈ R d W_2 \in \mathbb{R}^{d_{ff} \times d}, b_2 \in \mathbb{R}^{d} W2∈Rdff×d,b2∈Rd。
5. 残差连接和层归一化(Residual Connection and Layer Normalization)
Transformer中的每个子层(包括多头注意力和前馈神经网络)后面都包含残差连接和层归一化。
Output = LayerNorm ( X + SubLayer ( X ) ) \text{Output} = \text{LayerNorm}(X + \text{SubLayer}(X)) Output=LayerNorm(X+SubLayer(X))
综上所述,Transformer模型在各个部分的维度变化如下:
- 输入嵌入: R n × d \mathbb{R}^{n \times d} Rn×d
- 位置编码: R n × d \mathbb{R}^{n \times d} Rn×d
- 多头注意力: R n × d \mathbb{R}^{n \times d} Rn×d
- 前馈神经网络: R n × d \mathbb{R}^{n \times d} Rn×d
- 残差连接和层归一化:
R
n
×
d
\mathbb{R}^{n \times d}
Rn×d
每个部分的输出维度保持不变,使得整个Transformer模型能够轻松堆叠多层,从而增加模型的深度和表达能力。