transformer引入位置信息--Sinusoidal位置编码《个人学习笔记》

transformer引入位置信息--Sinusoidal位置编码

首先,所有技术都是个人理解,并感谢技术各位分享,由此根据理解自己做个小结,希望可以帮助到需要的朋友,所有博文出现不对的地方希望能指出。

 在介绍本文之前先先入为主给出俩个概念,方便后续理解:
一 语言中token位置特性:token位置是属于语言中word的属性,可以理解为token位置也定义了语言中token的意义;

二 对称性:指的是token在不同的位置但利用transformer输出的结果是相同的,例如:我喜欢她,对于 ‘我’ 和 ‘她’ 这俩个字来说,在transformer虽然位置不同但是输出值是一样的,都表示人这一语义,但其实这俩个字所表示的行为意义是不同的。

为什么transformer需要位置编码

  在transformer结构中的attention机制中是不含有位置信息,通过attention机制对重要的输入进行增加权值,用一个不太恰当的例子,比如在聚类中,(transformer结构对应)所要聚类的元素是不是属于该聚类中心,而对于元素与中心的距离这一重要信息是未知的,但是在语言信息中,语言的每一个token的相对物理距离顺序是非常重要信息,比如在lstm中,因为拥有神经元之间可以传递信息的遗忘门、输入门结构,使得该模型获得长时依赖特性,为了能让transformer也可以拥有语言中token位置特性,去掉其对称性,所以对于transformer需要引入一个能够表示token位置信息的输入,使transformer拥有时间依赖特性。

Sinusoidal绝对位置编码

通过以上的铺垫,终于可以上本文的正菜了

 首先给出一个正余弦公式:
在这里插入图片描述
以上正余弦公式是用于给token在语言中的位置信息编码公式,例如语言中有L个token即语句的长度,pos表示token所在语言中的位置,pos=0,…,L-1,i 表示向量的维度,假设token共有d_model维度,即每一个token的向量长度是d_model,i具体表示为i2 或者i2+1 等于所表示的维度(注意,每一个token的位置信息是一个d_model长度的向量)。

 根据三角函数公式:
在这里插入图片描述
我们根据上式对 pos + k展开,所以可以给出:在这里插入图片描述
 由此 可以计算出输入的绝对位置,即绝对位置编码公式,并因此可以得到了输入位置的position embedding。再则相对位置可以更好的表示token在语句中的关系,因此想利用相对位置来表示位置编码信息,但基于pos 和k点积表示的相对位置信息,但是无法反映位置的方向性,所以需要更好的方法表示相对位置。

本文参考博文 链接有https://zhuanlan.zhihu.com/p/92017824
和博文 https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/115059314
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值