Transformer

Transformer 是一种基于自注意力机制(Self-Attention Mechanism)的深度学习模型,最初由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中提出。Transformer 在自然语言处理(NLP)任务中取得了显著的成果,特别是在机器翻译、文本生成和问答系统等领域。

Transformer 的计算流程

Transformer 的计算流程可以分为以下几个主要步骤:

  1. 输入嵌入(Input Embedding)
  2. 位置编码(Positional Encoding)
  3. 编码器(Encoder)
  4. 解码器(Decoder)
  5. 输出层(Output Layer)

1. 输入嵌入(Input Embedding)

  • 词嵌入(Word Embedding):将输入的单词转换为固定维度的向量。例如,如果词汇表大小为 V,嵌入维度为 d,那么词嵌入矩阵的形状为 (V, d)。
  • 公式
    [
    X = W_E \cdot I
    ]
    其中,(X) 是嵌入后的向量,(W_E) 是词嵌入矩阵,(I) 是输入的单词索引。

2. 位置编码(Positional Encoding)

  • 目的:由于 Transformer 模型没有循环结构,需要一种方式来引入顺序信息。位置编码通过添加一个与位置相关的向量来实现这一点。
  • 公式
    [
    PE{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d}}\right)
    ]
    [
    PE
    {(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d}}\right)
    ]
    其中,(pos) 是位置,(i) 是维度,(d) 是嵌入维度。

  • 操作:将位置编码向量与词嵌入向量相加:
    [
    X’ = X + PE
    ]

3. 编码器(Encoder)

  • 结构:编码器由多个相同的层堆叠而成,每层包含两个子层:

    1. 多头自注意力机制(Multi-Head Self-Attention)
    2. 前馈神经网络(Feed-Forward Neural Network)
  • 多头自注意力机制

    • 线性变换:将输入向量 (X’) 通过三个不同的线性变换(权重矩阵 (W_Q), (W_K), (W_V))得到查询向量 (Q)、键向量 (K) 和值向量 (V)。
    • 公式
      [
      Q = X’ \cdot W_Q, \quad K = X’ \cdot W_K, \quad V = X’ \cdot W_V
      ]
    • 自注意力计算
      [
      \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) \cdot V
      ]
      其中,(d_k) 是键向量的维度。
    • 多头机制:将自注意力机制分为多个头,每个头独立计算,然后将结果拼接起来,再通过一个线性变换:
      [
      \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h) \cdot W_O
      ]
      其中,(h) 是头的数量,(W_O) 是最终的线性变换矩阵。
  • 残差连接和层归一化

    • 残差连接:将输入直接加到输出上,以缓解梯度消失问题。
    • 层归一化:对每一层的输出进行归一化,以稳定训练过程。
    • 公式
      [
      \text{LayerNorm}(X + \text{Sublayer}(X))
      ]
  • 前馈神经网络

    • 结构:两层全连接网络,中间有激活函数(如 ReLU)。
    • 公式
      [
      \text{FFN}(X) = \text{Linear}(\text{ReLU}(\text{Linear}(X)))
      ]
    • 残差连接和层归一化
      [
      \text{LayerNorm}(X + \text{FFN}(X))
      ]

4. 解码器(Decoder)

  • 结构:解码器也由多个相同的层堆叠而成,每层包含三个子层:

    1. 掩码多头自注意力机制(Masked Multi-Head Self-Attention)
    2. 多头注意力机制(Multi-Head Attention)
    3. 前馈神经网络(Feed-Forward Neural Network)
  • 掩码多头自注意力机制

    • 目的:在生成输出时,防止当前位置看到未来的信息。
    • 掩码:在自注意力计算中,使用掩码矩阵 (M),使得当前位置不能看到未来的位置。
    • 公式
      [
      \text{MaskedAttention}(Q, K, V) = \text{softmax}\left(\frac{QK^T + M}{\sqrt{d_k}}\right) \cdot V
      ]
  • 多头注意力机制

    • 目的:允许解码器关注编码器的输出。
    • 公式
      [
      \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) \cdot V
      ]
      其中,(Q) 来自解码器,(K) 和 (V) 来自编码器。
  • 前馈神经网络

    • 结构:与编码器中的前馈神经网络相同。
    • 公式
      [
      \text{FFN}(X) = \text{Linear}(\text{ReLU}(\text{Linear}(X)))
      ]
  • 残差连接和层归一化

    • 公式
      [
      \text{LayerNorm}(X + \text{Sublayer}(X))
      ]

5. 输出层(Output Layer)

  • 线性变换:将解码器的输出通过一个线性变换,映射到词汇表的大小。
  • 公式
    [
    Y = \text{Linear}(X)
    ]
  • softmax:将线性变换的结果通过 softmax 函数,得到每个词的概率分布。
  • 公式
    [
    P = \text{softmax}(Y)
    ]

总结

Transformer 的计算流程包括输入嵌入、位置编码、编码器、解码器和输出层。通过多头自注意力机制和前馈神经网络,Transformer 能够有效地捕捉长距离依赖关系,并在多种 NLP 任务中取得优异的性能。希望这些解释能帮助你更好地理解 Transformer 的计算流程。如果有更多问题或需要进一步的解释,请告诉我。

references

https://zhuanlan.zhihu.com/p/77307258
https://zhuanlan.zhihu.com/p/47812375

Author

s-serenity

Posted on

2024-09-21

Updated on

2024-11-15

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.