“闭门造车”之多模态思路浅谈:位置编码

9d311492e493e2055936e4cb8e2adc74.gif

©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 科学空间

研究方向 | NLP、神经网络

在前面的文章中,我们曾表达过这样的观点:多模态 LLM 相比纯文本 LLM 的主要差异在于,前者甚至还没有形成一个公认为标准的方法论。这里的方法论,不仅包括之前讨论的生成和训练策略,还包括一些基础架构的设计,比如本文要谈的“多模态位置编码”。

对于这个主题,我们之前在《Transformer升级之路:多模态位置编码的简单思考》就已经讨论过一遍,并且提出了一个方案(RoPE-Tie)。然而,当时笔者对这个问题的思考仅处于起步阶段,存在细节考虑不周全、认识不够到位等问题,所以站在现在的角度回看,当时所提的方案与完美答案还有明显的距离。

因此,本文我们将自上而下地再次梳理这个问题,并且给出一个自认为更加理想的结果。

fde90eaeea66a185f474da3d2300cf73.png

多模位置

多模型模型居然连位置编码都没有形成共识,这一点可能会让很多读者意外,但事实上确实如此。对于文本 LLM,目前主流的位置编码是 RoPE(RoPE 就不展开介绍了,假设读者已经熟知),更准确来说是 RoPE-1D,因为原始设计只适用于 1D 序列。后来我们推导了 RoPE-2D,这可以用于图像等 2D 序列,按照 RoPE-2D 的思路我们可以平行地推广到 RoPE-3D,用于视频等 3D 序列。

然而,以上说的只是单一模态输入,当多种模态混合输入时,困难就出现了:文本是 1D 序列,所以它的位置只是一个标量 n;图像是 2D 的(“宽”和“高”),所以表达它的位置需要一个二维向量 (x,y);视频则在图像的基础上新增了一个时间维度(或者说“帧”),所以它的位置是一个三维向量 (x,y,z)。当我们希望用同一个模型去处理三种模态的数据时,就要想办法糅合这三种不同形式的位置信息。

大家都知道,RoPE 在实现上是绝对位置编码,但结合基于内积的 Attention 来用时,内积之后位置会自动作差,从而实现了相对位置编码的效果。可同一大小的向量可以作差,不同大小的向量怎么作差呢?这就是多模态位置编码的困难所在。

不少工作选择“逃避”这个困难,直接 Flatten 所有模态然后使用 RoPE-1D,这不失为一种解决办法,但终究显得不够优雅。此外,强行 Flatten 也可能会降低模型性能的天花板,因为《VisionLLaMA: A Unified LLaMA Backbone for Vision Tasks》[1] 等工作已经表明,RoPE-2D 助于提升模型效果尤其是变分辨率输入的效果。

24c3ab0c220c3cefb7777c7b493cd056.png

向后兼容

所以,我们希望设计一种多模态位置编码,它既可以多模态混合使用,在单模态下又能退化为对应的 RoPE-1D/2D/3D,以充分解锁每个模态的能力。

刚才我们说,多模态位置编码的主要困难是不同大小的位置向量无法作差,既要保留完整的位置信息又要允许作差,那么我们就只能统一升维到最高维度。下面我们以图文混合模态为例,由于图像是 2D 的,所以我们将文本的位置编码也提升到二维,然后统一用 RoPE-2D。怎么升维都可以吗?并不是,我们希望它具有向后的兼容性,即当输入是纯文本时,它跟 RoPE-1D 完全等价。

为此,我们对比一下 RoPE-1D 与 RoPE-2D:

38de48735e46af85b312d2ac701a4aaf.png

发现什么共同点了吗?如果单看这个形式,可以发现其实有 ,即位置为 n 的 RoPE-1D 跟位置为 (n,n) 的 RoPE-2D 其实是等价的,所以要想在图文混合中统一用 RoPE-2D,并且对于纯文本能退化为 RoPE-1D,那么就要将文本部分的位置坐标取为 (n,n) 的形式。

当然,实际上它们还是有少许不同的,我们知道对于 RoPE-1D 有 ,也就是 跟 是不同的,但对于 RoPE-2D 来说,为了确保 x,y 的对称性,通常的选择是确保 ,这就产生了矛盾之处。

对此,我们有两种选择:一是放弃 RoPE-2D 中 x,y 的对称性,依旧取 ;二是取 ,此时纯文本部分的位置编码就跟已有 RoPE-1D略有 不同。对于 来说, 与 差别不大,所以两种方案其实都差不多,选哪一种取决于个人的审美,笔者倾向于选择第一种。

0cef053ed054030e74200dce59ef7c20.png

等价对称

通过上述分析,我们确定了图文混合模态统一用 RoPE-2D 的方案,并且由向后兼容性确定了位置 n 的文本 Token 的二维位置应该取 (n,n),从而完成了文本部分的位置编码设计。接下来,我们需要构思的是图像部分的位置编码。

