try ai
科普
编辑
分享
反馈
  • 位置编码

位置编码

SciencePedia玻尔百科
核心要点
  • 位置编码对于基于 Transformer 的模型至关重要,因为它们提供了核心自注意力机制本身所缺乏的序列顺序信息。
  • 位置编码的设计已经从简单的可学习查找表,演变为能够优雅捕捉相对位置的复杂方法,如正弦函数和旋转位置嵌入(RoPE)。
  • 这个概念并非单一技术,而是一种设计定制坐标系的多功能理念,使其能够在基因组学、医学影像和计算机图形学等不同领域得到应用。
  • 有效的位置编码设计会考虑数据的内在结构,例如医学扫描中的物理单位或蛋白质序列中的生物锚点,从而构建出更鲁棒、更有原则性的人工智能模型。

引言

现代人工智能模型,特别是 Transformer,拥有跨越广阔序列识别数据点之间关系的卓越能力。然而,其核心机制——自注意力——有一个致命的弱点:它对顺序视而不见。如果无法区分“人咬狗”和“狗咬人”,这些模型就无法掌握语言、DNA 或任何其他有序数据的基本结构。本文旨在填补这一知识空白,深入探讨位置编码——一种为人工智能提供“位置感”的巧妙解决方案。在接下来的章节中,我们将踏上一段从基本原理到高级应用的旅程。您将首先了解位置编码技术的演变,从粗略的地图到旋转嵌入的优雅几何学。然后,我们将探索这一强大思想如何超越其起源,连接不同科学领域,并解决生物学、医学和物理学中的复杂问题。

原理与机制

想象一台能够同时阅读书中每个词的机器。它能看到任意两个词之间的关系,无论它们相距多远。这就是​​自注意力​​机制的超能力,它是像 Transformer 这样的现代人工智能模型的核心引擎。其工作原理是为每个词创建一个 query(查询)、一个 key(键)和一个 value(值)。为了决定位置 i 的词应该对位置 j 的词给予多少注意力,它只需比较它们的“query”和“key”向量,通常使用一种称为点积的数学运算。如果 query 和 key 对齐,注意力就高。

但这种不可思议的能力伴随着一个奇特而深刻的弱点:这台机器在顺序方面是个“健忘症患者”。就其设计而言,自注意力是​​排列不变的​​ (permutation-invariant)。如果你打乱一个句子中所有词的顺序,任意两个词之间的成对注意力分数将保持完全相同。模型将看不出“人咬狗”和“狗咬人”之间的区别,这对于任何希望理解语言、音乐或用 DNA 编写的生命密码的系统来说,都是一个灾难性的失败。

为了克服这一点,我们必须赋予机器一种“位置感”。我们需要给每个词打上关于其在序列中位置的信息。这就是​​位置编码​​的作用。寻找正确方法来实现这一点的过程,是一个从暴力方法走向具有非凡数学优雅性的解决方案的精彩故事。

为机器提供一张粗略的地图

最直接的想法是为每个位置创建一个唯一的向量。我们可以有一个查找表,其中位置 1 映射到向量 p1p_1p1​,位置 2 映射到 p2p_2p2​,以此类推,直到某个最大长度。然后,我们将这个位置向量加到词本身的内容嵌入上。这就是所谓的​​可学习的绝对位置嵌入​​,原始的 BERT 模型就使用了这种方法。模型在训练期间学习每个位置的“含义”。

这在一定程度上是有效的,但仅此而已。这种方法有两个根本性的缺陷。

第一个是外推问题。如果我们用最大长度为 500 个词的句子来训练模型,然后在测试时给它一个 501 个词的句子,会发生什么?模型从未见过位置 501 的嵌入;它已经掉出了其已知世界的边缘。这种无法泛化到更长序列的特性,是可学习绝对嵌入的一个主要实际限制。你可以设计实验来展示这一弱点:一个使用可学习嵌入的模型在处理具有熟悉章节数的文档时可能表现良好,但当被要求处理比训练时章节数更多的文档时,就会失败。

