1、为什么需要位置编码?
Transformer基于自注意力机制,无法直接理解元素顺序
2、绝对位置编码和相对位置编码的区别
核心区别在与表征逻辑和适用场景:
1)绝对位置编码:给每个位置分配固定的位置向量,只和位置k有关(正弦余弦编码、可学习编码)。缺点是变长序列或长距离依赖时,无法充分表达位置信息。适合短序列任务,比如句子分类、短文本翻译,实现简单还稳定。
2)相对位置编码:并不为每个位置分配唯一编码,而是关注序列中各元素的相对位置,计算序列中元素之间的相对距离,来表示它们之间的相对关系。更适合长文本任务,比如文档摘要、长文理解,长序列下表现更优。
3、正弦编码有没有相对为位置表征能力
4、什么是好的位置编码
每个位置编码唯一、良好的外推性、不同句子中,token相对位置相同时,相关性应一致。
5、旋转位置编码-RoPE
原理:
直接看原作者的博客,解释得很清楚,公式太多不写在这里 spaces.ac.cn/archives/82…
操作流程:对序列中的每个token,先计算其对应的query和key向量,后对每个token位置计算对应的旋转位置编码,然后对每个token的query和key向量应用旋转变换。最后旋转后的query和key向量点积时就纳入了相对位置信息。
6、RoPE外推
理论上RoPE可以无限外推,但是实验发现RoPE依然有外推问题,一般使用插值来解决(线性插值、非线性插值)
1)线性插值:通过缩放位置索引,在不损失太多性能前提下,能够处理超过预训练长度的序列(需要少量样本微调)
L:预训练长度
L':当前序列长度
2)非线性插值:解决线性插值无法区分距离相近token的问题。通过改变RoPE的base值实现。
7、注意力线性偏置(Alibi)