• 谈一下相对位置编码


    谈一下相对位置编码RPR

    经过线性变化之后,正余弦函数表示的相对位置信息消失,所以需要优化。

    一般来讲,谈到优化,三种比较有名:RPR; Transformer-XL;complex embeddings;

    我在这个文章简单讲一下RPR。

    老样子,不涉及到公式推导,尽量把我的理解讲出来。

    RPR思路

    RPR思路很简单,原始正余弦函数,是在输入的的时候与词向量相加作为输入,在attention丢失相对位置信息.

    改进的话就是不在输入的时候进行位置编码,而是在attention中显示把相对位置信息加入进去。

    如何理解相对位置

    绝对位置编码是在每个位置都对应一个唯一的位置编码信息,RPR把这一部分去掉去学习一个相对位置编码。

    首先我们需要知道相对位置是有方向的的。

    举个例子:”我/爱/中国/共产党“

    ”我“对”爱“的相对位置就是 -1, ”中国“对”爱“的相对位置就是 1。

    所以方向不同,对应两个不同的相对位置,在学习的时候,一个距离,也就需要学习两个相对位置编码。

    RPR修改思想

    作者认为在相对位置小于4的时候,attention对相对位置比较敏感,在大于4之后,相对位置不敏感。所以窗口设置为4。

    需要注意的是,窗口设为4,代表的当前位置左边4个,右边也有4个,再加上自己,就是一共9个位置,也就是:

    [ i − 4 , i − 3 , i − 2 , i − 1 , i , i + 1 , i + 2 , i + 3 , i + 4 ] [i-4,i-3,i-2,i-1,i,i+1,i+2,i+3,i+4] [i4,i3,i2,i1,i,i+1,i+2,i+3,i+4]

    注解:有方向

    当你的attention进行到哪个单词的时候,你的 i i i 就对应的是哪个位置。

    还是上面那句话举例子。

    如果此时的输入是“我”,那么用到的相对位置编码就是 [ i , i + 1 , i + 2 , i + 3 ] [i,i+1,i+2,i+3] [i,i+1,i+2,i+3]

    如果此时输入的是“爱”,那么这个时候用到的相对位置编码就是 [ i − 1 , i , i + 1 , i + 2 ] [i-1,i,i+1,i+2] [i1,i,i+1,i+2]

    了解了这个,我们再谈一下这个相对位置信息是怎么显示加入进去的。

    这个显示的加入分为两个部分。

    第一个部分是在计算 e i j e_{ij} eij的时候,涉及到RPR的一个表征: a i j K a_{ij}^{K} aijK,表示对 Q/K/V三者中的K做了修改。

    第二个部分就是在计算 z i z_{i} zi的时候,涉及到另一个RPR的表征: a i j V a_{ij}^{V} aijV,表示对Q/K/V三者中的V做了修改。

    两个部分的修改都是使用加法。

    关于RPR大概就讲这么多吧。其实思路还是比较简单的,总结来说,就是把相对位置信息在attention之中,显势的加入进去,而不是在输入的时候与词向量相加。

    如果觉得对您有点帮助,点个赞再走吧。

    参考资料

    dasou

  • 相关阅读:
    【毕业设计】机器学习驾驶疲劳检测系统 - python
    Linux开发——Makefile 基础(九)
    消息队列的架构设计面试题
    SSM+公寓管理系统 毕业设计-附源码171958
    python爬虫之app爬取-mitmproxy 的使用
    Android画中画
    蓝桥杯第十四届电子类单片机组决赛程序设计
    linux应用hook实例(含源码分析)
    城镇供水产销差问题分析与对策
    SpringBoot 整合WebService
  • 原文地址:https://blog.csdn.net/DeepLearning_/article/details/133986769