Transformer中Encoder的计算过程及各部分维度变化

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:XRn×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:PRn×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。具体步骤如下:

  1. 线性变换生成查询、键、值矩阵:
    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=XWQ,K=XWK,V=XWV
    其中, W Q , W K , W V ∈ R d × d W_Q, W_K, W_V \in \mathbb{R}^{d \times d} WQ,WK,WVRd×d
  2. 分成多个头:
    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,ViRn×dk
    其中, i = 1 , 2 , . . . , h i = 1, 2, ..., h i=1,2,...,h
  3. 每个头独立计算注意力得分和加权和:
    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(dk QiKiT)Vi
  4. 拼接所有头的输出:
    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
  5. 通过线性变换得到最终输出:
    Multi-Head Output = Concat ⋅ W O \text{Multi-Head Output} = \text{Concat} \cdot W_O Multi-Head Output=ConcatWO
    其中, W O ∈ R d × d W_O \in \mathbb{R}^{d \times d} WORd×d

4. 前馈神经网络(Feed-Forward Neural Network)

前馈神经网络包括两个线性变换和一个激活函数(通常是ReLU),其输入和输出维度均为 d d d

  1. 第一层线性变换:
    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}} W1Rd×dff,b1Rdff,通常 d f f ≫ d d_{ff} \gg d dffd
  2. 第二层线性变换:
    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} W2Rdff×d,b2Rd

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模型在各个部分的维度变化如下:

  1. 输入嵌入: R n × d \mathbb{R}^{n \times d} Rn×d
  2. 位置编码: R n × d \mathbb{R}^{n \times d} Rn×d
  3. 多头注意力: R n × d \mathbb{R}^{n \times d} Rn×d
  4. 前馈神经网络: R n × d \mathbb{R}^{n \times d} Rn×d
  5. 残差连接和层归一化: R n × d \mathbb{R}^{n \times d} Rn×d
    每个部分的输出维度保持不变,使得整个Transformer模型能够轻松堆叠多层,从而增加模型的深度和表达能力。
  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值