0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析Transformer中的位置编码 -- ICLR 2021

深度学习自然语言处理 来源:复旦DISC 陈伟 作者:复旦DISC 陈伟 2021-04-01 16:07 次阅读

引言

Transformer是近年来非常流行的处理序列到序列问题的架构,其self-attention机制允许了长距离的词直接联系,可以使模型更容易学习序列的长距离依赖。由于其优良的可并行性以及可观的表现提升,让它在NLP领域中大受欢迎,BERT和GPT系列均基于Transformer实现。鉴于Transformer在NLP问题上的优异表现,也有越来越多人将其引入到了CV领域。

和RNN、CNN等模型不同,对于Transformer来说,位置编码的加入是必要的,因为单纯的self-attention机制无法捕捉输入的顺序,即无法区分不同位置的词。为此我们大体有两个方式:(1)将位置信息融入到输入中,这构成了绝对位置编码的一般做法;(2)将位置信息融入self-attention结构中,这构成了相对位置编码的一般做法。

本次Fudan DISC实验室将分享ICLR 2021中关于Transformer和其位置编码的3篇论文,介绍研究人员从不同角度和场景下对Transformer和其位置编码的研究。

文章概览

重新思考语言预训练中的位置编码

Rethinking the Positional Encoding in Language Pre-training

论文地址: https://openreview.net/forum?id=09-528y2Fgf

本文针对BERT提出了一种新的位置编码方法—Transformer with Untied Positional Encoding(TUPE),它通过两种方法改进了现有的方法,即解开单词和位置之间的相关性,以及解开序列位置上的[CLS]。大量实验表明,TUPE具有较好的性能。

DEBERTA:带有解耦注意力的解码增强BERT

DeBERTa: Decoding-enhanced BERT with Disentangled Attention

论文地址: https://openreview.net/forum?id=XPZIaotutsD

本文提出了两种改进BERT预训练的方法:第一种方法是分散注意机制,该机制使用两个向量分别对每个单词的内容和位置进行编码来表示每个单词,并使用分散矩阵计算单词之间在内容和相对位置上的注意力权重;第二个方法是一个增强的掩码解码器,它取代了输出的Softmax层来预测用于MLM预训练的掩码令牌。使用这两种威廉希尔官方网站 ,新的预训练语言模型DeBERTa在许多下游NLP任务上表现都优于RoBERTa和BERT。

把图片当作16乘16的词:用于大规模图像识别的Transformer

An Image Is Worth 16X16 Words: Transformers for Image Recognition at Scale

论文地址: https://openreview.net/forum?id=YicbFdNTTy

本文提出在视觉任务中的Transformer—Vision Transformer(ViT)。图像对卷积神经网络的依赖不是必要的,并且将纯transformer直接应用于图像patch序列可以很好地执行图像分类任务。本文的实验表明,当对大量数据进行预训练并将其传输到中等大小或较小的图像识别基准时,与最先进的卷积网络相比,ViT可获得出色的结果,同时训练所需的计算资源也大大减少。

论文细节

1

156cf67e-92a2-11eb-8b86-12bb97331649.png

动机

因为 Transformer 在结构上不能识别来自不同位置的 token,一般需要用 positional embedding 来辅助。最简单的做法就是在 input token embedding 上直接加 positional embedding (NSP loss现在基本不用,所以这里不再考虑 segment embedding)。然后在 Transformer 的 self-attention 里,会把 input 用三个矩阵映射到不同的空间,Q,K,V,接着把 Q 和 K 做点积,过 softmax ,得到 attention 的 weight 。因此,在第一层 Transformer 的 QK 点积 ,我们可以得到:

15aa69b4-92a2-11eb-8b86-12bb97331649.png

其中 是self attention matrix在进行softmax之前第i行第j列的元素,代表第i个token对第j个token的注意力大小, 是 token embedding,是position embedding,、是映射Q和K所用的矩阵。作者认为代表token和position的交叉的中间两项没有给self attention做出贡献,为了验证该想法,作者对展开后的四项进行了可视化,如Figure 2所示,可以看到中间两项看起来很均匀,说明position 和 token 之间确实没有太强的关联。

15caaaee-92a2-11eb-8b86-12bb97331649.png

同时,作者认为 token 和 position 用了相同的矩阵做 QKV 的变换。但 position 和 token 所包含的信息不一样,共享矩阵也不合理。

方法

为了解决上述问题,作者将self attention做了如下改动:

160b1674-92a2-11eb-8b86-12bb97331649.png