第二个缺陷更为微妙:它是绝对位置的束缚。模型学习的是特定的、绝对的位置。它可能会学到位置 5 的动词通常与位置 2 的名词相关。但我们在语言和其他序列中真正关心的是相对关系。一个音乐主题是由音符之间的音程定义的,而不是其绝对的起始点。生物序列中的一个关键结合基序,无论它从位置 50 开始还是从位置 150 开始,都是相同的功能单元。一个与绝对索引绑定的编码方案迫使模型为每个可能的位置重新学习这些模式,这是一种效率极低的知识获取方式。

正弦交响曲

为了解决这些问题,我们需要像物理学家设计仪器一样,从第一性原理出发思考。我们需要一个无限可扩展且本质上是关系型的编码系统。什么样的数学对象能让我们比较两个点 iii 和 jjj,其方式仅依赖于它们的差值 i−ji-ji−j?

答案在于波和振荡。让我们使用正弦和余弦,这是周期性现象的基本语言。我们可以将任何位置 pospospos 的位置编码定义为一个包含一系列频率的向量:

PEpos,2k=sin⁡(pos/λk)PE_{pos,2k} = \sin(pos/\lambda_k)PEpos,2k​=sin(pos/λk​)
PEpos,2k+1=cos⁡(pos/λk)PE_{pos,2k+1} = \cos(pos/\lambda_k)PEpos,2k+1​=cos(pos/λk​)

在这里,kkk 是向量不同维度的索引,每个 λk\lambda_kλk​ 对应一个不同的波长。通过选择这些波长形成一个几何级数——从非常短到非常长——我们赋予了模型一个相当于显微镜和望远镜的工具,用以在多个尺度上检查位置关系。

这种构造的真正魔力在于我们考虑点积时——这是注意力机制的核心。两个位置 iii 和 jjj 的位置向量的点积是什么?得益于优美的三角恒等式 cos⁡(A−B)=cos⁡(A)cos⁡(B)+sin⁡(A)sin⁡(B)\cos(A-B) = \cos(A)\cos(B) + \sin(A)\sin(B)cos(A−B)=cos(A)cos(B)+sin(A)sin(B),内积 ⟨PEi,PEj⟩\langle PE_i, PE_j \rangle⟨PEi​,PEj​⟩ 可以简化为一个只依赖于相对距离 i−ji-ji−j 的函数。

这是一个惊人的结果。通过简单地将这些固定的、巧妙构造的向量加到我们的词嵌入中,我们通过注意力的基本操作,赋予了模型一种“看见”相对位置的方式。这种​​正弦位置编码​​方案解决了我们之前遇到的两个问题。首先,由于正弦和余弦对任何数字都有定义,我们可以为任何位置生成编码,无论它有多大,从而解决了外推问题。其次,它提供了一种内置的机制来理解相对位置。

相对性的舞蹈

正弦方法是一个巧妙的技巧。它以一种可以轻松恢复相对信息的方式注入了绝对位置信息。但我们能做得更好吗?我们能否将“相对性”的概念直接构建到注意力本身的架构中?这个问题催生了更强大、更优雅的解决方案。

一种方法,在 Transformer-XL 模型中使用,是直接用学习到的、作为相对距离 i−ji-ji−j 函数的偏置来修改注意力分数。这为模型提供了明确的参数,以捕捉一个位置的内容应该如何根据其偏移量纯粹地关注另一个位置的内容。这使得模型对位置的平移具有鲁棒性,是处理非常长序列的有效方法。

一个更优美的想法体现在​​旋转位置嵌入 (RoPE)​​ 中。这是一个纯粹的几何思想。我们不是添加一个位置向量,而是旋转它。

