Transformer论文精读

Transformer:Attention is all you need

Abstract:

在主流的序列转录模型(sequence transduction models:给一个序列,生成另一个序列),主要依赖循环或者卷积神经网络,一般是用encoder和decoder的架构。表现最好的模型通常在encoder和decoder之间加入一个注意力机制。

我们提出的一个简单的架构,Transformer,仅仅依赖注意力机制,没有用循环或者卷积神经网络。

在机器翻译任务上表现很好

Introduction:

Background:(相关工作)

1.如何使用卷积神经网络替换掉循环神经网络,这样做可以减少时序计算。但卷积神经网络对比较长的序列难以建模。如果对于跨度很长的序列,需要很多卷积层。但如果使用注意力机制,只用一层就可以。但卷积的好处是可以有多个输出通道,一个通道可以识别不同的模式。所以提出了多头注意力机制。

2.自注意力机制

3.memory network

Model Architecture

img

大多数神经序列转录模型都是一个encoder-decoder架构,这个encoder将一个输入(x1,…,xn)映射为Z=(z1,…,zn)。其中x1是一个词,z1是其对应的向量。编码器的输出(z1,…,zn)会作为解码器的输入。解码器的输出为一个长为m的序列(y1,…,ym)【例如输入10个英文单词,但对应的中文可能只有5个词】

解码器是一个自回归架构,过去时刻的输出又是当前时刻的输入。例如:预测y1,需要输入Z,预测y2,需要输入Z和y1。且输出是一个词一个词。

Encoder

编码器由六个一致的层堆叠形成,每层有两个子层,第一个是多头注意力机制,第二层是一个简单的MLP(positionwise fully connected feed-forward network)。在两个子层间有残差连接。最后是一个layer normalization。每个子层的输出为:LayerNorm(x+Sublayer(x))

在这里插入图片描述

因为残差连接输入和输出的维度要求是一样的,所以这里规定所有层的输出维度为512,包括embedding和两个子层。所以在Encoder中只有两个参数,层数N和维度d。

batch norm(对特征归一化):将一个小批量二维矩阵的数据,每一列转换为均值为0,方差为1的数据。做法是,将该特征列数据:

(每个数据 - 该列均值 / 该列方差)

layer norm(对样本归一化): 将一个小批量二维矩阵的数据,每一行转换为均值为0,方差为1的数据。

layer norm的好处是计算均值和方差较为稳定。因为每个样本的长度这里是不固定的,在batch norm中会很不稳定。

在这里插入图片描述

Decoder

解码器的基本结构和编码器类似,也是6个层堆叠形成,不同的是,每个子层有三部分组成。且每个子层间有残差连接,最后是一个layer normalization。解码器的第一个层是一个mask(掩码),其作用是确保预测t时刻的输出时,输入数据均来自t时刻之前。

Attention

主要是一个注意力函数,其作用是将一个query和一系列key-value对映射为一个output。所有这些query、key、value、output都是向量。output是value的一个加权和,所以output的维度和value是一样的。每个value对应的权重是由其key和query的相似度计算得来。不同注意力机制的权值计算方式不同。

Scaled Dot-Product Attention

1.queries和keys都是维度为 d k d_k dk的向量。values维度为 d v d_v dv

2.用query和所有key做点乘

3.分别除以 d k \sqrt{d_k} dk

4.用softmax转换为概率

实际运算时,会以矩阵的方式执行

在这里插入图片描述

有两种通用的注意力机制,分别是additive attention和dot-product(multiplicative)attention。Dot-product attention和这里的是一致的,除了加入了除以 d k \sqrt{d_k} dk 原因在于,当query和key的向量维度较小时,乘积结果一般不会过大或者过小,因此softmax的结果也不会集中在0或者1附近。但维度较大时,乘积结果过大或者过小,softmax后会靠近1或0,在这些区域,梯度较小。

additive attention的权值计算采用单隐藏层的前馈神经网络。两种机制的复杂度相似,但后者在时间和空间上效率更高。

在这里插入图片描述

Mask:因为注意力机制会看到所有时刻的信息,但在预测时刻t的输出时,只需要t时刻之前的信息。所以mask将 Q K d k \frac{QK}{\sqrt{d_k}} dk QK的t时刻之后的值全部变为一个非常小的负数,这样在Softmax后,这些位置的权值就为0。