其中,、是把 positional embedding 映射到 Q 和 K 所用的矩阵,分母中的根号 2d 是为了保持量纲。简单来说,作者去掉了 position 和 token 之间的交叉,同时用了不同的变换矩阵。需要注意的是,在多层的 Transformer 模型里,比如BERT,上面式子的第二项在不同层之间是共享的。因此,这里仅需要算一次,几乎没有引入额外的计算代价。

作者还提出,在上述的公式中,可以再添加一个与相对位置相关的偏置项,即

16279e16-92a2-11eb-8b86-12bb97331649.png

作者在文中使用了T5文章中提出的相对位置编码。

另外,作者还特殊处理了 [CLS] token 的 position,使其不会因 positional locality 而忽略了整个句子的信息。具体来说,在的第二项,即与位置相关的注意力计算中,作者将[CLS] 对其他token的注意力以及其他token对[CLS]的注意力额外引入了两个参数,这两个参数与位置信息无关,是一个可学习的标量,这样就完成了和[CLS]相关注意力的计算。

164dda86-92a2-11eb-8b86-12bb97331649.png

166fc97a-92a2-11eb-8b86-12bb97331649.png

模型整体的架构如下

16a25110-92a2-11eb-8b86-12bb97331649.png

实验

作者首先使用TUPE模型以类似BERT的方式进行预训练,然后在GLUE数据集下进行微调。其中-A代表仅使用了绝对位置编码,-R代表在绝对位置编码的基础上增加了相对位置编码(即偏置项)。mid表示训练了300k步的中间结果,tie-cls代表移除对[CLS]的特殊处理,d代表为词和位置使用不同的投影矩阵。

16f9e506-92a2-11eb-8b86-12bb97331649.png

结果表明,添加相对位置信息对下游任务效果有一定提升;TUPE模型的效果持续优于BERT模型的效果;TUPE仅训练300k-step(30%)的结果已经可以和BERT等模型的效果相比较;对[CLS] token的特殊处理和使用不同的投影矩阵均可以增加模型性能。

分析

作者最后对TUPE和BERT的预训练过程进行了分析,结果表明,TUPE不仅最后比 baseline 要好,并且可以在 30% (300k-step) 的时候,就达到 baseline 在 1000k-step 时的效果。

17430006-92a2-11eb-8b86-12bb97331649.png

最后作者还对TUPE学习到的多个head得到的注意力矩阵进行了可视化,作者发现,不同的head捕捉到了不同的注意力模式,作者还对下图中的几种进行了命名,如 attending globally; attending locally; attending broadly; attending to the previous positions; attending to the next positions 等。

17735062-92a2-11eb-8b86-12bb97331649.png

2

179e6b58-92a2-11eb-8b86-12bb97331649.png

动机

和上一篇文章类似,文章也是对self attention的结构进行了重构,与上篇文章不同的是,文章直接从相对位置出发,认为在一个序列中的第i个token可以用两个向量对其进行表示,分别是 和 ,分别代表了该token的内容信息和相对第j个token的相对位置信息。那么第i个token和第j个token的注意力计算可以拆解为如下公式:

17c3e3ba-92a2-11eb-8b86-12bb97331649.png

那么注意力可以解耦成四个部分,分别是内容和内容、内容和位置、位置和内容、位置与位置。作者认为第四项相对位置和相对位置的交叉无法给注意力提供有效信息,可以舍弃,因此作者提出了解耦注意力机制。

同时,作者认为现有的预训练、微调模式存在一些GAP,首先它们的任务不同,预训练阶段是直接预测被MASK掉的token,微调阶段是拿句子表示再添加额外的网络层去完成下游任务,为了弥补这种GAP,作者提出了解码增强的BERT。

方法

为了解决上述问题,作者将self attention做了如下改动:

18007730-92a2-11eb-8b86-12bb97331649.png

在解耦注意力中,作者抛弃了位置与位置部分,并且认为内容和位置的投影矩阵是异质的,因此引入了新参数 和 ,其中 P是跨所有层共享的相对位置嵌入向量。其中 函数的定义如下:

183197ca-92a2-11eb-8b86-12bb97331649.png

该函数定义了token之间的相对距离,计算token之间的注意力机制的时候,将通过该公式计算token和token之间的相对距离矩阵,则相对位置向量则可以通过事先定义的embedding层取出。作者还提出了一种计算解耦注意力的高效算法,可以有效地减小空间复杂度。

上述的注意力计算中中仅包含了相对位置信息,作者认为只有相对位置也不好,最好能把绝对位置信息也加进去,作者给了两张添加的方式。第一种方式是在输入的时候,把绝对位置信息添加到输入的token embedding中;第二种方式是在最后一两层再添加到前面那些层输出的隐向量中。

