小飞侠 - 位置编码
type: channel
link: http://www.kexue.love/index.php/category/位置编码/
items: 旋转位置编码

旋转位置编码
type: item
date: 2024-07-08T03:21:00+00:00
description: 一、位置编码的需求为了理解 RoPE 的重要性，我们首先回顾一下为什么位置编码至关重要。 Transformer 模型根据其固有的设计，不会考虑输入标记的顺序。例如，像“the dog chases the pig ”和“the pig chases the dogs”这样的短语虽然含义不同，但由于它们被视为一组无序的标记，因此被视为无法区分。为了维护序列信息及其含义，需要一个表示来将位置信息集成到模型中。二、绝对位置编码1.定义(理解)在句子的上下文中，假设我们有一个代表一个单词的嵌入。为了对其位置进行编码，需要使用另一个具有相同维度的向量，其中每个向量唯一地代表句子中的一个位置。例如，为句子中的第二个单词指定特定向量。所以每个句子位置都有其独特的向量。然后通过将词嵌入与其相应的位置嵌入求和来形成 Transformer 层的输入。2. 两种方法来生成这些嵌入(1).从数据中学习在这里，位置向量是在训练过程中学习的，就像其他模型参数一样。我们为每个位置（例如从 1 到 512）学习一个唯一的向量。这引入了一个限制——最大序列长度受到限制。如果模型仅学习到位置 512，则它无法表示比该位置更长的序列。(2).正弦函数：此方法涉及使用正弦函数为每个位置构建唯一的嵌入。尽管这种构造的细节很复杂，但它本质上为序列中的每个位置提供了独特的位置嵌入。实证研究表明，从数据中学习和使用正弦函数可以在现实世界模型中提供相当的性能。3.绝对位置编码的局限性有限序列长度：如上所述，如果模型学习到某个点的位置向量，它本质上不能表示超出该限制的位置。位置嵌入的独立性：每个位置嵌入都是独立于其他位置嵌入的。这意味着在模型看来，位置 1 和 2 之间的差异与位置 2 和 500 之间的差异相同。但是其实位置 1 和 2 应该比位置 500 相关性更密切，位置 500 距离明显更远。这种相对定位的缺乏可能会阻碍模型理解语言结构的细微差别的能力。三、相对位置编码1.定义(理解)相对位置位置不是关注标记在句子中的绝对位置，而是关注标记对之间的距离。该方法不会直接向词向量添加位置向量。而是改变了注意力机制以纳入相对位置信息。最经典得案例就是T5（Text-to-Text Transfer Transformer）是一种利用相对位置嵌入的著名模型。 T5 引入了一种处理位置信息的微妙方式：2. 两种方法来生成这些嵌入位置偏移的偏差： T5 使用偏差（浮点数）来表示每个可能的位置偏移。例如，偏差 B1 可能表示任意两个相距一个位置的标记之间的相对距离，无论它们在句子中的绝对位置如何。自注意力层中的集成：该相对位置偏差矩阵被添加到自注意力层中的查询矩阵和关键矩阵的乘积中。这确保了相同相对距离的标记始终由相同的偏差表示，无论它们在序列中的位置如何。可扩展性：该方法的一个显着优点是其可扩展性。它可以扩展到任意长的序列，这比绝对位置嵌入有明显的优势。3.绝对位置编码的局限性尽管它们在理论上很有吸引力，但相对位置编码得问题很严重计算效率低下：必须创建成对的位置编码矩阵，然后执行大量张量操作以获得每个时间步的相对位置编码。特别是对于较长的序列。这主要是由于自注意力层中的额外计算步骤，其中位置矩阵被添加到查询键矩阵中。键值缓存使用的复杂性：由于每个附加令牌都会改变每个其他令牌的嵌入，这使得 Transformer 中键值缓存的有效使用变得复杂。使用 KV 缓存的一项要求是已经生成的单词的位置编码， 在生成新单词时不改变（绝对位置编码提供）因此相对位置编码不适合推理，因为每个标记的嵌入会随着每个新时间步的变化而变化。由于这些工程复杂性，位置编码未得到广泛采用，特别是在较大的语言模型中。四、旋转位置编码 (RoPE)1、定义RoPE 代表了一种编码位置信息的新方法。传统方法中无论是绝对方法还是相对方法，都有其局限性。绝对位置编码为每个位置分配一个唯一的向量，虽然简单但不能很好地扩展并且无法有效捕获相对位置；相对位置编码关注标记之间的距离，增强模型对标记关系的理解，但使模型架构复杂化。RoPE巧妙地结合了两者的优点。允许模型理解标记的绝对位置及其相对距离的方式对位置信息进行编码。这是通过旋转机制实现的，其中序列中的每个位置都由嵌入空间中的旋转表示。旋转矩阵源自我们在高中学到的正弦和余弦的三角性质，使用二维矩阵应该足以获得旋转矩阵的理论，如下所示！2、理解我们看到旋转矩阵保留了原始向量的大小(或长度),如上图中的“r”所示,唯一改变的是与x轴的角度。RoPE 引入了一个新颖的概念。它不是添加位置向量，而是对词向量应用旋转。旋转角度 (θ) 与单词在句子中的位置成正比。第一个位置的向量旋转 θ，第二个位置的向量旋转 2θ，依此类推。这种方法有几个好处：1、向量的稳定性：在句子末尾添加标记不…