大家好,这里是好评笔记,本文为试读,查看全文请移步公主号:Goodnote。本文详细介绍3种常见的Transformer位置编码——正弦/余弦位置编码(sin/cos)、基于频率的二维位置编码(2D Frequency Embeddings)、旋转式位置编码(RoPE)
@[toc]
Transformer中常见的编码方式
- 自注意力机制(Self-Attention)本身不具备任何顺序或空间位置信息。
- 为此,需要显式地将位置信息嵌入输入特征,以确保模型能够感知特征间的空间或时间关系。
正弦/余弦位置编码(Sinusoidal Positional Encoding)
在 Transformer 的原始论文(Vaswani et al., 2017)中提出的,最原始的位置编码。正弦/余弦位置编码也叫1D Frequency Embeddings,通过频率函数将每个位置嵌入到特征空间中。
公式:
- :表示输入序列的位置。
- :表示embedding维度。
- 正弦和余弦的周期性特点可以让模型捕获相对位置信息。
说明:
- 正弦 被应用于所有偶数维(索引为 );
- 余弦 被应用于所有奇数维(索引为 )。
这种设计的意义在于:
- 区分不同维度的位置信息:
- 对偶数维和奇数维分别使用不同的函数,可以让不同维度的位置信息具有不同的变化模式。
- 例如,偶数维的位置信息可能更注重某种语义,奇数维则可能补充另一种语义。
- 模型的平移不变性:
- 在一些任务中,特别是相对位置编码时,正弦和余弦函数的周期性可以帮助模型更容易地捕获相对距离信息。
- 消除对称性:
- 如果只用一种函数,比如全是 ,可能导致偶数维和奇数维的输出具有对称性,降低信息的区分度。
基于频率的二维位置编码(2D Frequency Embeddings)
主要针对Transformer处理二维数据(如图像)的情况。在 ViT(Vision Transformer)的标准实现中,将两个独立的 1D Frequency Embeddings 分别应用于图像的行(height)和列(width)方向,然后通过拼接(concat)或求和(add)来构造最终的 2D Frequency Embeddings 。
实现方式:两个 1D Frequency Embeddings 构成 2D Embeddings
给定图像的大小为 ,编码维度为 ,这种 2D 编码的计算方式如下:
详细全文请移步公主号:Goodnote。