考虑到BERT等预训练模型在预训练和微调时不一样,预训练的时候,bert的输出经过softmax后,直接给出概率。微调的时候,bert的输出会经过一些与任务相关的decoder。作者将掩码语言模型(MLM)视为任何微调任务,并添加一个任务特定解码器,该解码器被实现为两层 Transformer 解码器和 Softmax 输出层,用于预训练。所以作者这里将预训练和微调的模型尽可能相近,模型共有13层,前11层称为encoder,后2层参数共享,称为decoder,然后微调的时候,前12层保留,然后和bert一样进行各类任务的微调。

实验

作者按照 BERT 的设置预训练DeBERTa,和BERT不同的是,作者使用了 BPE 词汇表。对于训练数据,作者使用 了 Wikipedia(English Wikipedia dump;12GB)、BookCorpus(6GB)、OPENWEBTEXT(public Reddit content;38GB)和 STORIES(CommonCrawl 的子集;31GB)。重复数据消除后的总数据大小约为 78GB。我们使用 6 台 DGX-2 机器和 96 个 V100 GPU 来训练模型。单个模型训练,batch size 设置为 2K,1M 的 steps,大约需要 20 天的时间。

作者将预训练好的模型在GLUE数据集上进行微调,表 1 显示,与 BERT 和 RoBERTa 相比,DeBERTa 在所有任务中始终表现得更好。同时,DeBERTa 在八项任务中有六项优于 XLNet。特别是,MRPC(1.7% 超过 XLNet,1.6% 超过 RoBERTa)、RTE(2.2% 超过 XLNet,1.5% 超过 RoBERTa)和 CoLA(0.5% 超过 XLNet,1.5% 超过 RoBERTa)的改进非常显著。

185938fc-92a2-11eb-8b86-12bb97331649.png

作者还使用了其他数据集来评估 DeBERTa,分别是(1)问答:SQuAD v1.1、SQuAD v2.0、RACE、ReCoRD 和 SWAG;(2)自然语言推理:MNLI;(3)NER:CoNLL-2003。为了进行比较,他们还将 Megatron 分为三种不同的模型尺寸:Megatron 336M、Megatron 1.3B 和 Megatron 3.9B,它们使用与 RoBERTa 相同的数据集进行训练。与之前的 SOTA 模型(包括 BERT、RoBERTa、XLNet 和 Megatron336M)相比,DeBERTa 在这 7 项任务中的表现始终更优。尽管 Megatron1.3B 是 DeBERTa 的 3 倍大,DeBERTa 在四个基准中的三个方面仍然可以超过 Megatron1.3B。结果表明,在不同的下游任务中,DeBERTa 算法都具有较好的性能。

191544ac-92a2-11eb-8b86-12bb97331649.png

作者还对DeBERTa进行了消融实验,-EMD 是没有增强解码器的DeBERTa模型。C2P 是没有内容-位置项的DeBERTa模型。P2C 是没有位置-内容项的DeBERTa模型。作者发现删除 DeBERTa 中的任何一个组件都会导致所有基准测试的性能下降。

19ab9380-92a2-11eb-8b86-12bb97331649.png

最后作者还研究了注意力机制模式和预训练模型的有效性。结果表明,在预训练的训练过程中,DeBERTa 的表现一直优于 RoBERTa-ReImp,并且收敛速度更快。

3

19e52668-92a2-11eb-8b86-12bb97331649.png

动机

本篇文章跟位置编码的关系不是特别大,但文章将Transformer在图像识别领域中完全代替了卷积神经网络。近年来,Transformer已经成了NLP领域的标准配置,但是CV领域还是CNN(如ResNet, DenseNet等)占据了绝大多数的SOTA结果。最近CV界也有很多文章将transformer迁移到CV领域,虽然已经有很多工作用self-attention完全替代CNN,且在理论上效率比较高,但是它们用了特殊的attention机制,无法从硬件层面加速,所以目前CV领域的SOTA结果还是被CNN架构所占据。文章不同于以往工作的地方,就是尽可能地将NLP领域的transformer不作修改地搬到CV领域来。

方法

NLP处理的语言数据是序列化的,而CV中处理的图像数据是三维的(长、宽和channels)。所以需要一个方式将图像这种三维数据转化为序列化的数据。文章中,图像被切割成一个个patch,这些patch按照一定的顺序排列,就成了序列化的数据。作者首先将图像分割成一个个patch,然后将每个patch reshape成一个向量,得到所谓的flattened patch。

