Transformer-based模型中的位置信息编码

        华为推出的预训练模型nezha的其中一项创新点为使用了相对位置的函数式编码。于是本文对于Transformer相关的模型中对于字词的位置编码方式进行简单的总结。本文参考了浅谈 Transformer-based 模型中的位置表示 - 知乎

        1.原生的transformer中使用的是绝对位置的函数式位置编码,使用的是正余弦函数。由于transformer中为self-attention,这种正余弦函数由于点乘操作,其实会有隐式的相对位置信息存在,但是没有方向性,且通过权重矩阵的映射之后,这种信息可能会消失。

        2.bert中使用的是绝对位置的参数式编码,且和相应位置上的词向量进行相加而不是拼接。

        3.RPR,相对位置表示。将相对位置信息融入attention的计算中。

        4.transformer-XL  XLNet, 正余弦函数矩阵和一个偏置项(参数)来表示相对位置。

        5.nezha,使用相对位置函数编码

==================================================

最近(2021-04-21)google又出了一篇关于位置编码对transformer效果的影响:Demystifying the Better Performance of Position Encoding Variants for Transformer

论文地址:https://arxiv.org/abs/2104.08698 有兴趣可以仔细读一下。

摘要:

Transformers是目前nlp效果最好的模型,它把输入序列转化成向量。模型对于输入词的位置信息是加在了输入当中,分段信息也通过这样的方式加入。最近的一些位置编码变体表明相对位置编码的效果会更好。本文对不通的位置编码方式进行系统的比较,理解它们不同表现的原因,并提出一种有效的位置和分段编码方式。

介绍:

Transformers的主要结构为self-attention和feed forward层,这两者对输入token的位置是不敏感的。为了使模型位置敏感,最典型的方式就是把位置嵌入加到token嵌入中。这个位置嵌入只取决于词出现的位置,就是说位置i的嵌入只和i有关,和i位置上的词是无关的。位置嵌入也可以是固定的,比如正弦函数嵌入。对于位置嵌入有很多的研究,这些工作展示了使用相对位置编码会比绝对位置编码效果好,但是不知道为什么。缺乏系统的研究和两种方法优缺点的理解。

 本文认为绝对位置编码的效果差是因为融合方式是加入到输入中。文章在分类、问答、翻译任务上进行实验,表明在attention矩阵加入位置编码比在输入token中加入位置信息效果好。这表明位置信息在哪里融合入Transformers中是重要的。文章也比较了不同head和不同层共享位置编码的情况,提出了相对标量位置编码变体和新的相对分段编码方法。

Transformers

绝对位置编码

        两种变体:固定的函数式(原生的transformers)和参数式的(BERT)。

相对位置编码

        绝对位置编码的一个缺点是要求固定的输入长度。为了泛化到任意序列长度,就是使用相对位置编码。接下来就是介绍一些流行的相对位置编码方法。

        1.相对位置编码加入attention计算(K,V)而不是输入,这个部分会增加位置信息参数。并在不同的head共享位置编码提高效率。

        2.相对函数编码+学习参数。

相对位置标量

        T5中使用的方法,位置编码标量直接加入attention分值矩阵;V向量中不加位置信息。不同的head使用不同的位置编码,不同层共享。

TUPE

        略

输入加位置信息的缺点

        1.绝对位置编码的时候,如果位置编码加入输入的情况,损失函数对于位置和输入是相同的。在不同的batch中,输入X是不一样的,而位置其实是不变的,所以给予输入X和位置不同的自由度可以提高效果。之前的相对位置编码方法没有这个问题。

        2.该定理表明,注意矩阵的秩受绝对位置编码的约束,通过在注意矩阵中加入位置信息来使用per-head(低秩位置矩阵)编码,可以直接得到更高秩的注意。

绝对位置编码:        

相对位置编码:

实验:

        见论文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值