• 谈一下相对位置编码


    谈一下相对位置编码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

  • 相关阅读:
    十大服装店收银系统有哪些 好用的服装收银软件推荐
    多线程【thread】创建【1】
    SpringBoot+ MDC实现全链路调用日志跟踪
    保密资质申报条件
    java计算机毕业设计基于安卓Android/微信小程序的食堂线上预约点餐系统APP
    袋鼠云产品功能更新报告01期丨用诚心倾听您的需求
    Javassist实战
    【老生谈算法】matlab实现蚁群算法解决旅行商问题——蚁群算法
    RabbitMQ - 02 - 基本消息模型
    web课程设计——健身俱乐部健身器材网站模板(24页)HTML+CSS+JavaScript
  • 原文地址:https://blog.csdn.net/DeepLearning_/article/details/133986769