作者对上述过程得到的flattened patches向量做了Linear Projection,这些经过线性映射后的向量被称为 patch embedding(类似word embedding),一个255乘255像素的图片,每隔16乘16个像素进行分割,则这些图片可以被当做16乘以16的词拼在一起。作者也为这些patch添加了位置信息,因为按照特定顺序的patch是需要具备位置信息的,作者采取了常见的绝对位置编码,给每个位置的patch学习一个位置编码向量。

1a1e5370-92a2-11eb-8b86-12bb97331649.png

为了给图像进行分类,作者也借鉴BERT在第一个patch前添加了[CLS] patch,该patch经过Transformer后的hidden vector被用于对图形进行分类的特征。

文中还提出了一个比较有趣的解决方案,将transformer和CNN结合,即将ResNet的中间层的feature map作为transformer的输入。和之前所说的将图片分成patch然后reshape成sequence不同的是,在这种方案中,作者直接将ResNet某一层的feature map reshape成sequence,再通过Linear Projection变为Transformer输入的维度,然后直接输入进Transformer中。

到下游任务微调时,如果图像的分辨率增大时(即图像的长和宽增大时),如果保持patch大小不变,得到的patch个数将增加,即序列长度将增加。但是由于在预训练的时候,position embedding的个数和pretrain时分割得到的patch个数相同。因此超出部分的positioin embedding在模型中是未定义或者无意义的。为了解决这个问题,文章中提出用2D插值的方法,基于原图中的位置信息,将pretrain中的position embedding插值成更多个,这样有利于位置编码在面对更高分辨率图片微调时可以更好地收敛。

实验

作者使用提出的模型,即VIT,做了大量实验。实验的范式遵循预训练-微调模型,现在某个数据集下使用大量有标签的图片进行预训练,然后再在某个数据集下进行微调。下表中最上面一行指的是预训练用的数据集,最左边一列指的是微调使用的数据集。ViT-H/14指的是,使用了ViiT-Huge模型的设置,并且patch的size是14乘14的。Noisy Student是ImageN上的SOTA,BiT是其余任务上的SOTA。

可以看到,在JFT数据集上预训练的ViT-L/16性能比BiT-L(也是在JFT上进行预训练)更好。模型更大一点的ViT-H/14性能进一步提升,尤其是在更具挑战性的任务上,如ImageNet、CIFAR-100和VTAB,且所需的计算资源依旧远小于之前SOTA。在I21K上预训练得到的ViT-L/16性能也非常不错,需要的计算资源更少,在8TPU上训练30天即可。

1a6d6bf4-92a2-11eb-8b86-12bb97331649.png

作者进一步使用可视化的结果分析了使用不同预训练数据集和不同复杂度模型的情况下,下游任务的表现。作者发现,在预训练数据集比较小的情况下,大模型(ViT-L)性能还是不如小模型(ViT-B);当预训练数据集比较大的情况,大模型效果会更好。作者得出的结论是,在小数据集上,卷积的归纳偏置是是非常有用的,但在大数据集上,直接学relevant pattern就够了,这里的relevant pattern应该指的是patch和patch之间的相关模式。

1af0d0f2-92a2-11eb-8b86-12bb97331649.png

总结

此次 Fudan DISC 解读的三篇论文围绕Transformer以及位置编码展开。对于序列来讲,位置编码的影响十分重要,词和句子的位置信息对语义的影响是巨大的,如何在Transformer模型中有效地融合位置信息是十分重要的。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码
    +关注

    关注

    6

    文章

    942

    浏览量

    54820
  • CV
    CV
    +关注

    关注

    0

    文章

    53

    浏览量

    16859
  • 卷积神经网络

    关注

    4

    文章

    367

    浏览量

    11863

