Transformer升级之路:Sinusoidal位置编码追根溯源

©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

最近笔者做了一些理解和改进Transformer的尝试,得到了一些似乎还有价值的经验和结论,遂开一个专题总结一下,命名为“Transformer升级之路”,既代表理解上的深入,也代表结果上的改进。

作为该专题的第一篇文章,笔者将会介绍自己对 Google 在《Attention is All You Need》[1] 中提出来的 Sinusoidal 位置编码的新理解,其中   分别是位置 k 的编码向量的第 2i, 2i+1 个分量,d 是向量维度。

作为位置编码的一个显式解,Google 在原论文中对它的描述却寥寥无几,只是简单提及了它可以表达相对位置信息,后来知乎等平台上也出现了一些解读,它的一些特点也逐步为大家所知,但总体而言比较零散。特别是对于“它是怎么想出来的”、“非得要这个形式不可吗”等原理性问题,还没有比较好的答案。

因此,本文主要围绕这些问题展开思考,可能在思考过程中读者会有跟笔者一样的感觉,即越思考越觉得这个设计之精妙漂亮,让人叹服。

泰勒展开

假设我们的模型为 ,其中标记出来的 分别表示第 m,n 个输入,不失一般性,设 f 是标量函数。像 Transformer 这样的纯 Attention 模型,它是全对称的,即对于任意的 m,n,都有:

这就是我们说 Transformer 无法识别位置的原因——全对称性,简单来说就是函数天然满足恒等式 f(x,y)=f(y,x),以至于我们无法从结果上区分输入是 [x,y] 还是 [y,x]。

因此,我们要做的事情,就是要打破这种对称性,比如在每个位置上都加上一个不同的编码向量:

一般来说,只要每个位置的编码向量不同,那么这种全对称性就被打破了,即可以用 代替 f 来处理有序的输入。但现在我们希望能进一步分析位置编码的性质,甚至得到一个显式解,那么就不能止步于此。

为了简化问题,我们先只考虑 m,n 这两个位置上的位置编码,将它视为扰动项,泰勒展开到二阶:

可以看到,第 1 项跟位置无关,第 2 到 5 项都只依赖于单一位置,所以它们是纯粹的绝对位置信息,第 6 项是第一个同时包含 的交互项,我们将它记为 ,希望它能表达一定的相对位置信息。

(此处的泰勒展开参考了知乎问题《BERT 为何使用学习的 position embedding 而非正弦 position encoding?》[2] 上的纳米酱的回复。)

相对位置

我们先从简单的例子入手,假设 是单位矩阵,此时 是两个位置编码的内积,我们希望在这个简单的例子中该项表达的是相对位置信息,即存在某个函数 g 使得:

这里的

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值