Coursera 笔记

Module 04 · Transformer Network

Transformer NetworkTransformer 网络

Coursera ↗

在之前的视频中,我们了解了 自注意力机制 和 多头注意力机制。现在,我们将把这些概念结合起来,构建完整的 Transformer 网络。下面,我们将带您一步一步地了解如何将这些注意力机制结合在一起,搭建 Transformer 架构。


步骤 1:输入与嵌入表示

我们将以句子 “Jane visite l'Afrique en septembre” 为例,展示如何通过 Transformer 进行翻译。为了简化,假设这个句子已经进行了嵌入(embedding),并且加入了句子的 开始标记(SOS) 和 结束标记(EOS)。

  • SOS(开始标记):用来标记翻译的开始。
  • EOS(结束标记):用来标记翻译的结束。

Transformer 网络的组成

1.编码器(Encoder)

  • 首先,嵌入向量被传递到 编码器块(Encoder Block)。
  • 编码器块包含了 多头注意力层(Multi-Head Attention),正如我们在前面的部分所讲过的,输入的 Q、K 和 V 来自于句子的嵌入表示,以及对应的权重矩阵 W。
  • 编码器块的输出会被传递给一个 前馈神经网络(Feed-Forward Neural Network),该网络帮助决定句子中的有趣特征。
  • 在 Transformer 论文中,编码器块会被 n 次重复,通常 n=6。


2.解码器(Decoder)

  • 解码器块的目标是输出英文翻译。
  • 第一个输出 是 开始标记(SOS),即翻译的开始。
  • 在每一步,解码器块会输入当前已经生成的翻译(初始时,只有开始标记)。
  • 解码器的第一个多头注意力块只使用 SOS 作为输入来计算 Q、K、V。
  • 之后的多头注意力块将根据已经生成的部分(如 SOS)来预测下一个单词。

解码器的工作流程

  1. 第一个多头注意力块
    输入是 SOS(开始标记),根据 Q、K、V 来进行计算。这个多头注意力块的输出用于生成下一个多头注意力块的 Q,而 K 和 V 则来自 编码器的输出。
  2. 第二个多头注意力块
    这个块的输入包括 Q(来自上一步的输出)和 K、V(来自编码器)。解码器通过查询(query)已翻译部分,提取来自 编码器 的上下文信息,来预测下一个单词。
  3. 前馈神经网络
    每个解码器块还会有一个前馈神经网络,帮助进行最终的预测。通过多次重复解码器块(通常也是 n=6),模型逐步生成每个词汇的翻译。

逐词生成与学习过程

  • 在翻译过程中,解码器逐词生成翻译结果:
    • 首次生成:“Jane”
    • 接着生成:visite
    • 然后是:l'Afrique
    • 最后,生成 en 和 september,并最终输出 EOS(结束标记)。


Transformer 网络的额外优化

除了核心的编码器和解码器块,Transformer 网络还包括一些优化机制,使其能够更好地处理输入序列。

1.位置编码(Positional Encoding)

  • 问题:自注意力机制本身并不关心词汇在句子中的位置,但句子的顺序对翻译至关重要。
  • 解决方案:通过 正弦(sine)和余弦(cosine) 函数的组合为每个单词添加位置编码。
位置 pos\text{pos} 编码维度 i 公式
Jane(位置 1) 0、1、2、3 使用正弦和余弦生成的编码向量
l'Afrique(位置 3) 0、1、2、3 生成不同的编码向量

通过这种方式,模型能够理解每个词在句子中的相对位置,从而更好地进行翻译。


2.残差连接与归一化

  • 残差连接:每个块的输入和输出通过残差连接传递,确保信息在整个架构中不被丢失。
  • 归一化(Layer Normalization):类似于 批量归一化(Batch Normalization),有助于加速训练过程。

3.输出层

  • 线性层与 Softmax 层:解码器的输出会通过一个 线性层,然后是 Softmax 层,最终生成下一个单词的概率分布。


训练过程中的掩码多头注意力(Masked Multi-Head Attention)

  • 训练与推理的区别:在训练过程中,我们有 完整的目标句子(例如从法语到英语的翻译),而在推理时,模型是 逐词生成 的。
  • 掩码多头注意力:在训练时,模型只“看到”已经生成的部分,而掩码机制会隐藏后续的单词,模拟生成过程中“逐步预测”的过程。

Transformer 网络的进一步优化

  • 除了位置编码和残差连接,Transformer 还使用了 BatchNorm 类似的层,称为 Add & Norm,帮助加速学习过程。
  • 通过这些优化,Transformer 在处理语言翻译任务时表现出色,能够同时计算多个维度的信息,并有效捕捉句子的上下文关系。

总结与展望

  • Transformer 网络 结合了 自注意力、多头注意力、位置编码、残差连接 等机制,使其在处理 序列到序列任务 时非常强大。
  • 通过逐步学习如何生成翻译的每个词,您现在可以理解 Transformer 的基本工作原理。
  • 在进一步探索中,您将会接触到更先进的模型,如 BERT 和 DistilBERT,它们在自然语言处理任务中具有重要的应用。

通过本周的编程练习,您将能够更深入地理解如何将 Transformer 网络应用到实际问题中,提升您的应用开发能力!