一、课程概述

本周课程围绕Google团队于2017年提出的Transformer模型展开,重点介绍了其诞生背景、核心架构、各部分功能以及训练方法。Transformer模型摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN),完全基于注意力机制,具有捕捉长距离语义依赖支持并行训练两大显著优势。

二、模型整体架构

Transformer模型整体分为四个主要部分:

  • 输入部分:源文本和目标文本的嵌入层及位置编码器

  • 编码器部分:由多个编码器层堆叠而成

  • 解码器部分:由多个解码器层堆叠而成

  • 输出部分:线性层 + Softmax层

三、输入部分

1. 词嵌入(Word Embedding)

  • 将输入文本以单词为单位切分,形成token序列。

  • 对不同长度的句子进行剪切或填充,使其对齐。

  • 使用独热向量(One-hot)表示单词,再通过训练得到的映射矩阵将高维独热向量映射为低维稠密向量(如Word2Vec)。

  • 示例:PyTorch中可使用nn.Embedding实现词嵌入。

2. 位置编码(Positional Encoding)

由于Transformer不包含循环或卷积结构,无法感知单词顺序,因此需要显式加入位置信息。

  • 整数编码:信噪比低,模型难以分离语义与位置信息。

  • 二进制编码:向量数字不连续,产生跳跃结果,违背直观。

  • 正弦位置编码(最终采用):使用不同频率的正弦和余弦函数生成位置向量,公式如下:

PE(pos,2i)=sin⁡(pos100002i/d)PE(pos,2i+1)=cos⁡(pos100002i/d)PE(pos,2i)PE(pos,2i+1)​=sin(100002i/dpos​)=cos(100002i/dpos​)​

其中 pospos 为位置索引,ii 为向量分量索引,dd 为模型维度。

四、编码器部分

编码器由 NN 个相同的编码器层堆叠而成(原论文中 N=6N=6)。每个编码器层包含两个子层:

  1. 多头自注意力子层 + 残差连接 + 层归一化(Add & Norm)

  2. 前馈全连接子层 + 残差连接 + 层归一化

1. 自注意力机制(Self-Attention)

  • 为每个输入单词生成三个向量:查询(Q)键(K)值(V)

  • 计算注意力分数:Attention(Q,K,V)=softmax(QKTdk)VAttention(Q,K,V)=softmax(dk​​QKT​)V。

  • 分母 dkdk​​ 用于稳定梯度。

2. 多头注意力(Multi-Head Attention)

  • 使用多组不同的权重矩阵并行计算多组 Q,K,VQ,K,V,每组得到一个输出 ZiZi​。

  • 将所有头的输出拼接,再通过一个权重矩阵 WOWO 线性变换,得到最终的 ZZ。

  • 多头机制使模型能够关注不同位置的不同表示子空间。

3. 残差连接与层归一化

  • 残差连接:Output=LayerNorm(X+Sublayer(X))Output=LayerNorm(X+Sublayer(X))。

  • 层归一化:对每一层神经元的输入进行归一化,加速收敛。

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

FFN(X)=max⁡(0,XW1+b1)W2+b2FFN(X)=max(0,XW1​+b1​)W2​+b2​

两层全连接,第一层激活函数为ReLU。

五、解码器部分

解码器同样由 NN 个相同的解码器层堆叠而成。每个解码器层包含三个子层:

  1. 带掩码的多头自注意力子层(Masked Multi-Head Attention)

  2. 编码器-解码器多头注意力子层(Cross Attention)

  3. 前馈全连接子层

每个子层后均接残差连接和层归一化。

1. 掩码操作(Mask)

  • 在自注意力计算中,每个位置只能关注到它之前的位置,不能看到未来信息。

  • 通过将未来位置的注意力分数设为 −∞−∞(softmax后为0)实现。

2. 交叉注意力

  • 解码器的第二个注意力子层:K 和 V 来自编码器的输出Q 来自解码器第一个子层的输出

  • 这使得解码器能够关注输入序列的所有位置。

六、输出部分

输出部分由一个线性层和一个Softmax层组成:

  • 线性层:将解码器输出向量映射到目标词汇表大小的维度。

  • Softmax层:将线性层输出转换为概率分布,预测下一个词。

七、网络训练

1. 训练数据

  • 英语-德语:WMT2014,约450万句子对,共享约37000个标记。

  • 英语-法语:WMT2014,约3600万句子对,词汇表大小32000。

2. 训练流程(以翻译为例)

  1. 在解码器输入端加入开始符(<start>)。

  2. 解码器逐词生成输出,每一步使用已生成的词作为输入。

  3. 计算预测词与真实下一个词的交叉熵损失

  4. 误差反向传播,更新模型参数。

3. 硬件与时间

  • 使用8个NVIDIA P100 GPU。

  • 基础模型:0.4秒/步,训练10万步(约12小时)。

  • 大模型:1.0秒/步,训练30万步(约3.5天)。

4. 训练结果(BLEU分数)

模型 EN-DE EN-FR
Transformer (base) 27.3 38.1
Transformer (big) 28.4 41.0

八、课程总结

  • Transformer模型完全基于注意力机制,无需循环或卷积结构,在机器翻译等序列转换任务上取得了当时最优的结果。

  • 自注意力多头注意力是其核心,能够有效捕捉上下文依赖。

  • 位置编码解决了序列顺序问题。

  • 残差连接层归一化保证了深层网络的训练稳定性。

  • 该架构已成为后续大规模预训练模型(如BERT、GPT、ViT等)的基础,并成功扩展到计算机视觉等领域。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