不同于RNN、CNN等模型,对于Transformer模型来说,位置编码的加入是必不可少的,因为纯粹的Attention模块是无法捕捉输入顺序的,即无法区分不同位置的Token。为此我们大体有两个选择:想办法将位置信息融入到输入中,这构成了绝对位置编码的一般做法;想办法微调一下Attention结构,使得它有能力分辨不同位置的Token,这构成了相对位置编码的一般做法。
绝对位置编码
1、训练式
学习的位置编码(Learned Position Embeddings):
相比于固定的正弦余弦编码,学习的位置编码是通过训练过程自动学习的。
每个位置编码是模型的参数之一,通过梯度下降等优化算法进行优化。
这种方法在某些任务中可能优于固定的正弦余弦编码,尤其是在位置信息对于任务非常重要时。
2、三角式
正弦和余弦函数编码(Sinusoidal Position Encoding):
Transformer模型中最初采用的方法。
对于每个位置i和每个维度d,使用正弦和余弦函数交替地生成位置编码,其中波长形成一个几何级数。
公式如下:
3、递归式
原则上来说,RNN模型不需要位置编码,它在结构上就自带了学习到位置信息的可能性(因为递归就意味着我们可以训练一个“数数”模型),因此,如果在输入后面先接一层RNN,然后再接Transformer,那么理论上就不需要加位置编码了。
4、相乘式
相对位置编码
1、Transformer中的相对位置编码:
Google的研究者在Transformer模型中引入了一种相对位置表示方法,允许模型利用头(head)间不同的位置信息。这种方法计算自注意力时,不仅考虑了键(Key)和查询(Query)的标准相互作用,还引入了基于它们之间距离的成分。
该方法使用可学习的位置向量来表示不同位置之间的距离,通过修改自注意力机制来整合这些相对位置向量。
2、自适应相对位置编码(T5):
在自注意力的计算中,根据元素间的相对距离动态调整注意力权重。这种方式不需要为每个可能的位置对预设一个位置向量,而是通过函数(如可训练的参数化函数)动态生成位置信息。
例如,T5模型采用了一种简化的相对位置编码,它在模型的每一层都重新计算位置信息,从而使模型能够更灵活地适应不同的上下文需求。
3、基于内容的相对位置编码:
在某些变体中,位置信息可以直接与输入元素的内容(如单词的嵌入)结合,以决定注意力分配。这种方法尝试模拟人类在处理信息时如何基于内容和上下文(而不仅仅是固定的模板)来调整对信息的关注。
4、DeBERTa的相对位置编码
DeBERTa模型使用了一种特殊的相对位置编码,这种编码不仅编码元素间的相对距离,还编码了它们的方向(即前向或后向)。这允许模型更精确地理解词语间的前后关系,提高了对长距离依赖关系的捕捉能力。具体来说,模型为每对词汇分别计算两个不同的位置分数:
5、XLNet的相对位置编码
在每次预测时,XLNet会随机排列输入序列的顺序,并试图预测缺失的部分。这种方法自然地要求模型理解和编码元素之间的相对位置信息。XLNet中的相对位置编码被集成到其双流注意力结构中,其中一个流处理内容信息,另一个流专注于预测任务。相对位置编码帮助模型理解序列中词与词之间的相对距离和方向。
相对位置信息被直接用于调整注意力分数,模型不仅考虑内容的相似性,还考虑了词汇在序列中的相对位置,使得预测更加准确。
其它位置编码
1、CNN式
虽然“CNN式”不是一个标准术语,但在位置编码的语境下,我们可以推测这指的可能是在基于卷积神经网络(CNN)的模型中如何处理位置信息。
- 添加位置信息层:在输入层或卷积层中,可以添加额外的位置编码层,使得每个词或字符的位置信息可以通过额外的通道输入到网络中。
- 通过卷积结构固有地处理位置信息:由于卷积操作本身就是局部的并且保持空间关系,它自然地包含了一种隐式的位置感知能力。
2、复数式
复数式位置编码(Complex Number Positional Encoding)是一种在处理序列数据时使用复数(实部和虚部)来编码位置信息的方法。这种方法的基本思想是:
-
使用复数的性质:复数可以在其相位和幅度中编码信息,这使得复数特别适合于同时表示位置的大小和方向。
-
相位作为位置信息:复数的相位可以被用来编码相对位置信息,其中相位的变化可以表示元素间的位置变化。
RoPE 融合式(Rotary Position Embedding)
融合式位置编码,特别是在自然语言处理中被称为Rotary Position Embedding (RoPE),它将位置信息与每个词的表示融合在一起,具体通过旋转变换实现。这种方法的核心在于:
Rotary Position Embedding(RoPE)是一种相对较新的位置编码技术,它在自然语言处理和其他序列模型中用于增强模型对位置信息的处理能力。RoPE 的核心思想是将位置信息直接融合进每个词元的表示中,而这一过程是通过旋转变换来实现的。这种方法特别适用于基于 Transformer 的模型,可以有效改善这些模型在处理长序列时的性能。
长度外推问题
什么是?
大模型的外推性问题是指大模型在训练时和预测时的输入长度不一致,导致模型的泛化能力下降的问题。在目前的大模型中,一般指的是超出预训练设置的上下文长度时,依旧保持良好推理效果的能力。
解决方法