©PaperWeekly 原创 · 作者 | 苏剑林
单位 | 科学空间
研究方向 | NLP、神经网络
在前面的文章中,我们曾表达过这样的观点:多模态 LLM 相比纯文本 LLM 的主要差异在于,前者甚至还没有形成一个公认为标准的方法论。这里的方法论,不仅包括之前讨论的生成和训练策略,还包括一些基础架构的设计,比如本文要谈的“多模态位置编码”。
对于这个主题,我们之前在《Transformer升级之路:多模态位置编码的简单思考》就已经讨论过一遍,并且提出了一个方案(RoPE-Tie)。然而,当时笔者对这个问题的思考仅处于起步阶段,存在细节考虑不周全、认识不够到位等问题,所以站在现在的角度回看,当时所提的方案与完美答案还有明显的距离。
因此,本文我们将自上而下地再次梳理这个问题,并且给出一个自认为更加理想的结果。
多模位置
多模型模型居然连位置编码都没有形成共识,这一点可能会让很多读者意外,但事实上确实如此。对于文本 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 助于提升模型效果尤其是变分辨率输入的效果。
向后兼容
所以,我们希望设计一种多模态位置编码,它既可以多模态混合使用,在单模态下又能退化为对应的 RoPE-1D/2D/3D,以充分解锁每个模态的能力。
刚才我们说,多模态位置编码的主要困难是不同大小的位置向量无法作差,既要保留完整的位置信息又要允许作差,那么我们就只能统一升维到最高维度。下面我们以图文混合模态为例,由于图像是 2D 的,所以我们将文本的位置编码也提升到二维,然后统一用 RoPE-2D。怎么升维都可以吗?并不是,我们希望它具有向后的兼容性,即当输入是纯文本时,它跟 RoPE-1D 完全等价。
为此&#