https://blog.csdn.net/qq_27590277/article/details/106264402
https://blog.csdn.net/abcdefg90876/article/details/105283346
https://arxiv.org/abs/2006.15595 https://github.com/guolinke/TUPE
回过头来看,层次透明度传播的抠图方法受Transformer影响很深,并且改进了原有的相对位置编码模块。
层次透明度传播里的全局HOP块和局部HOP块使用的位置编码。不一定适用于我的模型。另外,这个地方使用的归纳偏置可能是没必要的,当数据集够多的时候(抠图任务之一就是数据集规模太小,但是我又不是做抠图),应该模型能够学习到如何将(b)转到(a)和(d)
Attention is All You Need中的位置编码部分
由于我们的模型不包含递归和卷积,为了使模型利用序列中tokens的位置顺序,我们必须加入些关于序列的相对或绝对的位置信息。为此,我们将“位置编码”添加到编码器和解码器堆栈底部的输入embedding中。位置编码与embedding具有相同的维度,因此可以将两者相加。有许多位置编码的方式,可学习的或者固定的[9]。
在这项工作中,我们使用不同频率的正弦和余弦函数:
其中表示位置,表示维度。也就是说,位置编码的每一个维度都是一个正弦曲线。波长呈几何级数从到。
我们之所以选择这个函数,是因为我们假设它可以让模型很容易地通过相对位置信息来学习,因为对于任何固定的偏移量,都可以表示成的线性函数。
我们还尝试使用可学习的位置嵌入[9],发现和正弦的方式效果差不多,见表3的第E行(正弦的稍微好一些)。我们选择正弦的方法,因为它有更好地泛化,使模型能推广到比训练中所见的更长的序列上。
注意力补充卷积的网络 Attention Augmented Convolutional Networks
作者:Irwan Bello,Barret Zoph,Ashish Vaswani,Jonathon Shlens,Quoc V. Le
3.1.1节 二维的位置嵌入
如果没有关于位置的显式的信息,对于像素位置的任何排列方式,自注意力是排列等变(permutation equivariant)的:
这样就没有办法去建模高度结构化的数据,例如图像。为了缓解这个问题,人们提出了多种具有显式空间信息的位置编码来补充激活的特征图。具体地是,ImageTransformer[32]将原初版的变换器[43]提出的正弦波扩展到2维输入上,CoordConv[29]将位置通道拼接到激活图上。
然而,这些编码方式,在第4.5节的图像分类和物体检测实验中并没有起到帮助作用。我们猜想是因为,这些编码方式尽管不是排列等边,它们也不是平移等变(translation equivariance),而在处理图像时,平移等变是个很理想的性质。我们提出的解决方案是将相对位置编码[37,RPR,PeterShaw]扩展到2维上,并提出一种基于MusicTransformer[18]的高效内存实现方案。
相对位置嵌入:
PeterShaw[37]提出相对位置编码用于语言建模,使得既能实现平移等变,又能避免排列等变。我们通过分别添加相对高度信息和相对宽度信息来实现二维的相对位置自注意力。好多公式,不码了,等二维正弦失败了再回头看
4.5节 消冗实验
位置编码的重要性
在表7和表8中,我们分别给出了ImageNet分类和COCO目标检测任务的结果。在这两项任务中,没有位置编码的注意力+卷积的模型也比卷积网络要好。我们的实验还表明,正弦编码和坐标卷积并没有对无位置编码的注意力+卷积模型要好。但是使用我们的二维相对注意力时,就得到了提升,这证明了在组织排列等边的同时保持平移等边的重要性。
笔者注:1:这个网络当完全没有位置编码的时候也没有失败,因为保留了卷积,卷积可隐式地编码相对距离信息
2:结论是Conv+Att+SinP 没有对Conv+Att带来提升,结论并不是FullAtt+SinP对FullAtt无提升。卷积本身隐式地捕捉相对距离信息,只能说SinP没有带来比Conv更好的位置信息。
参考文献:
[32] Niki Parmar, Ashish Vaswani, Jakob Uszkoreit, Łukasz,Kaiser, Noam Shazeer, Alexander Ku, and Dustin Tran. Image transformer. InInternational Conference on Machine Learning, 2018. 3, 8https://arxiv.org/pdf/1802.05751v3.pdf
[29] Rosanne Liu, Joel Lehman, Piero Molino, Felipe Petroski Such, Eric Frank, Alex Sergeev, and Jason Yosinski. An intriguing failing of convolutional neural networks and the coordconv solution. InAdvances in Neural Information Pro-cessing Systems, pages 9628–9639, 2018. 3, 8https://blog.csdn.net/qq_16234613/article/details/81052583
https://baijiahao.baidu.com/s?id=1605865371900016669&wfr=spider&for=pc
Image Transformer (2018) https://arxiv.org/pdf/1802.05751v3.pdf
似乎是非官方实现(PyTorch):https://github.com/sahajgarg/image_transformer
Vaswani是共同一作
3.1节
在每个像素的表示上,我们增加一个维的坐标编码。我们评估两种不同的坐标表示方式:坐标的正弦余弦函数,在不同的维度使用不同的频率,这是遵循Vaswani的Transformer的;另一种方式是用可学习的位置嵌入。因为我们是要表示两个坐标,我们用来编码行,用另外来编码列和颜色通道。(笔者注,他是将图像表示成,用在图像生成任务上。)
Self-Attention with Relative Position Representations
摘要:Vaswani等人(2017)引入的Transformer完全依赖于注意机制,实现了机器翻译的最新成果。与递归和卷积神经网络相比,它在结构上不显式地对相对或绝对位置信息进行建模。相反,它需要在输入中添加绝对位置的表示。在这项工作中,我们提出了另一种方法,扩展自我注意机制,以有效地考虑相对位置的表示,或序列元素之间的距离。在WMT 2014英语到德语和英语到法语的翻译任务中,这种方法比绝对位置表示法分别提高了1.3 BLEU和0.3 BLEU。值得注意的是,我们观察到结合相对和绝对位置表示不会进一步提高翻译质量。我们描述了我们的方法的一个有效实现,并将其转换为一个关系感知的自注意机制的特例,该机制可以推广到任意图标记的输入。
1.引言
序列到序列模型的最新方法通常是利用递归网络、卷积网络、注意力机制,或者是递归网络和注意力机制的组合来构建网络。这些方法以不同的方式来包含序列中元素的位置信息。
递归网络RNN是通过其序列结构直接捕获沿时间维度的相对和绝对位置。非递归模型不必考虑按顺序输入元素,因此可能需要显式编码位置信息,以便能够利用输入的位置顺序信息。
一种常见方法就是将输入元素的表示和它的位置编码组合起来。位置编码可以是事先确定的(Sukhbaatar et al.,2015;Vaswani et al., 2017),也可以是通过学习获得的。卷积网络是天然地捕获卷积核尺寸以内的相对位置关系,然而,卷积网络被发现仍受益于位置编码(Gehring et al., 2017,卷积的序列到序列学习)。
而对于变换器来说,它既不包含递归结构,又没有卷积操作,使用位置信息的显示表示是很重要的,要不然的话,模型就是完全对序列顺序变化而不变了(invariant)。因此,基于注意力的模型会使用位置编码和基于距离的注意力偏置权重。
本文提出一种高效方法,将相对位置表示纳入到变换器的自注意力机制中。我们实验证明,在两个机器翻译任务中,即使用相对位置完全替换绝对位置编码,翻译质量都会显著提高。
我们的方法可以看做是扩展变换器中自注意力机制的一个特例,即考虑输入的任意两元素之间的任意关联,这是我们未来研究计划中探索有向有标签图的建模的一个方向。
2.背景
2.1 变换器
变换器采用编码-解码结构,由编码层和解码层堆叠而成。编码层包含两个子层:自注意力层,接着是位置前馈层(position-wise feed-forward)。解码层包含3个子层:自注意力层,接着是编码-解码注意力层,再接着是位置前馈层。它使用是一个残差连接来环绕每个子层,残差连接后面接着是层归一化(layer normalization,2016)。解码器在其注意力中使用屏蔽机制,防止在训练期间,当下输出位置使用未来位置信息。
在第一层之前,将基于变化频率的正弦的位置编码添加到编码器和解码器的输入元素。与可学习的位置表示不同,作者假设绝对位置编码使用正弦编码方式,有助于模型学到一些相对位置关系,从而使得模型可以泛化到训练期间的未见长度。这一点,我们的相对位置表示也是出于这样的目的,所不同的是,它是对整个序列长度的变化是不变的(invariant)。
残差连接有助于将位置信息传播到更高的层。
2.2 自注意力
自注意力子层使用个注意力头。子层的输出是每个注意力头输出的拼接,再接上一个参数化的线性映射层。
每个注意力头的输入是一个元素的序列,,其中,输出是一个同样长度的新序列,其中。
每个输出元素是输入元素的线性映射的加权求和:
每个权重系数是用softmax函数计算得到的:
其中是使用比较两个输入元素的兼容性函数(compatibility function)计算:
兼容性函数选择的是缩放点积(scaled dot product),因为它计算快。输入的线性变换增加了足够的表达能力。
是参数矩阵。这些参数矩阵在每层每个注意力头都是独一的(也就是不共享的)。
3 我们提的改进
3.1 关系感知的自注意力
我们提出一个自注意力的扩展版来考虑输入元素之间的两两关系。从这个意义上,我们将输入定义为一个有标签的,有向的,全连接的图(graph)。
两个输入元素和之间的边由向量表示。之所以要学习两个不同的表示,是因为 适合分别地使用公式(3)和公式(4)来计算,而不需要再增加一个额外地线性变换。这些表示在不同的注意力头之间是共享的。我们设置。
我们修改公式(1),以在子层的输出中传播连边信息:
这个扩展对某些任务来说是重要的,就是那些由给定注意力头选取的连边信息对下游编码-解码层来说是有用的任务。然而,正如在4.3节所探索的,这个可能对机器翻译任务来说是不必要的。
另外,我们修改了公式(2),以在计算兼容性函数时考虑边的信息:
在公式(3)和(4)中,之所以使用加法这样的简单计算方式来包含连边的表示,主要是因为这样计算得快些,如3.3节所述。
3.2 相对位置表示
对于线性的序列,连边可以捕获输入元素之间的相对位置之差的信息。我们考虑将最大相对位置之差的绝对值设置一个上限,即做一个裁剪clip。我们猜想,精确的相对位置信息。设置一个上限也使模型能够更好地泛化,使之能推广到训练期间的未见长度。因此,我们考虑使用的连边标签有种不同取值。
然而,我们学习相对位置表示和,其中。
3.3 高效的计算
正如Velickovic等人(2017)所指出的,考虑输入元素之间的连边关系时,会存在实际的空间复杂度的问题,该研究是关注将无标签图作为注意力模型的输入。
对于一个长度为,注意力头数为,我们通过将每个注意力头之间共享相对位置表示,将空间复杂度从降到。此外,相对位置表示可以在序列和序列之间共享。因此自注意力的整体的空间复杂度就从增加到。因为设定,相对增量就取决于。
Transformer使用并行矩阵乘法运算高效地计算批量中所有序列、头部和位置的自注意力(Vaswani et al.,2017)。当没有相对位置表示的时候,每个可以计算为个并行的和的矩阵乘法。每个矩阵乘法计算该序列该注意力头中所有位置的。对于任何序列和注意力头,这需要每个位置,在和不同的其它的位置计算兼容函数时,都使用相同的位置表示。
当我们使用相对位置时,不同位置对的表示不同。这使我们无法在单个矩阵乘法中计算所有位置对(pairs of positions)的。我们还希望在计算中避免出现相对位置的广播(broadcasting)。这两个问题都可以通过将公式(4)拆分成两项来解决:
第一项和公式(2)是相同的,并且可以用上述方式进行计算。对于包含相对位置信息的第二项,可以使用张量reshape来计算个并行的和的矩阵乘法。每个矩阵乘法计算所有批量和所有注意力头在特定位置对的贡献。进一步的reshape可以将两项相加。对公式(3)的计算效率优化也可以用同样的方式。
我们的机器翻译实验,结果是每秒步长适度减少了7%,但我们能够在P100 GPU上保持与Vaswani等人(2017)相同的模型和批大小。
4. 实验
我们使用张量2传感器1库来训练和评估我们的模型。
我们在WMT 2014机器翻译任务中评估了我们的模型,使用了WMT 2014英语-德语数据集(包含约450万个句子对)和2014 WMT英语-法语数据集(包含约3600万个句子对)。在所有实验中,我们将代币分成32768个单词的词条词汇表(Wu等人,2016)。我们按近似长度对句子对进行批处理,并将每批的输入和输出标记限制为每个GPU 4096个。每个训练批包含大约25000个源和25000个目标令牌。
我们使用Adam优化器(Kingma和Ba,2014),b1=0:9,b2=0:98,E=10-9。我们使用了与Vaswani等人(2017年)相同的预热和衰减学习率策略,共有4000个预热步骤。在培训期间,我们采用了la-bel平滑法,其值E ls=0:1(Szegedy等人,2016)。为了评估,我们使用波束搜索,波束大小为4,长度惩罚为0:6(Wu等人,2016)。
对于我们的基本模型,我们使用了6个编码器和解码器层,dx=512,dz=64,8个注意头,1024个前馈内层维度,P dropout=0:1。在使用相对位置编码时,我们使用了剪裁距离k=16,并对每层和头部使用了唯一的边表示。我们在8k40gpu上训练了100000步,没有使用检查点平均值。
对于我们的大模型,我们使用了6个编码器和解码器层,dx=1024,dz=64,16个注意头,4096个前馈内层尺寸,EN-DE的P dropout=0:3,EN-FR的P dropout=0:1。当使用相对位置编码时,我们使用k=8,并且每层使用唯一的边缘表示。我们在8个P100 GPU上训练了300000步,平均最后20个检查点,每隔10分钟保存一次。
4.2机器翻译
我们将仅使用相对位置表示的模型与使用正弦位置编码的基线变压器(Vaswani et al.,2017)进行了比较。我们生成了基线结果,将相对位置表示的影响与底层库和实验配置的任何其他更改隔离开来。
对于英语到德语,对于基本配置和大型配置,我们的方法将性能分别比基线提高了0.3和1.3 BLEU。对于英语到法语,基本配置和大配置分别提高了0.5和0.3 BLEU。在我们的实验中,除了相对位置表示之外,正弦位置编码并没有给我们带来任何好处。结果见表1。
变更模型
我们对模型进行了多方面的修改实验。本节中的所有实验都使用基本模型配置,没有任何绝对位置表示。BLEU分数使用开发集new-stest2013计算WMT英语-德语任务的分数。
我们评估了改变最大绝对相对位置差的剪切距离k的影响。值得注意的是,对于k>=2,BLEU分数似乎没有太大变化。然而,当我们使用多个编码器层时,精确的相对位置信息可能会传播到剪切距离之外。结果见表2。
在第ij.3节中,我们对两个相对位置的冲击进行了评估。仅在确定元素之间的兼容性时包含相对位置表示可能就足够了,但还需要进一步的工作来确定这是否适用于其他任务。结果见表3
在本文中,我们提出了一个扩展到自我注意,可以用来纳入序列的相对位置信息,从而提高机器翻译的性能。为了将来的工作,我们计划扩展这个机制,以考虑到变压器的任意有向、有标记的图形输入。我们也感兴趣的非线性兼容函数结合输入表示和边缘表示。对于这两个扩展,一个关键的考虑因素将是确定有效的实现。