位置编码

由于注意力机制是不会保留序列位置信息的,因此需要该结构去用其他方法吸收位置信息。目前有三种主流的技术可以解决:

  1. 用正弦位置编码(Sinusoidal Position Encoding)
  2. 学习位置向量(类似词向量)
  3. 相对位置表达(Relative Position Representations)

Motivation 

RNN中,第一个"I"与第二个"I"的输出表征不同,因为用于生成这两个单词的hidden states是不同的。对于第一个"I",其hidden state是初始化的状态;对于第二个"I",其hidden state是编码了"I think therefore"的hidden state。所以RNN的hidden state 保证了在同一个输入序列中,不同位置的同样的单词的output representation是不同的。

在self-attention中,第一个"I"与第二个"I"的输出将完全相同。因为它们用于产生输出的“input”是完全相同的。即在同一个输入序列中,不同位置的相同的单词的output representation完全相同,这样就不能提现单词之间的时序关系。--所以要对单词的时序位置进行编码表征。

正弦位置编码

paper中,由对绝对位置编码变换推导出新的相对位置编码方式。

vanilla Transformer中的绝对位置编码

pos对应输入的位置,i这里在翻译上是维度。我在很多讨论该论文的帖子上看到,i有很多人有疑问,到底是指什么维度。在Vaswani的Attention is what you need论文中,是用上面的公式。举个例子,如pos=3,d(model)=128,那么3对应的位置向量如下

相对位置表达

1. 若不使用RPR, 计算z_{i}的过程

2. 若使用RPR,计算z_{i}的过程:

(3) 表示在计算word i 的output representation时,对于word j的value vector进行了修改,加上了word i, j 之间的相对位置编码。

(4) 在计算query(i), key(j)的点积时,对key vector进行了修改,加上了word i, j 之间的相对位置编码。

这里用加法引入RPR的信息,是一种高效的实现方式。

符号含义

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值