哈工大神经网络与深度学习第三次总结
Transformer模型完全解读从原理到训练一文吃透前言在自然语言处理NLP领域Transformer模型的提出堪称里程碑式的事件。2017年Google团队发表了论文《Attention Is All You Need》彻底颠覆了以往基于循环神经网络RNN或卷积神经网络CNN的序列建模方式。Transformer仅依靠注意力机制Attention Mechanism就实现了机器翻译、文本生成等任务不仅效果更好而且训练效率大幅提升。一、Transformer概述1.1 诞生背景在Transformer之前主流的序列转换模型Sequence Transduction Models大多基于复杂的RNN或LSTM配合编码器-解码器结构。尽管LSTM和GRU在一定程度上缓解了长距离依赖问题但它们仍然存在两个主要缺陷顺序计算每个时间步依赖于前一步的输出无法并行训练速度慢。长距离依赖依然有限虽然LSTM门控机制改善了梯度消失但超过一定距离的语义关联仍然难以捕捉。Transformer的提出彻底解决了这些问题。它摒弃了递归和卷积完全依靠注意力机制来捕捉全局依赖同时支持高度并行化。1.2 Transformer的两大优势根据PPT中的总结可捕捉间隔较长的语义关联自注意力Self-Attention直接计算序列中任意两个位置的相关性距离不再是障碍。充分利用分布式GPU进行并行训练没有时间步依赖可以对整个序列同时计算极大提升了训练效率。二、Transformer总体架构Transformer的总体架构可以分为四大模块输入部分源文本和目标文本的嵌入 位置编码编码器部分多个编码器层堆叠每个层包含自注意力和前馈网络解码器部分多个解码器层堆叠包含带掩码的自注意力、编码器-解码器注意力和前馈网络输出部分线性变换 Softmax生成概率分布下面我们逐部分深入。三、输入部分详解3.1 整体工作流程输入部分的主要任务将原始文本转换成模型可以处理的向量序列。对于输入句子中的每一个单词我们生成一个表示向量X该向量由两部分相加得到词嵌入将单词映射为稠密向量位置编码注入单词的位置信息3.2 词嵌入Word Embedding词嵌入的步骤分词将输入文本以单词或子词为单位切分得到一个token序列。对齐由于不同句子长度不同通过剪切或填充padding使同一个batch内的句子长度一致。独热编码每个token用一个高维独热向量表示维度等于词汇表大小。降维映射通过一个可训练的嵌入矩阵d×vv为词汇表大小d为嵌入维度通常d≪v将独热向量映射为低维稠密向量。这个映射矩阵通过训练学习得到。示例假设词汇表有5个词嵌入维度为2。那么每个词会映射为一个2维向量。Word2Vec是一种经典的预训练词嵌入方法它通过一个简单的双层神经网络从大量文本中学习单词之间的语义关系。3.3 位置编码Positional Encoding为什么要位置编码Transformer的自注意力机制本身是置换不变的即打乱输入顺序输出也会相应打乱但单独一个词的表示不会因为位置而改变。然而自然语言中单词顺序至关重要。例如“狗咬人”和“人咬狗”含义完全不同。因此必须显式注入位置信息。几种尝试整数编码直接用位置1,2,3,... 作为编码但数值太大与词嵌入值通常较小相加会淹没语义信息。二进制编码将位置表示为二进制位但相邻位置的二进制向量可能发生多位跳变例如3011到4100导致表示不连续不符合位置平滑变化的直觉。最终方案正弦位置编码Google团队提出了一种正弦位置编码Sinusoidal Positional Encoding其公式如下其中pos是单词在句子中的位置0,1,2,...i是维度索引0 ≤ i d/2d是嵌入维度特点每个维度的值都在 [-1, 1] 之间与词嵌入值域匹配。不同维度具有不同波长低维度变化快捕捉短距离位置关系高维度变化慢捕捉长距离位置关系。由于正弦和余弦的线性性质模型可以轻松学习到相对位置关系因为PE(posk)可以表示为PE(pos)的线性函数。3.4 输出嵌入在机器翻译等任务中解码器也需要将目标语言的token转换为嵌入向量。方式与源语言完全相同只不过是在目标语言的词汇表上进行嵌入。四、编码器Encoder详解编码器由N个相同的层堆叠而成原论文中N6。每一层包含两个主要子层多头自注意力子层Multi-Head Self-Attention前馈全连接子层Feed-Forward Network每个子层后均接一个残差连接Residual Connection和层归一化Layer Normalization即LayerNorm(x Sublayer(x))。4.1 自注意力机制Self-Attention为什么需要自注意力一个单词的语义往往取决于上下文。例如“bank”可以指银行或河岸具体含义由句子中其他词决定。传统的词嵌入为每个词赋予固定向量无法反映上下文。自注意力机制能够根据上下文动态调整每个词的表示。基本思想我们希望通过其他词尤其是相关词来“修正”当前词的向量。修正量取决于两个方面其他词的“值”Value其他词与当前词的“相关度”数学上可以理解为注意力机制公式Scaled Dot-Product Attention给定一个查询Query、一组键Key和值Value输出是值的加权和权重由查询与键的相似度决定Q当前词的查询向量K所有词的键向量V所有词的值向量dk键向量的维度缩放因子dk防止点积过大导致softmax梯度极小在自注意力中Q,K,V都来自同一个输入序列但通过不同的权重矩阵变换得到。具体计算步骤生成 Q、K、V对于输入矩阵Xn×d通过三个可训练的权重矩阵WQ,WK,WV计算QXWQ,KXWK,VXWV计算注意力分数得到一个n×n的矩阵其中第i行第j列表示第i个词对第j个词的注意力分数。Softmax归一化对每一行进行softmax使权重和为1。加权求和Z就是自注意力层在该位置的输出。4.2 多头注意力Multi-Head Attention单头注意力可能只关注一种相关性如语法或语义。为了捕获更丰富的特征Transformer引入了多头注意力。做法将Q,K,V通过多组不同的权重矩阵头分别线性投影到多个低维空间。每组独立计算注意力得到多个Zi。将所有Zi拼接起来再通过一个额外的权重矩阵WO线性变换得到最终的输出。公式其中优点每个头可以关注不同的特征如短距离、长距离、特定词汇模式等。增加模型容量而不增加计算量太多因为每个头的维度降低。4.3 前馈全连接网络Feed-Forward Network, FFN每个编码器层还包含一个全连接的前馈网络它对每个位置的向量独立地进行非线性变换第一层将维度从d扩展到dff通常为2048使用ReLU激活。第二层将维度从dff降回d。这个FFN在不同位置是参数共享的但不同层之间参数不同。4.4 残差连接与层归一化残差连接将子层的输入与输出相加有助于梯度流动缓解深层网络训练困难。层归一化对每个样本的所有特征进行归一化与批归一化不同使每一层的输入具有稳定的均值和方差加速收敛。五、解码器Decoder详解解码器也由N个相同的层堆叠而成。每一层包含三个子层带掩码的多头自注意力子层Masked Multi-Head Self-Attention编码器-解码器多头注意力子层Encoder-Decoder Multi-Head Attention前馈全连接子层同样每个子层后都有残差连接和层归一化。5.1 带掩码的自注意力Masked Self-Attention在自回归生成过程中例如逐词翻译解码器在预测第t个词时不能看到第t个词之后的词未来信息。为此在自注意力计算时需要将未来位置掩盖。实现方式在计算 scores 矩阵后将上三角部分包括对角线设置为-∞这样softmax后这些位置的权重为0。示例来自PPT的表格未归一化的注意力模式中未来位置设为负无穷经过softmax后变为0。5.2 编码器-解码器注意力这个子层的目的是让解码器关注输入序列的相关部分。它的Q来自解码器上一层的输出而K和V来自编码器的最终输出。这样每个解码器位置都可以“查询”整个输入序列找到最相关的信息。5.3 解码器中的前馈网络与编码器完全相同。六、输出部分解码器输出的向量维度d需要通过一个线性层映射到词汇表大小v再经过Softmax得到每个词的概率分布。线性层维度从d变为v。Softmax将logits转换为概率概率最大的词即为预测的下一个词。七、网络训练7.1 训练数据与预处理英-德翻译WMT2014约450万句对共享约37000个BPE字节对编码token。英-法翻译WMT2014约3600万句对词汇量32000。句子对按长度排序后分批每个batch约25000个源token和25000个目标token。7.2 训练过程以翻译为例输入源句子如中文“我打算买一辆新车”和目标句子英文“I am going to buy a new car”。解码器以开始符如SOS作为初始输入。模型逐步预测下一个词。每一步预测结果与真实目标词计算交叉熵损失。损失反向传播更新所有参数包括嵌入、注意力权重、FFN等。重复直到收敛。注意在训练阶段解码器采用教师强制Teacher Forcing即输入正确的目标词序列但通过掩码确保不能看到未来词而不是使用自己的预测作为输入。7.3 硬件与时间硬件8个NVIDIA P100 GPU基础模型每个训练步0.4秒训练10万步12小时大模型每个训练步1.0秒训练30万步3.5天7.4 实验结果模型英-德 BLEU英-法 BLEUTransformer基础27.338.1Transformer大28.441.0相比之前的先进模型GNMT、ConvS2S等Transformer在更低的训练成本下取得了更高的BLEU分数。八、总结与思考8.1 Transformer的核心创新纯注意力架构完全抛弃RNN和CNN开创了新的范式。多头自注意力同时关注不同语义空间捕捉丰富特征。位置编码巧妙注入顺序信息不破坏并行性。残差层归一化支持深层网络稳定训练。8.2 对后续研究的影响BERT仅使用Transformer的编码器通过掩码语言模型预训练刷新了NLP排行榜。GPT系列仅使用Transformer的解码器通过自回归语言模型预训练实现了强大的文本生成能力。ViT将图像切块作为序列输入Transformer标志着Transformer进军计算机视觉。8.3 未来展望尽管Transformer已取得巨大成功但仍有改进空间二次复杂度自注意力计算与序列长度的平方成正比对于超长文本如整本书仍是挑战催生了Longformer、BigBird、稀疏注意力等变体。位置编码的改进相对位置编码、旋转位置编码RoPE等。更高效的变体如Linformer、Reformer等。结语Transformer模型通过精巧的注意力机制设计在并行性和长距离依赖捕获上取得了突破成为当前自然语言处理乃至人工智能领域的基石。希望这篇详尽的总结能帮助你深入理解Transformer的每一个角落。如果你正在学习或应用Transformer不妨从手动实现一个小型模型开始体验注意力计算的魅力。