当前位置: 首页 > news >正文

Transformer《Attention is all you need》

发布时间:2017/06/12

发布单位:Google、多伦多⼤学

简单摘要:直译为“变换器”,⼀种采⽤⾃注意⼒机制的深度学习模型,按照输⼊数据各部分重要

性不同⽽分配不同权重。⼴泛⽤于NLP和CV领域。

阅读重点self-attention 、cross-attention 、multi-head attention

核⼼技术attention的注意⼒机制、encoder-decoder架构

中⽂摘要:传统的序列转换模型使⽤复杂的循环或卷积神经⽹络,括编码器和解码器。表现最好的

模型会透过注意⼒机制连接编码器和解码器。⽽我们提出了⼀种新的简单⽹络结构Transformer,完全基于注意⼒机制,不再使⽤循环和卷积。我们在两个机器翻译任务上进⾏实验,发现这些模型在质量上的表现优越,并且更容易进⾏平⾏运算,训练所需时间明显减少。我们的模型在WMT 2014年英德翻译任务上达到了28.4 BLEU,⽐现有最佳结果(包括整体模型)提⾼了超过2 BLEU。在WMT 2014 年英法翻译任务中,我们的模型在⼋个GPU上训练3.5天后,取得了新的单模型最佳BLEU分数41.8,训练成本仅为⽂献中最佳模型的⼀⼩部分。我们展⽰了⽆论是在⼤量或有限的训练数据下, Transformer 在其他任务中的泛化能⼒,成功应⽤于英语组成句分析。

论⽂链接:https://arxiv.org/pdf/1706.03762.pdf

github链接:https://github.com/hyunwoongko/transformer


目录

基本概念补充

  BLEU

优点

局限性

应用场景

扩展与替代指标

EN-DE EN-FR

FLOPs (Floating Point Operations Per Second)每秒浮点运算次数)。

PPL 困惑度

核心理论部分

模型结构

注意力机制

Scaled Dot-Product Attention (放缩点积注意力机制)

Multi-Head Attention (多头注意力机制)

注意力机制三种不同的应用方式

Position-wise Feed-Forward Networks (位置性前馈网络--全连接)

Embeddings and Softmax

Positional Encoding(位置编码)

为什么是自注意力机制

训练

结论

机器翻译

模型版本

英语成分分析


基本概念补充

  BLEU

Bilingual Evaluation Understudy(双语评估辅助工具) ,评估机器翻译质量的经典指标。通过比较机器翻译结果与人工参考译文的相似度,量化翻译的准确性。

BLEU 的核心是计算 机器翻译文本人工参考译文之间的 n-gram(n 元语法)匹配程度,并通过统计匹配片段的比例来评估翻译质量。其设计理念是:优秀的机器翻译结果应包含更多与人工翻译一致的连续短语片段。

