RoPE:假定
α
\alpha
α是定值 其中一半位置是用cos表示的
cos
(
k
α
−
2
i
d
)
\cos(k\alpha^{-\frac{2i}{d}})
cos(kα−d2i)(另一半是sin)(d是词嵌入维度)
当太长如何解决:
1 直接不管—外插
缺点:超过一定长度性能急剧下降。(较大时,对应的很多位置编码都是训练时未见过)
2 k映射为 k/λ—内插
cos
(
k
λ
α
−
2
i
d
)
\cos(\frac{k}{\lambda}\alpha^{-\frac{2i}{d}})
cos(λkα−d2i)
相当于插值了 来表示更多位置
缺点:更密集了 分辨率更低 相邻两个位置的差异变小
3 NTK方案
乘上随i变化的系数
λ
d
d
−
2
\lambda^\frac d{d-2}
λd−2d,于是编码方案变为
cos
(
k
α
−
2
i
d
λ
−
2
i
d
−
2
)
\cos(k\alpha^-\frac{2i}d\lambda^{-\frac{2i}{d-2}})
cos(kα−d2iλ−d−22i)
当i较小时 也就是高频时 短周期时 该系数的指数接近0 系数接近1 等于没变动 也就是外插
当i较大时 也就是低频时 长周期时 该系数的指数接近-1 系数接近1/λ 也就是除了个λ 相当于插值 也就是内插
综上 高频部分外插 低频部分内插
如何区分高频低频:
对于
cos
(
k
α
−
2
i
d
)
\cos(k\alpha^{-\frac{2i}{d}})
cos(kα−d2i)公式
内部指数图像是一条
当i小的时候是快速变化的 因此称之为高频 其实高频指的就是i小的时候 也就是维度低的时候