想象一下位置 iii 的 query 向量和位置 jjj 的 key 向量。RoPE 将 query 向量按一个与其位置成正比的角度 θi=i⋅ω\theta_i = i \cdot \omegaθi​=i⋅ω 进行旋转,并将 key 向量按一个与其位置成正比的角度 θj=j⋅ω\theta_j = j \cdot \omegaθj​=j⋅ω 进行旋转。现在,当我们计算它们的点积以获得注意力分数时会发生什么?由于旋转是正交变换,一个奇妙的几何特性出现了:两个旋转后向量的点积仅取决于它们旋转角度的差值,即 (j−i)ω(j-i)\omega(j−i)ω。

注意力分数因此在本质上依赖于相对位置 j−ij-ij−i。位置不再是一个附加的补充;它被编织进了 query 和 key 之间相互作用的结构中。这是一个深刻的视角转变。

这种旋转结构也天然适合建模周期性信号。对于像 DNA 这样具有约 10.5 个碱基对的特征性螺旋周期的数​​据,RoPE 可以配置与这种自然周期性相符的频率,从而为模型提供强大的内置偏置来发现这些模式。

这种具有随位置线性演变的“相位”的特性,正是 RoPE 和正弦编码都具有非凡能力,能够外推到数千个 token 长的序列的原因,远远超出了训练期间所见的任何序列。RoPE 设计中的完美对称性——根据相同规则旋转 query 和 key——至关重要。即使在将依赖于位置的相位应用于 query 和 key 的方式上出现微小的不匹配,也可能导致注意力信号在长距离上发生相消干涉并消失。

从简单的查找表到旋转嵌入的几何之舞的演变,阐释了科学和工程中的一个优美原则:随着我们对问题理解的加深,我们的解决方案往往不是变得更复杂,而是变得更优雅、更强大、更统一。

应用与跨学科联系

在探讨了位置编码的基本原理之后,我们可能会倾向于认为它只是一个聪明但狭隘的技巧,一个应用于特定类别机器学习模型的补丁。但这样做,就好比看待万有引力定律时,只看到它能防止苹果漂浮起来一样。一个强大科学思想的真正美妙之处不在于其最初的应用,而在于其普遍性——它连接看似无关的领域并解决你从未想过相关问题的能力。位置编码正是这样一种思想。它是教机器理解“位置”概念的艺术,而正如我们即将看到的,“位置”的本质是科学中最奇妙多变的概念之一。

我们的旅程始于生命起源之处:生命的密码,DNA。

生命的语言:从基因组到免疫系统

DNA 序列是典型的有序列表。字符串 ACGT 与 TCGA 的含义完全不同。几十年来,生物信息学家使用像卷积神经网络 (CNN) 这样的模型,这些模型擅长发现局部模式——基序(motif)——无论它们出现在哪里。但如果我们需要理解序列的全局架构,即这里一个基因与远处一个调控元件之间的长距离关系呢?这正是由位置编码驱动的 Transformer 架构开辟新前沿的地方。

想象一下,我们正试图预测 CRISPR 基因编辑实验的结果。模型需要查看目标切割位点周围的 DNA 序列。一个 Transformer,凭借其自注意力机制,理论上可以将任何核苷酸与任何其他核苷酸联系起来。但没有位置编码,它是“排列等变的”(permutation-equivariant)——它将序列仅仅看作一个“核苷酸袋”。顺序信息丢失了。通过添加位置编码,我们实际上是给每个核苷酸一个唯一的地址,恢复了序列的基本结构,并允许模型学习支配基因编辑的复杂、依赖于位置的规则。

当我们从相对静态的基因组转向免疫系统的动态世界时,故事变得更加引人入ua。你的身体里有一支庞大的 T 细胞军队,每个细胞都有一个独特的 T 细胞受体 (TCR),可以识别特定的外来颗粒,即抗原表位 (epitope)。TCR 中负责识别的部分,即 CDR3 环,是一个蛋白质序列,由“剪切和粘贴”的遗传过程形成,该过程通常在其中心涉及氨基酸的随机插入和删除(indel)。

