理解Transformer中的位置编码

为什么要位置编码

【文本分类】

  • I like this movie because it doesn’t have an overhead history. Positive
  • I don’tlike this movie because it has an overhead history.     Negative
    在文本分类中,not出现地方不同,导致分类的类别也不同

【命名实体识别】
在这里插入图片描述
lnc.之前单词一般为公司具体名称即LOC(组织机构)
in 之后一般为TIME(时间) 和 LOC (组织机构)

三角函数的位置编码(原始Transformer)

{ P E ( p o s , 2 i ) = sin ⁡ ( p o s 10000 2 i / d m o d e l ) P E ( p o s , 2 i +1 ) = cos ⁡ ( p o s 10000 2 i / d m o d e l ) \left\{ \begin{matrix} PE(pos,2i)=\sin \left( \frac{pos}{{{10000}^{2i/{{d}_{model}}}}} \right) \\ PE(pos,2i\text{+1})=\cos \left( \frac{pos}{{{10000}^{2i/{{d}_{model}}}}} \right) \\ \end{matrix} \right. PE(pos,2i)=sin(100002i/dmodelpos)PE(pos,2i+1)=cos(100002i/dmodelpos)
其中, p o s pos pos 是 token的位置索引,设句子长度为 L L L,那么 p o s = 0 , 1 , . . . , L − 1 pos=0,1,...,L-1 pos=0,1,...,L1
       i i i是向量的某一维度,假设 d m o d e l = 512 d_{model}=512 dmodel=512 i = 0 , 1 , . . . , 255 ( 因 为 2 i 了 ) i=0,1,...,255(因为2i了) i=0,1,...,255(2i)
根据如上公式,可以为每个位置上的token生成 d m o d e l d_{model} dmodel维的位置向量
【为什么这么做】因为根据三角函数
{ sin ⁡ ( α + β ) = sin ⁡ α cos ⁡ β +con α sin β cos ⁡ ( α + β ) = cos ⁡ α cos ⁡ β − sin ⁡ α sin ⁡ β \left\{ \begin{matrix} \sin (\alpha +\beta )=\sin \alpha \cos \beta \text{+con}\alpha \text{sin}\beta \\ \cos (\alpha +\beta )=\cos \alpha \cos \beta -\sin \alpha \sin \beta \\ \end{matrix} \right. {sin(α+β)=sinαcosβ+conαsinβcos(α+β)=cosαcosβsinαsinβ
可得:
{ P E ( p o s + k , 2 i ) = P E ( p o s , 2 i ) × P E ( k , 2 i +1 ) + P E ( p o s , 2 i +1 ) × P E ( k , 2 i ) P E ( p o s + k , 2 i +1 ) = P E ( p o s , 2 i +1 ) × P E ( k , 2 i +1 ) − P E ( p o s , 2 i ) × P E ( k , 2 i ) \left\{ \begin{matrix} PE(pos+k,2i)=PE(pos,2i)\times PE(k,2i\text{+1})\text{+}PE(pos,2i\text{+1})\times PE(k,2i) \\ PE(pos+k,2i\text{+1})=PE(pos,2i\text{+1})\times PE(k,2i\text{+1})-PE(pos,2i)\times PE(k,2i) \\ \end{matrix} \right. {PE(pos+k,2i)=PE(pos,2i)×PE(k,2i+1)+PE(pos,2i+1)×PE(k,2i)PE(pos+k,2i+1)=PE(pos,2i+1)×PE(k,2i+1)PE(pos,2i)×PE(k,2i)
【结论】当求 P E ( p o s + k , 2 i ) PE(pos+k,2i) PE(pos+k,2i)的向量时,可表示为对 P E ( p o s , 2 i ) PE(pos,2i) PE(pos,2i)上的线性表示,因为 P E ( k , 2 i + 1 ) PE(k,2i+1) PE(k,2i+1)当每次 k=1 时就是一个固定的值,这样逐步向后推

Reference

本博客的基础知识来源于浅谈 Transformer-based 模型中的位置表示,然后基于此,我自己得到上面的结论。

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值