NTK-by-parts
关于RoPE中不同维度的波长,有如下结论:存在某些维度 i ,其波长 大于在预训练期间看到的最大上下文长度 L 。也就是说:在训练期间,存在某一个维度,旋转一圈后超过了 token最大上下文长度 L 。具体每个维度的波形可以参考图1-3,即Sin方法的绘图,其中 。#card
-
如果某些维度的波长大于上下文长度 ,这说明该维度无法执行全旋转。在这种情况下,由于维度在预训练期间至少不会完全旋转一次,如果我们选择第一个token作为基准,那么在预训练期间每隔一个token到它的距离是唯一的,NTK可以用来确定它的绝对位置信息。
-
相反,如果某个维度波长小于L ,那该维度就执行了至少一次全旋转,我们就无法在这个维度描述绝对距离,只能描述相对位置信息。
#card 因此,作者认为,不要对『只编码相对位置信息的维度』 进行内插破坏,因为它们对于模型区分附近token的相对顺序至关重要。同时,应该始终对仅编码绝对位置信息的维度 进行内插,因为较大的距离将超出之前模型能够编码的距离。综上,可以制定一种考虑以上所有因素的显式且有针对性的插值方法,即:
-
如果波长远小于L,此时编码了相对位置的维度,因此不进行内插;
-
如果波长大于L,此时编码了绝对位置的维度,应该进行内插以防止超出绝对位置的最大可编码范围;
-
波长介于上述之间的维度,采用NTK-aware方法。
NTK-by-parts公式 #card