现在,假设我们想建立一个模型来预测哪个 TCR 与哪个抗原表位结合——这是免疫学中的一个核心问题。如果我们使用一个简单的、仅从序列开头计数(1,2,3,…1, 2, 3, \ldots1,2,3,…)的位置编码,这些 indel 会让一切都乱套。在中间插入仅仅两个氨基酸就会改变后续每个氨基酸的“地址”。模型会完全困惑,无法识别序列中保守的、结构上关键的部分。

解决方案是一个“生物信息知情”工程的美丽范例。我们不是用一把简单的尺子,而是创建了一个锚定于稳定生物标志物的新坐标系。我们知道 CDR3 序列的开头(“V 段”)和结尾(“J 段”)包含不受 indel 影响的保守基序。我们可以不通过残基的绝对索引来定义它的位置,而是通过它与这两个锚点的相对距离来定义。V 段中的一个残基获得一个 V 锚点坐标;J 段中的一个残基获得一个 J 锚点坐标。现在,当 indel 发生于流动的中心区域时,稳定的、锚定的残基的坐标保持不变!我们设计了一把对数据中特定类型的变异具有鲁棒性的“尺子”,让我们的模型能够学习免疫识别的真实结构基础。

洞见未见:医学影像的新坐标系

现在让我们将目光从序列的一维世界转向医学影像的二维和三维世界。视觉 Transformer (ViT) 通过将图像分解成一系列图像块 (patch) 来处理它们。但我们如何告诉模型每个图像块来自哪里?如果我们将二维的图像块网格展开成一维序列,结果完全取决于我们是逐行还是逐列进行。一个在二维空间中“相邻”的图像块在一维序列中可能相距甚远。

显而易见的解决方案是给每个图像块一个真正的二维坐标 (x,y)(x, y)(x,y)。这可以是一个绝对坐标,也可以是一个相对坐标,模型学习注意力应如何根据两个图像块之间的相对位移(例如,“更多地关注右侧紧邻的图像块”)进行调节。这保留了图像基本的二维网格结构,无论我们如何为模型将其线性化。

但在科学中,尤其是在医学中,图像不仅仅是一个像素网格;它是物理现实的表征。CT 扫描仪或 MRI 机器不会产生完美的、各向同性的立方体。由于临床需求和扫描时间的限制,一个轴向的分辨率通常与其他轴不同。z 方向(切片间)的一步可能对应 555 毫米,而 x 方向的一步仅为 0.50.50.5 毫米。这被称为各向异性 (anisotropy)。

一个基于简单像素索引的编码对这种物理现实是盲目的。对于这样的系统来说,一个“单位”的步长在每个方向上都是相同的。为了建立一个真正鲁棒的模型,我们必须教它物理。位置编码不应是像素索引 (i,j,k)(i, j, k)(i,j,k) 的函数,而应是物理坐标 (x,y,z)(x, y, z)(x,y,z)(以毫米为单位)的函数。这些信息通常就存储在医学图像的元数据中(例如,DICOM 头文件)。通过创建基于物理单位的编码,我们的模型可以理解一个肿瘤是,比如说, 101010 毫米宽,无论它在某个扫描仪上由 20 个像素表示,还是在另一个扫描仪上由 100 个像素表示。这种有原则的方法对于开发可以在不同医院和机器之间迁移的可靠医学人工智能至关重要。

聆听别样节拍:时间与空间中的不规则节奏

世界并非总是在一个整洁、规则的网格上被采样。许多科学数据集是混乱的、不规则的,并在其复杂性中展现出美感。考虑高光谱成像,这是一种用于遥感分析地球表面的技术。对于每个像素,我们得到一个光谱——在数百个不同波长下反射光的测量值。这是一个一维序列,但“位置”是波长,它们通常是不规则间隔的,存在由大气吸收造成的间隙。使用简单的基于索引的位置编码在物理上是无意义的。它会将 500 nm500\text{ nm}500 nm 和 510 nm510\text{ nm}510 nm 之间的光谱距离与 800 nm800\text{ nm}800 nm 和 900 nm900\text{ nm}900 nm 之间的距离视为相同。正确的方法是使用波长值 λ\lambdaλ 本身作为位置的基础,例如,通过将 sin⁡(ωλ)\sin(\omega \lambda)sin(ωλ) 和 cos⁡(ωλ)\cos(\omega \lambda)cos(ωλ) 输入模型。

