Transformer笔记 Attention Is All You Need

Attention Is All You Need

目录


论文基本信息

作者:Google Brain

关键词:Transformer

领域:NLP,CV

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

参考:

庖丁解牛式读《Attention is all your need》 https://blog.csdn.net/liu16659/article/details/108141534

Transformer论文逐段精读【论文精读】 https://www.bilibili.com/video/BV1pu411o7BE/?spm_id_from=333.337.search-card.all.click&vd_source=20c37d260c9535497db1af49e1fd2cbd

提出Transformer模型的优点:

  • 简单
  • 并行化
  • 泛化性

本文最开始是针对机器翻译这个问题提出的,Bert和GPT之后被广泛应用在NLP领域;之后又被应用在CV领域。

现在Transformer可以把所有不同的数据融合起来,都用一个架构抽取特征,可以抽到同一个语义空间中。


相对来讲,transformer需要调节的参数很少;但是相对于卷积神经网络,transformer更难训练,需要更多的数据。


Abstract

主要的序列转录模型(sequence transduction model)主要基于复杂的RNN或者CNN网络,这些网络都包含encoder和decoder两部分。性能最好的模型也在encoder和decoder中加入了注意力机制(attention mechanism)。我们提出了一种简单的神经网络架构——Transformer,完全摒弃了RNN和CNN,仅仅基于注意力机制。在两个机器翻译的任务中也展示了这些模型在性能上表现更优,可以更加并行化(parallelizable),而且需要很少的时间训练。在WNT 2014 英转德翻译任务上,我们的模型达到了28.4的BLEU值 ,超越了当前的最佳结果,包括ensembles,都超过2个BLEU值。在使用8个GPU训练3.5天后,我们的模型在WMT2014英转德翻译任务中,创立一个新的单模型SOTA的BLEU分数—41.8。我们将Transformer 成功地应用于具有大量和有限训练数据的English constituency parsing,证明它可以更好的推广到其它任务中。


Background

  • 介绍了使用卷积神经网络减少时序计算,缺点是学习遥远位置之间的依赖关系变得更加困难(This makes it more difficult to learn dependencies between distant positions)
  • 介绍了self-attention,自注意力机制是关联单个句子不同位置的注意力机制,以便计算序列的表示。
  • 介绍了end-to-end memory network,端到端记忆网络是基于循环注意机制而不是序列对齐循环。
  • Transformer 是第一个完全依赖自注意力来计算其输入和输出表示而不使用序列对齐 RNN 或卷积的转换模型。

Model Architecture

Transformer 遵循encoder-decoder的整体架构,对encoder和decoder堆叠自注意力和逐点、全连接层。
请添加图片描述

  • encoder和decoder的堆叠

    encoder由 N = 6 个相同层组成。第一层是multi-head self-attention机制,第二层则是简单的position-wise fully connected feed-forward network(其实就是一个MLP)。我们在两个子层上都采用残差连接,然后进行层归一化(Layer normalization)。为了让残差连接时不用使用投影,模型中的所有子层以及embedding层都会生成维度 dmodel = 512 的输出。

    decoder也是由N = 6 个相同层组成。除了每个encoder中的两个子层之外,decoder还插入了第三个子层,该子层对encoder的输出执行多头注意力。与encoder类似,在每个子层采用残差连接,然后进行层归一化。我们还修改了decoder中的自注意力子层,防止关注到后续位置,确保位置 i 的预测只能依赖于小于 i 的位置处的已知输出。

  • Attention

    注意力函数:一个query和一组key-value对做映射产生输出。其中query、key、value都是向量。输出是value加权求和,其中分配给每个value的权重是通过计算对应的key和query的compatibility function来决定的。

    • Scaled Dot-Product Attention

    请添加图片描述

    其实就是将key和query的内积除以除以根号dk,再经过softmax,充当compatibility function。(就是点积(乘法)注意力的变体)

    A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_{k}}})V Attention(Q,K,V)=softmax(dk QKT)V

    实现:注意力可以使用具有单个隐藏层的前馈网络来计算兼容性函数,也可以使用矩阵乘法的方式计算(矩阵乘法可以高度并行化)。

    • Mutil-Head Attention

      请添加图片描述

      我们发现,使用不同的、可学习线性投影分别将query、key和value线性投影 h 次到 dk、dk 和 dv 维度,而不是使用 dmodel 维度的key、value和query来执行单个注意函数。然后,我们对query、key和value的每个投影版本并行执行注意力函数,产生 dv 维输出值。将它们连接并再次投影,得到最终值。

      M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , . . . , h e a d h ) W O w h e r e h e a d i = A t t e n t i o n ( Q W i Q , K W i k , V W i V ) MultiHead(Q, K, V ) = Concat(head_1, ..., head_h)W^O\\ where head_i = Attention(QW_i^Q, KW_i^k ,VW_i^V) MultiHead(Q,K,V)=Concat(head1,...,headh)WOwhereheadi=Attention(QWiQ,KWik,VWiV)

      在这项工作中,我们采用 h = 8 个并行注意力头。对于每一个,我们使用 dk = dv = dmodel/h = 64。由于每个头的维度减少,总计算成本与全维度的单头注意力相似。

    • Applications of Attention in our Model

      Transformer 以三种不同的方式使用多头注意力。

      • 在encoder-decoder attention层, queries 来自之前的decoder层, 并且the memory keys and values来自encoder的输出。这就允许decoder每个位置上 去注意输入序列的所有位置。这模仿了seq2seq中经典的encoder-decoder注意力机制。
      • 在encoder的self-attention 层。在self-attention 层中,所有的keys ,values,以及queries 来自相同的位置——上一层encoder的输出。(当前层的)encoder中每个位置都能注意到上一层encoder的所有位置。
      • 在decoder的self-attention 层,decoder中的每个位置去注意decoder中所有的位置。
  • Position-wise Feed-Forward Networks

    F F N ( x ) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x) = max(0, xW_1 + b_1)W_2 + b_2 FFN(x)=max(0,xW1+b1)W2+b2

    虽然不同位置的线性变换是相同的,但它们在层与层之间使用不同的参数。另一种描述方式是内核大小为 1 的两个卷积。输入和输出的维度为 dmodel = 512,内层的维度为 dff = 2048。

    Attention把整个序列的信息抓取出来,做一次汇聚(aggregation);MLP把信息加工成最后想要的语义空间的向量。

  • Embeddings and Softmax

    使用可学习embedding将input tokens和output tokens转变为dmodel维向量。我们还使用可学习的Linear层和 softmax 函数将decoder输出转换为预测的下一个token概率。

    在Transformer中,我们在两个embedding和 pre-softmax Linear层之间共享权重。在embeding中,我们将这些权重乘以 √dmodel

  • Positional Encoding

    因为要建模的内容与顺序有关,所以要在序列中加入位置信息。为了方便相加,positional encodings与embedding后的向量具有相同的维数dmodel。

    Transformer网络中使用了sin和cos方式编码

    P E ( p o s , 2 i ) = s i n ( p o s / 1000 0 2 i / d m o d e l ) P E ( p o s , 2 i + 1 ) = c o s ( p o s / 1000 0 2 i / d m o d e l ) PE_{(pos,2i)} = sin(pos/10000^{2i/dmodel}) \\ PE_{(pos,2i+1)} = cos(pos/10000^{2i/dmodel}) PE(pos,2i)=sin(pos/100002i/dmodel)PE(pos,2i+1)=cos(pos/100002i/dmodel)

    其中 pos 是位置,i 是维度