关键概念与计算步骤

  1. n-gram 匹配

    1. 统计机器翻译结果中,长度为 n(如 \(n=1,2,3,4\))的连续词语片段(n-gram)在参考译文中出现的次数。例如:

    2. 机器翻译:"the cat is on the mat"

    3. 参考译文:"the cat sits on the mat"

    4. 1-gram(单词)匹配:6 个词中有 5 个匹配(the, cat, on, the, mat);

    5. 2-gram(双词)匹配:如 "the cat"、"on the"、"the mat" 等片段的匹配情况。

  2. 修正计数(Clipped Count)

    1. 为避免机器翻译过度重复某个片段(如重复生成某个词),会将每个 n-gram 的匹配次数限制为参考译文中该 n-gram 出现的最大次数。

  3. 几何平均与权重

    1. 对不同长度的 n-gram 匹配率取 几何平均(而非算术平均),并可设置权重(如常用的等权重分配)。例如,计算 1-gram 到 4-gram 的平均匹配率:

    2. 流畅度惩罚(Brevity Penalty, BP)

      1. 若机器翻译结果过短,会引入惩罚因子,避免系统生成过短的无意义片段。最终 BLEU 值为各 n-gram 平均匹配率与 BP 的乘积。

                      

      优点
      • 计算高效:无需复杂语义分析,适合大规模自动评估。

      • 与人类判断相关性较高:在多数情况下,BLEU 分数高的翻译结果更接近人工译文。

      • 行业标准:被广泛用于机器翻译竞赛(如 WMT)和学术论文中。

      局限性
      • 依赖参考译文:若参考译文不唯一或质量差,评估结果可能有偏差。

      • 侧重词汇匹配:仅统计词语片段的重合度,无法捕捉语义差异(如同义词替换、句式变化)。

      • 对长距离依赖不敏感:难以评估句子层面的连贯性和逻辑一致性。

      • 单方向评估:仅从机器译文匹配参考译文的角度评估,未考虑译文的流畅性和可读性。

      应用场景
      • 机器翻译系统开发:作为优化模型的反馈指标(如在训练中最大化 BLEU 分数)。

      • 翻译质量对比:比较不同翻译模型(如神经网络翻译 vs. 统计机器翻译)的效果。

      • 多语言评估:支持多种语言的机器翻译评测(需对应语言的参考译文)。

      扩展与替代指标

      随着深度学习发展,更复杂的评估指标(如 ROUGE、METEOR、COMET)逐渐被提出,它们更注重语义理解和上下文连贯性。但 BLEU 因其简单高效,仍是机器翻译领域的基础指标之一。

      EN-DE EN-FR

      • EN-DE:英语(English)与德语(German)的互译或语言组合。

      • EN-FR:英语(English)与法语(French)的互译或语言组合。

      FLOPs (Floating Point Operations Per Second)每秒浮点运算次数)

      计算机硬件(尤其是处理器、显卡等)计算能力的重要指标,常用于评估深度学习模型的计算复杂度。

      • 单位:

        • 1 FLOP:一次浮点运算(如加法、乘法、除法等)。

        • 常用单位:

          • GFLOPs:\(10^9\) FLOPs(十亿次)。

          • TFLOPs:\(10^{12}\) FLOPs(万亿次)。

          • PFLOPs:\(10^{15}\) FLOPs(千万亿次)。

      • 模型的 FLOPs 越高,通常意味着:

        • 参数量更大(如更多层、更宽的网络)。

        • 计算成本更高(训练 / 推理耗时更长)。

        • 对硬件算力要求更高(需 GPU/TPU 等加速设备)。

      • 低算力设备(如手机、嵌入式系统)需部署低 FLOPs 模型(如 MobileNet、EfficientNet)。

      • 高算力设备(如数据中心 GPU)可支持高 FLOPs 模型(如大型 Transformer)。

      • FLOPs 是理论值,实际计算速度还受以下因素影响:

        • 硬件架构(如 CPU 的指令集、GPU 的并行计算单元)。

        • 内存带宽(数据搬运速度瓶颈)。

        • 软件优化(如 cuDNN 库对卷积的优化)

      • 计算方式

      常见误区

      1. FLOPs ≠ 实际速度: 硬件的实际性能还需考虑内存、并行效率等(如 CPU 的 FLOPs 常低于 GPU,但某些串行任务更快)。

      2. 低 FLOPs 模型不一定轻量: 参数量(Parameters)和 FLOPs 相关但不同,例如:

        1. 稀疏模型参数量少,但 FLOPs 可能因非零权重计算而较高。

      3. 推理与训练的 FLOPs 差异: 训练时需计算梯度,FLOPs 约为推理的 2-3 倍(如反向传播)。

      PPL 困惑度

      评估语言模型性能的关键指标,用于衡量模型对未知数据的预测能力。

      困惑度越低,说明模型预测越准确,对语言的理解和生成能力越强。


      核心理论部分

      模型结构

      注意力机制

      核心:

      query和一系列key-value对的匹配产生output,query, keys, value,全是向量。

      output = value的加权和,权重=适配性函数(query, value对应的key)

      Scaled Dot-Product Attention (放缩点积注意力机制)

      两种常见的注意力机制

      additive attention,加性注意力机制:通过一层简单的全连接来计算输出

      dot-product (multi-plicative) attention,乘性注意力机制:与左侧完全相同,没有放缩因子√dk

      理论上两种方式计算复杂度接近,实际上点积方式更快更省空间,(矩阵乘法可优化)

      对于维度较小的任务,两种注意力方式性能相近。

      对于维度较大的任务,加性注意力机制优于乘性注意力机制(大维度导致点积变大(假设QK均值为0方差为1的正太分布,维度dk的点积均值为0,方差为dk.),导致softmax梯度减小

      优化--对点积进行优化,除以放缩因子√dk

      Multi-Head Attention (多头注意力机制)

      注意力机制三种不同的应用方式

      Position-wise Feed-Forward Networks (位置性前馈网络--全连接)

      Embeddings and Softmax
      1. 在不同embedding层和pre-softmax层之间共享权重矩阵。

      2. 用全连接和softmax预测下一个token的概率.

      3. 编码层 ×√ dmode

      4. 不同的类型的层之间的复杂度对比,n:序列长度;d:向量维度;k:卷积核大小;r:受限自注意力机制的领域大小

      Positional Encoding(位置编码)
      1. Positional Encoding和输入的input embeddings维度相同,可相加(聚合)

      2. 计算方式:

          pos表示位置,i表示维度

          每个位置编码的维度对应一个正弦波。

          这些波长从2π到10000·2π构成几何级数。

          “假设它能让模型通过相对位置轻松学习注意力机制”

          因为对于任何固定的偏移量k,P Epos+k可以表示为P Epos的线性函数。

      3. 可学习的位置编码与正弦波版本效果相近。

      4. 正弦波版本位置编码可能允许模型外推到比训练过程中遇到的更长的序列长度。

      为什么是自注意力机制
      1. 每层计算复杂度:

        1. 序列长度小于模型维度时,自注意力机制比循环层速度更快

        2. 为了提升计算能力,自注意力机制可以被限制为仅考虑以相应输出位置为中心的输入序列中大小为r的邻域。将增加最大路径长度至O(n/r)

        3. 可分离卷积,将计算复杂度降至O(k · n · d + n · d ^2^ ), 当K=n时卷积的计算复杂度与自注意力机制与全连接的结合方式相当。

      2. 可并行化计算量(所需要最小连续操作数)

        1. 自注意力机制一次性通过一系列操作将序列中所有位置相关联,循环层则需要O(n).

      3. 网络中远距离依赖的路径长度

        1. 影响因素:前向、反馈信号必须经过的路径长度

        2. 输入输出序列中任意俩个位置的路径长度越短,约容易学习到长距离依赖。

        3. 卷积核尺寸k小于n时,不能捕捉所有输入输出信息。

          1. 解决方式:O(n/k)的卷积层堆栈,或者O(logK(N))的膨胀卷积

          2. 缺陷:增加了任意俩个位置之间的最大路径长度,

          3. 卷积层的成本是循环层的K倍。

      4. 自注意力机制,可产生更具解释性的模型

        1. 不同的注意力头学习不同的特征,且与句子的语法语义相关。


      训练

      数据集,WMT 2014 English-German

      1. 4.5 million sentence

      2. 字节对编码,共享37000个词汇表。

      3. English-French : 36M sentences 32000单词

      4. 句子按照近似长度分组。

      5. 每个训练批次包含一个句子对,由25000个源token和25000个目标token

      训练设备:

      1. 8个NVIDIA P100 GPUs

      2. Baseline 每步 0.4秒 训练10万步 用时12小时

      3. Big model 每步1秒 训练30万步 用时3.5天

      优化器:Adam optimizer

      1. β1 = 0.9, β2 = 0.98 and ϵ = 10^9 .

      2. 学习率变化方式:这相当于在前几个 warmup_steps 中线性增加学习率,之后则按步数的平方根比例递减。我们设定了warmup_steps = 4000。

      正则化

      1. Residual Dropout

        1. 每个子层进行残差连接之前进行 Dropout

        2. 位置编码与embeddings求和后 Dropout

        3. Baseline Pdrop = 0.1

        4. 在English-to-French任务上使用 Pdrop = 0.1

      2. Label Smoothing 标签平滑

        1. label smoothing of value ϵls = 0.1

        2. 使得模型学习更多的不确定性,提高准确率和BLEU

      训练细节

      1. Base model 平均最后5个检查点,每10分钟保存一次

      2. Big model 平均最后20个检查点,每10分钟保存一次

      3. 使用束搜索、束大小4,长度惩罚系数α = 0.6

      4. output最大长度为input长度+50,可能提前终止

      5. 我们分别使用了K80、K40、M40和P100的2.8、3.7、6.0和9.5 TFLOPS值


      结论

      机器翻译

      WMT 2014 translation task

      • Base model 训练成本最小,比其他模型少一个数量级,且在英语-德语 效果超过其他模型,英语-法语则最差

      • Big model 训练成本略高,但低于其他模型,是其他模型的1/4,且英语-德语、英语-法语上效果均最优。

      • English-to-German 上 Big model 超出其他模型大于2BLUE,最大28.4

      模型版本

      英语成分分析

      挑战:输出受到严格的结构约束,且明显长于输入。RNN sequence-to-sequence在小数据上没有取得最优结果。

      模型:4层transformer ,模型维度1024

      数据:Wall Street Journal (WSJ) portion of the Penn Treebank 40K训练语句,包含16000个词汇的词汇表。

      半监督训练:使用了来自BerkleyParser的更大高置信度语料库,其中包含约1700万句子,32000个词汇的词汇表,对其进行半监督训练。

      参数:与English-to-German一致,少量实验确定dropout, attention ,residual , learning rates and beam size

      最大output长度= input +300

      束大小 of 21 and 长度惩罚因子α = 0.3

      结论:结论出奇的比RNN好。


      总结:

      1. Transformer 完全依赖 multi-headed self-attention,摒弃了传统encoder-decoder 架构的循环层和卷积层

      2. Transformer 比循环和卷积训练速度更快

      3. 在WMT 2014 English-to-German 和 English-to-French翻译任务上,效果最优。

      相关文章:

    3. 美化显示GDB调试的数据结构
    4. 在ROS2(humble)+Gazebo+rqt下,实时显示仿真无人机的相机图像
    5. 无人机报警器探测模块技术解析!
    6. Spring框架学习day1--基础概念
    7. HackMyVM-Dejavu
    8. uniapp 实现腾讯云 IM 消息已读回执
    9. 基于大模型的颈椎病全周期预测与治疗方案研究报告
    10. 代码随想录算法训练营第60期第五十一天打卡
    11. 代理模式核心概念
    12. Python模块中__all__变量失效问题深度解析
    13. Java Vritual Machine
    14. $3 #12阶段三小结Java se
    15. SpringCloud基础知识
    16. 逻辑回归详解:从原理到实践
    17. 从“刚性扩容”到“弹性供给”:移动充电服务重构配电网边际成本
    18. Java求职者面试题详解:计算机网络、操作系统、设计模式与数据结构
    19. Java 面试实录:从Spring到微服务的技术探讨
    20. 【Redis】大key问题详解
    21. WPF的UI交互基石:数据绑定基础
    22. 5.LoadBalancer负载均衡服务调用