如果输入只有一张 个 Patch 的图像,那么它的位置坐标自然就是各个 Patch本 身的坐标,即

ee4def9cb551f3d815674cd513c7f5c3.png

我们这展示的是绝对位置,但实际的效果是相对位置,相对位置的特点是跟位置偏置无关,所以我们可以给每个坐标都加上 而不改变效果;其次,我们可以给每个坐标都乘以 ,这样允许我们按需调整相邻位置的间隔。将这两点结合起来,我们可以得到图像的一般化二维位置为

72a3b5d35d054aa2b1ffe6619dad1c0b.png

现在我们考虑左右两段文本夹着中间一张图像时, 该怎么选取。

首先,我们假设文本的 Token 和 Patch 具有一定的等价性:经过合理的 Patchify 后每个 Patch 的地位跟 Token 等价(An Image is Worth xxx Tokens),这意味着对于两段文本来说,它们相当于夹着一个 wh 个 Token 的句子,所以如果左段文本最后一个 Token 的位置是 (L,L),那么右段文本第一个 Token 的位置就是 (L+wh+1, L + wh + 1)。

接着,我们还需要引入对称性——具体来说,图像的第一个 Patch 的位置是 ,最后一个 Patch 的位置是 ,我们认为【图像第一个 Patch】与【左段文本最后一个 Token】的位置差,等于【右段文本第一个 Token】与【图像最后一个 Patch】的位置差,即

e2167d4f3d0591da7bedd6c57d382784.png

这里边有四个未知数 ,但只有两个等式,所以有无穷多组解。我们可以简单地取 ,继而解得

6430688ddb3c42122134f395311d1fca.png

这个方案我们暂时可以称之为 RoPE-Tie-v2 或者 RoPE-TV(RoPE for Text and Vision)吧。

5267d4a6d45333bc084c0dd37f83b7a4.png

优劣分析

根据这个结果,当句子后面接一张 的图像时,只需要按照上述计算计算出 ,然后加到常规的二维 RoPE(1)中去,就得到了图像部分的位置坐标了,如下图所示

11555a0de9bb88f983ce3a176ed9e8d7.png

▲ 新版RoPE-TV(RoPE-Tie-v2)示意图

作为对比,我们在《Transformer升级之路:多模态位置编码的简单思考》提出的旧版 RoPE-Tie,其位置坐标如下图所示:

d32ee8eff1be7fd68716739ea75d0b60.png

▲ 旧版RoPE-Tie示意图

事实上,RoPE-Tie 的出发点同样包括兼容性对称性,但没有严格遵循等价性,并且 RoPE-Tie 默认了 ,以及没有限定 个 Patch 等价于 wh 个 Token,最终推出了一组整数解(如果不要求整数解也可以满足等价性):

354ad68d49e6aa598681dfb6b16c07f3.png

从如今的视角来看,RoPE-Tie 的默认设置其实并不是很理想,所以本文重新选择了 ,并确保等价性,然后反推出 。

那新方案有什么好处呢?首先,RoPE-Tie 中图像内的相对位置跟它的大小有关,而新方案中 Patch 的间隔是固定的 (0,1) 和 (1,0),这可以让 Patch 的尺度更为一致。

举个例子,一张 128*128 的图像以及该图的上半部份(即 128*64 的子图),由于两者高度不一样,所以 RoPE-Tie 后它们横向的位置间隔并不一样,这意味着同样位置、同样含义的两个 Patch 在加了 RoPE-Tie 后的距离(尺度)变得不一致了,这看起来并不合理,而新方案没有这个问题。

其次,RoPE-Tie 中图像与左右文本的间隔,跟图像内部 Patch 的间隔一样都是 ,而新方案中文本到图像、图像到文本之间会出现一个比较大的间隔 ,然后文本内部、图像内部则都是固定的均匀间隔。

直觉上,这种不同模态之间比较大的位置跳跃,可以更好地实现“模态隔离”,让单个模型既能更好地处理单模态内容,又保留了多模态之间的交互,这跟我们通常在左右加 [IMG] 和 [/IMG] 两个 Special Token 来标记出图像具有异曲同工之处。

985269327cd2cc6c78a9080ec85c6f5e.png

三维困境

在 RoPE-Tie 的文章中,并没有讨论到“文本-视频”混合模态的位置编码,这一节我们来补充讨论完整。

直观来看,对于视频输入我们可以有两种处理方式。第一种方式就是简单地将视频当成多张图片处理(必要时加个 [VIDEO]、[/VIDEO] 的标记),这样我们就不需要针对视频提出新的位置编码了,沿用“文本-图像”的混合位置编码结果就行,但这样丧失了同一视频不同帧之间的对齐关系,可能不是太完美,例如“第 1 帧的第 1 个 Patch”跟“第 2 帧的第 1 个 Patch”和“第 1 帧的第 2 个 Patch”,应该有差不多的邻近关系,但展平当多张图片处理就体现不出这一点。

