Encoding word order in complex embeddings
论文地址:
参考资料:
整体思路以及计算方式
论文给出新的位置编码方式,整体思路如下。
传统使用位置编码的形式为:
f(j,pos)=fwe(j)+fpe(pos) 其中j表示词的index,pos表示该词对应的位置。作者认为这种方式无法表示相对位置关系,给出了另一种位置编码方式为:
f(j,pos)=gj(pos) 为了给出合理的位置编码,作者提出了两个位置编码应该满足的形式:
存在函数w,满足:
g(pos+n)=w(n)g(pos) 位置函数g有界:
∃δ∈R+,∀pos∈N,∣g(pos)∣≤δ
满足上述两个条件的解为:
g(pos)=z2z1pos for z1,z2∈C with ∣z1∣≤1 利用复数表示,可得
g(pos)=z2z1pos=r2eiθ2(r1eiθ1)pos=r2r1posei(θ2+θ1pos) subject to ∣r1∣≤1 特别的,取r1=1,那么上式可以化简为:
g(pos)=r2ei(θ2+θ1pos)≜rei(ωpos+θ) 可学习的参数为:
时间复杂度
假设原始的position embedding形状为L×D,那么Complex Embedding的参数数量为3×L×D(因为涉及到r,w,θ),所以该方法会增加空间复杂度;另外,由于复数的分为实部和虚部,所以计算的时候时间复杂度会乘以2。
训练以及loss
不变。
代码
实验以及适用场景
适用于所有场景,作者测了LM,机器翻译以及分类任务,均带来一定提升。
细节
暂无。
简评
作者给的思路很简洁,也能带来一定提升,值得进行复现。