Why Self-Attention

请添加图片描述

  • 每层的总计算复杂度
  • 可以并行化的计算量,以所需的最小顺序操作数来衡量
  • 网络中远程依赖之间的路径长度

Training

  • Training Data and Batching
    • WMT 2014 English-German dataset :about 4.5 million sentence pairs
    • WMT 2014 English-French dataset:36M sentences
    • 每个训练批次包含一组句子对,其中包含大约 25000 个source tokens和 25000 个target tokens。
  • Hardware and Schedule
    • one machine with 8 NVIDIA P100 GPUs
    • 论文中所写的超参数的模型,each training step took about 0.4 seconds。我们对base model训练了100,000 step、 12 小时;对于big model,step time为 1.0 秒,大模型接受了 300,000 step(3.5 天)的训练。
  • Optimizer
    • Adam 优化器
  • Regularization
    • Residual Dropout
    • Label Smoothing

Results

在机器翻译任务中得到了state-of-art。


Conclusion

在这项工作中,我们提出了 Transformer,这是第一个完全基于注意力的序列转换模型,用多头自注意力取代了encoder-decoder架构中最常用的循环层。

我们计划将 Transformer 扩展到涉及文本以外的输入和输出模式的问题,并研究局部的受限的注意力机制(local, restricted attention mechanisms),以有效地处理图像、音频和视频等大型输入和输出。Making generation less sequential is another research goals of ours.


新学习的概念

  • encoder 和 decoder架构

  • 自回归 auto-regressive

    简单地说,自回归模型只是一个前馈模型,它从过去的值预测未来的值。自回归模型(AutoRegressive Model)是统计学上常用的一类时间序列模型,用一个变量yt的历史信息预测自己

    y t = w 0 + Σ k = 1 K w k y t − k + ϵ t y_t = w_0+ \varSigma _{k=1}^K w_ky_{t-k}+\epsilon_t yt=w0+Σk=1Kwkytk+ϵt

    其中K为超参数,w0,…,wk为可学习参数, ϵ t \epsilon_t ϵt 服从 N ( 0 , σ 2 ) N(0, \sigma ^2) N(0,σ2)是第t个时刻的噪声,方差与时间无关

  • Layer Norm 和 Batch Norm


问题

1.Transformer为什么有效?效果好的原因

2.为什么可以想到Transformer这个架构

3.使用Multi-Head Attention的原因,Multi-Head Attention如何关注更多的信息

模拟卷积神经网络多输出通道。

4.Attention是怎么提出来到,这里的query、key、alues具体有没有什么其他含义

5.为什么要除以根号dk

6.为什么Multi-Head Attention要进行linearly project

7.位置编码的方式还有哪些(计算位置编码也可以可学习)

8.sin和cos位置编码的方式为什么

9.计算注意力的方法还有哪些,换句话说有没有其他注意力的种类

10.作者挖的坑“local, restricted attention mechanisms”

11.Why Self-Attention中的那张表

12.Regularization:Residual Dropout,Label Smoothing

投影的含义


本文心得

  • 看论文要看这个部分在讲什么,之后细化到这一段在讲什么,最后细化到重要的句子在讲什么;不然容易迷失在大量不会的生词里面
  • 多提问题,多记录
  • 写论文讲故事:1.为什么做这个事情;2.设计的理念是什么样子;3.对整个文章的一些思考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值