这一原则在通过电子健康记录 (EHR) 建模人类健康方面有着更深刻的应用。患者的病史是一个由事件组成的时间序列——诊断、实验室测试、处方。但这并非普通的时间序列。事件之间的时间间隔可能巨大且不规则,从几秒到几十年不等。此外,多个事件可能在完全相同的时间戳被记录。基于原始时间值的标准位置编码将是脆弱的,难以处理巨大的尺度范围,并且无法区分同时发生的事件。

在这里,位置编码设计的独创性大放异彩。为了处理异构的时间尺度,我们可以使用对数时间扭曲 ln⁡(1+t)\ln(1+t)ln(1+t),它在压缩大时间间隔的同时保留了小时间间隔的分辨率。为了处理同时发生的事件,我们可以引入一个简单的、确定性的“决胜”特征——一个小整数,用于计算单个时间戳内事件的顺序。通过结合这些想法,我们构建了一个能够忠实表示医疗数据中所捕获的人类生命奇特、不规则节奏的位置编码。

从零构建世界:从物理到图形学

到目前为止,我们已经使用位置编码来帮助模型理解现有的数据。但它能帮助我们生成遵守物理定律或创造逼真世界的新数据吗?

考虑物理信息神经网络 (PINN),它被训练来寻找微分方程的解。假设我们想要模拟一个周期性现象,比如由一个已知方程控制的心律。我们从傅里叶分析中得知,任何周期性信号都可以表示为特定谐波频率下的正弦和余弦之和。我们可以将这一强大的先验知识直接构建到我们的模型中。我们可以不使用通用的位置编码,而是为模型提供一组正弦和余弦函数基,其频率是心动周期基频的整数倍。这为模型构建解决方案提供了一个完美对齐的“脚手架”,从而显著提高学习效率和准确性。

也许位置编码最令人惊叹的应用在于计算机图形学领域,随着神经辐射场 (NeRFs) 的出现。NeRF 仅从少数几张二维图像中学习场景的连续三维表示。该网络将一个三维坐标 (x,y,z)(x, y, z)(x,y,z) 和一个观察方向作为输入,并输出该点的颜色和密度。让一个简单的神经网络能够捕捉到惊人复杂的细节——金属上的光泽、网球上的绒毛——的神奇成分就是位置编码。

NeRF 中使用的位置编码是一组具有指数级增长频率的正弦和余弦函数,sin⁡(2kπx),cos⁡(2kπx)\sin(2^k \pi x), \cos(2^k \pi x)sin(2kπx),cos(2kπx)。频率带的数量 LLL 决定了网络可以表示的最大频率。这与经典的奈奎斯特-香农采样定理有着美妙的联系。为了表示场景中的高频细节,你需要一个具有高频带的位置编码。但如果你的场景输入视图过于稀疏,你就没有足够密集地采样场景来解析那些高频。网络 тогда会被混叠 (aliasing) “欺骗”,产生模糊或有伪影的重建。在这种背景下,位置编码是连接世界连续性与我们用来观察它的离散样本之间的桥梁。

普适的标尺

我们跨学科的旅程揭示了一个深刻、统一的主题。位置编码不是一种单一的技术,而是一种哲学。它是为你的数据设计正确的“标尺”的艺术。有时,那把尺子是一个简单的整数计数器。但更多时候,它是一个受数据内在结构启发的坐标系:蛋白质的稳定锚点、医学扫描的物理尺寸、恒星光谱的不规则波长,或物理定律的谐波频率。

通过精心设计我们描述“位置”的方式,我们赋予了模型对世界更深刻、更有原则的理解。我们使它们能够在他人看到混乱的地方看到结构,在动态系统中找到稳定性,并从少数稀疏的观察中创造新世界。这就是位置编码的内在美和统一性——一个简单的想法,为复杂世界中的秩序提供了通用语言。