原文标题:【Transformer】Transformer 中的位置编码 -- ICLR 2021

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    编码器逻辑功能解析与实现

    在现代电子威廉希尔官方网站 与自动化控制系统编码器作为一种关键性传感器,扮演着举足轻重的角色。它通过将机械位移或旋转转换成数字信号,为各种设备提供了精确的位置、速度和方向信息。本文将深入探讨编码
    的头像 发表于 11-30 14:35 358次阅读

    编码器七种常见故障解析

    编码器,作为工业自动化系统不可或缺的重要组件,承担着将旋转或线性位移转换为电信号,从而实现对设备精确控制和反馈的关键任务。然而,在实际应用编码器也会遇到各种故障,影响其正常工作。
    的头像 发表于 11-25 08:58 568次阅读

    编码器在机器人威廉希尔官方网站 的应用 编码器在传感器系统的作用

    测量机器人位置和移动的装置,它能够将机器人位置和运动转化为数字信号,以供机器人控制系统使用。编码器在机器人威廉希尔官方网站 的应用主要体现在以下几个方面: 定位控制 :
    的头像 发表于 11-24 10:02 490次阅读

    编码器与位置控制系统的结合应用

    编码器与位置控制系统的结合应用在现代工业自动化和机器人威廉希尔官方网站 扮演着至关重要的角色。以下是对这一结合应用的分析: 一、磁编码器的基本原理 磁编码
    的头像 发表于 11-23 09:26 348次阅读

    编码器工作原理解析编码器与光编码器的比较

    编码器工作原理解析编码器是一种利用磁场变化来测量角度和位置的传感器。它的工作原理基于霍尔效应或磁阻效应。以下是磁编码器的基本工作原理:
    的头像 发表于 11-23 09:06 686次阅读

    电机控制系统编码器概述与作用

    编码器分辨率是描述编码器在测量运动过程中所能分辨的最小位置变化量的指标。理解编码器分辨率对于设计和实现高精度的运动控制系统至关重要。以下是对编码
    的头像 发表于 08-17 19:49 567次阅读

    AGV轮毂电机编码

    编码器还可以提供电机的绝对位置信息,这对于AGV系统的定位和校准至关重要。在AGV系统,一般会使用Z信号来表示编码器的绝对位置。Z信号是一
    的头像 发表于 07-22 11:33 503次阅读
    AGV轮毂电机<b class='flag-5'>中</b>的<b class='flag-5'>编码</b>器

    旋转编码器在PLC怎么编程

    在工业自动化领域,旋转编码器与可编程逻辑控制器(PLC)的结合应用极为广泛。旋转编码器通过提供精确的旋转角度或位置信息,为PLC提供反馈信号,进而实现对设备的精确控制。本文将详细介绍旋转编码
    的头像 发表于 06-17 09:24 1643次阅读

    编码器在自动化系统的应用

    在现代自动化系统编码器作为一种关键的位置和速度检测装置,发挥着不可替代的作用。它能够将电机的角位移或直线位移转换为可计量的电信号,为控制系统提供精确的位置反馈和速度控制。本文将详细
    的头像 发表于 06-13 14:50 845次阅读

    绝对值编码器的工作原理及其在电机控制的应用

    绝对值编码器在电机控制系统的应用 在电机控制系统,绝对值编码器带来了精确的位置反馈信号。依据编码
    的头像 发表于 05-21 10:55 1154次阅读
    绝对值<b class='flag-5'>编码</b>器的工作原理及其在电机控制<b class='flag-5'>中</b>的应用

    视觉Transformer基本原理及目标检测应用

    视觉Transformer的一般结构如图2所示,包括编码器和解码器两部分,其中编码器每一层包括一个多头自注意力模块(self-attention)和一个位置前馈神经网络(FFN)。
    发表于 04-03 10:32 3481次阅读
    视觉<b class='flag-5'>Transformer</b>基本原理及目标检测应用

    脉冲编码位置未确定如何解除,脉冲编码位置怎么调

    再次通电后,如果仍然显示“脉冲编码位置未确定”,可以在关节进给的模式下,使出现问题的轴朝任一方向旋转,直到按下RESET键时不再出现报警。
    的头像 发表于 02-25 11:21 2775次阅读

    编码器原点设定方法 | 编码器原点丢失怎样找回

      编码器原点有什么功能 编码器的原点功能主要用于确定位置参考、启动和停止控制、运动方向判断以及定位回归操作。这些功能对于许多应用位置
    的头像 发表于 02-21 15:02 1852次阅读

    编码器零点位置怎么看 | 编码器零位怎样确定

    。这些标记点通常很显眼且容易识别。 2. 编码器数据:通过读取编码器的输出数据,可以观察到编码器相对于其零点位置编码计数值。在
    的头像 发表于 02-18 18:28 2340次阅读
    <b class='flag-5'>编码</b>器零点<b class='flag-5'>位置</b>怎么看 | <b class='flag-5'>编码</b>器零位怎样确定

    深度解析大语言模型的位置编码及其外推性

    我们先来回顾一下绝对位置编码的问题。绝对位置编码通过可学习的 Positional Embedding 来编码位置信息,这种方案直接对不同的
    发表于 01-16 11:37 837次阅读
    深度<b class='flag-5'>解析</b>大语言模型的<b class='flag-5'>位置</b><b class='flag-5'>编码</b>及其外推性