第二种方式则是将“文本-图像”的结果平行地推广到“文本-视频”中。对于一个 的视频(画面为 ,一共 t 帧),它的位置坐标是三维的 (x,y,z),根据相同的兼容性、等价性和对称性,我们可以将方程(3)推广成

e1cb8dd40c30583550c120047c992f57.png

如果还是设 ,我们得到

732dd5060c88c7ed15f98e11333e8cd9.png

这样做完整了保留了视频位置的三维性,看起来会更优雅一些,但笔者认为它仍有一些美中不足之处。

这个美中不足源于笔者对视频的时间维度的不同理解:视频的三维,实际上是“2 个空间维度+1 个时间维度”,跟真实世界的三维立体的“3 个空间维度”不一样。按照笔者的观点,视频的时间维度跟两个空间维度是不平权的,时间维度更像是文本从左往右的书写方向,所以笔者想象中的完美多模态 LLM,应该能像文本 LLM 续写文本一样,理论上能够以自回归的方式无限地续作视频,直到出现 [EOS] 标记。

刚才我们提了两种“文本-视频”混合编码方案,第一种直接当作多张图片处理,这种方案是可以无限自回归生成视频的,但第二种看上去更完美的方案反而不行,因为它的 是依赖于 t 的,这意味着我们需要提前知道生成多少帧的视频,换句话说,第二种方案并不是不能用自回归的方式生成视频,而是需要提前确定帧数,这在笔者看来是不符合时间维度的理想特性的(时间,应该可以无约束地往前推进)。

可能有读者疑问:为什么图像就不介意 中依赖于 w,h 呢?也就是说为什么图像生成不介意事先知道图像大小呢?这是因为图像有两个方向,就算我们用自回归的方式生成图像,也必须至少知道一个方向的大小,才能告诉模型及时“换行”,以生成一张完整的二维图像。而图像的两个空间维度是平权的,单知其一倒不如全部知道,所以我们能够接受事先确定图像大小。

此外,我们还可以用《“闭门造车”之多模态思路浅谈:无损输入》介绍的“AR+Diffusion”做“文本-图像”模型,此时图像生成部分是 Diffusion,就必须提前知道目标图像大小了。

e46310d40c0d286fc359b6ddd028a5c4.png

相关工作

前段时间,阿里开源了名为“Qwen2-VL”的多模态模型,介绍中提到自己提出了一种多模态旋转位置编码(M-ROPE),引起了笔者的兴趣。经过阅读源码 [2],发现 M-RoPE 实际上就是沿用了 RoPE-Tie 的兼容性思想,但没有保留对称性等价性

52dda17dcaa0fc648b9b89d1bfac13b5.png

▲ M-RoPE的源码注释

用本文的记号,M-RoPE 实际上就是取了 (对于“文本-视频”混合模态),然后视频右段的文本的第一个 Token 的位置,直接取视频最大的位置坐标加 1。这样如果还是用自回归的方式生成视频,确实也不用提前确定帧数,但牺牲了对称性等价性

对称性等价性有多重要呢?笔者不清楚答案,这需要充分实验来验证。但如果仅仅是头脑风暴的话,笔者猜测可能会影响极端情形的表现,比如对于 M-RoPE 来说,如果是画面很小但时间很长的视频,它的空间维度的位置坐标相对于左段文本来说是连续的,但相对于右段文本来说则是突变了,直觉上会使得文本和视觉的交互更不友好。

再比如一个 w=h=t=n 的视频,直觉上它等效于 个 Token,但如果按照 M-RoPE 的规则,如果两段文本夹着这样一个视频,只是等价于夹着一个 n 个 Token 的文本,换言之在大小为 n 的相对距离内放下了 个 Token,会不会导致信息密度过大而增加模型理解难度了?

当然,对于 NoPE 都可能 Work 的 Decoder-only LLM 来说,这些问题也可能是笔者多虑了。

81edacc6102b4a05194066794699f8f3.png

文章小结

本文分享了笔者关于多模态位置编码的后续思考,提出了构建多模态位置编码的三个原则:兼容性、等价性和对称性,改进了之前提出过的 RoPE-Tie,最后讨论了“文本-视频”混合模态的位置编码设计和困难,以及 Qwen2-VL 的 M-RoPE 与 RoPE-Tie 的联系等。

outside_default.png

参考文献

outside_default.png

[1] https://papers.cool/arxiv/2403.00522 

[2] https://github.com/huggingface/transformers/blob/1759bb9126e59405f58693a17ef9f58040c2008b/src/transformers/models/qwen2_vl/modeling_qwen2_vl.py#L1357

更多阅读

f529f0421c0e4fd837e23116d50f63ef.png

4992acfe25732348b4cc3b0c25ee6962.png

7d5890883edaa5970d955e8f0cb02a11.png

16d612a20cc505e98565aa5e983a0be3.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

7a7f62ff847de2529ff5bca781fd6fda.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

befa02bd42a601cfb4a8f886734bfd59.jpeg

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值