我们可以总结一下它实现混合注意力的逻辑:
如果再站高点我们会发现一个更基础的问题模型究竟应该如何表达空间信息在 CNN 路线中这一问题通过卷积与池化的结构归纳被隐式解决。而在之前的 Transformer 路线中则通过位置编码 PE 将位置信息显式注入到特征表示中。现在我们再回到 Transformer 路线的位置编码演化中从原始 Transformer 的正余弦固定编码到 ViT 的可学习位置编码虽然更加灵活但其根本逻辑是相通的PE 描述的是“每个位置是什么”而不是“位置之间是什么关系”。也就是说这是一种绝对位置编码这在 NLP 中存在优化空间当扩展到二维的 CV 任务中更出现了新的局限性在视觉中绝对位置的语义本身就是不稳定的。同一只猫在图像左上角和右下角它的绝对位置编码完全不同但网络应该以相同的逻辑去处理它。卷积的设计只关注相对位置因此规避了这一问题而 Transformer 的解决方案就是相对位置编码Relative Position EncodingRPE。实际上在之前的 Swin 中 RPE 的逻辑就已经被应用这几篇展开 RPE 的相关逻辑串联之前的 Swin作为之后的混合架构的前置内容。1. RPE#18 年的论文 Self-Attention with Relative Position Representations 中首次将相对位置编码引入了 Transformer 的自注意力机制它的核心思路是这样的在注意力计算过程中额外引入两组可学习的向量 分别用于修改 key 和 value 的表示。分点展开如下1.1 相对位置参数表#显然 和 不是凭空出现我们为其定义了分别定义了一个相对位置参数表。具体来说假设我们限制最大相对距离为 比如 -10 到 10那么模型会定义两个参数表Key 相对位置表Value 相对位置表不难理解 就是最大相对距离里的各种取值可能 就是表示维度。现在对任意两个 token计算相对距离为超过范围就会截断或边界共享然后查表这就是两组可学习的向量的由来。而它们各自的语义是这样的 控制“注意力权重偏置”。 控制“信息内容偏移”。下面就展开结构看看如何实现这两组参数的语义。1.2 加入到注意力打分中的 #在标准注意力里打分函数是加法型 RPE 的第一步是把 key 改写成代入后得到展开后的结构是这样的显然原本的注意力分数只反应“语义相似度”而现在又多了一项“距离相关性”。1.3 加入聚合计算中的 #作用在权重计算阶段而 作用在信息聚合阶段。已知得到注意力权重后聚合信息的标准输出为现在RPE 将 value 改写为于是输出变成了我们知道 value 本身的语义是 token 携带的真实信息 在这里与其加和就是在注入学习得到的相对位置信息。总结来说最初的RPE 的核心逻辑是这样的建模相对距离在 K/V 表示空间中注入“相对位置向量偏置”让注意力从“内容函数”变成“内容 位置函数”。2. RPE 的局限#在最初的 RPE 逻辑中所有位置信息只能以“线性加法”的方式影响注意力无法形成更复杂的非线性交互。而且其依赖固定长度的相对位置表 当序列长度超出训练范围时只能截断或共享边界 embedding导致外推能力较弱。于是在 RPE 提出后就出现了分裂式的发展趋势其中有简要的结构增强有从一维到二维的推广还有重构式的新型设计涉及方向较广我们以时间线顺序在后几篇展开。