Multi-Head Attention
for i in h:
	先将V、K、Q映射到低维 #每次映射都会学到不一样的方法,在投影后的空间中可以匹配不同模式
	head_i = attention(V、K、Q)  #将投影后的V、K、Q输入Attention
Concat(head_1,...,head_h) W^O #将每个头的结果concat,并将最后的结果再次投影到低维空间 
	

Position-wise Feed-Forward Networks

简单说就是一个单隐藏层的MLP,Position-wise指的是,这个MLP是针对每个词来做,每个词上都有一个MLP。

在这里插入图片描述

其中x作为encoder的输出,是一个词的向量,本文中长512,W1会将其映射到2048,W2又映射为512

Embedding and Softmax

embedding模型出现三次,分别在encoder和decoder以及softmax前的Linear层。且这三处模型拥有相同的权值,并且乘了 d m o d e l \sqrt{d_{model}} dmodel ,为了和后面的Positional Encoding在量级上匹配。

因为对于维度较大向量,归一化后,每个位置的值都比较小,而后续需要和Position 向量相加,后者范围在(-1,1),需要保证两者数量级一致。

Positional Encoding

因为输入的是一个序列,但Attention本身是不会涵盖时序信息的,本质是对输入向量的一个加权和,意味着如果将输入词打乱,得到的结果均相同。

这里的做法是,对每个词在句子中的位置,生成一个和Embedding同维度的向量,来表示位置信息。

在这里插入图片描述

最后将embedding和位置向量相加

Why self-attention

在这里插入图片描述

比较的第一列是每层模型的复杂度,第二列是每个操作需要等待前面的多长时间,越小越好,第三列是每个信息从一个数据点走到另一个数据点要多远,越小越好。

自注意力的矩阵相乘的时间复杂度 O ( n 2 d ) O(n^2d) O(n2d)。因为矩阵乘法,所以操作等待时间很短,而且Attention的输出是由输入的加权和组成,所以可以获取来自任意位置的信息。

最后的受限的自注意力,是指query只跟最近的r个邻居算相似度

Training Data and Batching(实验)

在WMT 2014英语-德语数据集,包含450万个句子对。将英语和德语的词根一起作为一个词典,包含37000个token,这样可以在 encoder和decoder中贡献权重。

2.再将三者送入之前

Conclusion

第一个仅仅依赖注意力机制的序列转录模型,用多头注意力(multi-headed self-attention)取代了在encoder-decoder架构中被通常使用的循环层。

  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swin Transformer是一种新型的层次化视觉Transformer模型,它在Vision Transformer(ViT)的基础上进行了改进,并在多个视觉任务上取得了更好的效果。本文将对Swin Transformer论文进行精读,详细介绍其创新点和实验结果。 ## 创新点 Swin Transformer主要有以下三个创新点: ### 1. 层次化注意力 Swin Transformer引入了层次化注意力机制,将图像分成多个块进行处理,每个块内部使用全局自注意力机制,不同块之间使用局部注意力机制。这种层次化的注意力机制可以减少全局自注意力机制的计算量,同时保持局部信息的传递。 ### 2. Shifted Window 传统的ViT使用固定大小的图像块进行处理,而Swin Transformer使用了一种称为Shifted Window的方法,将每个块按照一定的步长进行平移,使得每个块都包含了周边的信息。这种方法可以更好地捕捉到图像中的全局信息。 ### 3. Swin Transformer Block Swin Transformer引入了一个新的Swin Transformer Block,它是由多个Shifted Window构成的,每个Shifted Window内部使用了类似于ViT的注意力机制。这种新的Transformer Block可以更好地捕捉到局部和全局的信息。 ## 实验结果 Swin Transformer在多个视觉任务上都取得了很好的效果,比如ImageNet分类、COCO目标检测、Cityscapes语义分割等。在ImageNet上,Swin Transformer比ViT-Large模型具有更好的性能,同时参数数量更少,计算效率更高。在COCO目标检测任务中,Swin Transformer在使用相同的backbone的情况下,比ViT-Large模型具有更高的AP值。在Cityscapes语义分割任务中,Swin Transformer在使用相同的backbone的情况下,比DeiT-base模型具有更高的mIoU值。 ## 总结 Swin Transformer是一种新的层次化视觉Transformer模型,它引入了层次化注意力机制、Shifted Window和Swin Transformer Block等创新点,并在多个视觉任务上取得了很好的效果。这些创新点可以更好地捕捉到图像中的局部和全局信息,同时减少了计算量,提高了计算效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值