我整理了很多的算法题,详情见参考链接1
在大模型中,位置编码主要分为两大派:绝对位置编码和相对位置编码。主流的几种脍炙人口的位置编码如下所示:
-
正弦编码
正弦曲线(Sinusoidal)位置编码:这是Transformer原始论文中提出的位置编码方式。它通过正弦和余弦函数的组合为每个位置创建编码,波长呈几何级数排列,使得每个位置的编码都是独特的,并且能够捕获位置之间的相对关系。公式如下:
其中,表示位置,代表embedding的维度,代表的是embedding不同位置的索引。优点:实现简单,效率高,易用性好,有一定的理论支撑
缺点:绝对位置编码带来的灵活性差;外推性较差,难以对超出预训练长度的文本进行很好的外推或者说性能下降;难以表示有效的相对位置间的关系,也即难以表示前后方向,只能表示距离。 旋转位置编码
旋转位置编码(RoPE):这是一种相对位置编码,通过旋转向量的方式来编码位置信息。RoPE在特定任务中表现出独特的优势,尤其是在处理具有对称性或周期性特征的数据时。
优点:能保证相对位置关系;良好的外推性;可以和线性注意力机制兼容.
缺点:实现上稍微复制;外推到超长序列也存在性能下降问题
可以参考 https://zhuanlan.zhihu.com/p/647109286 进行学习,十分钟就精通了
-
ALiBi
相对位置编码(ALiBi):这是一种微调Attention结构的方法,使其能够分辨不同位置的Token。相对位置编码适用于长文本处理和需要捕捉长距离依赖的任务,如机器翻译和问答系统ALibi并没有显示的在网络种加入编码,唯一的修改是在qk点积之后,加入了一个静态的不可学习的bias:
m是一个head-specific的超参(multihead),对于n个head而言,步长一般为优点:实现简单,减少了模型embedding参数,效率高,具有良好外推性,
缺点:外推到超长序列也存在性能下降问题
本文由mdnice多平台发布