这篇内容深入剖析了视觉Transformer(ViT)模型如何将图像信息融入语言模型,实现原生多模态处理。它通过详细的技术步骤,展示了从图像切块、数据压缩到矩阵拼接的全过程,为理解AI如何“看图说话”提供了清晰的技术路径。
智能速览
视觉Transformer将图片切分为多个固定尺寸的小方块进行处理。
通过专用的注意力机制,将海量的图像矩阵压缩至固定行数,降低计算量。
线性投影操作将图像特征维度与文本词向量维度对齐,为融合做准备。
将处理后的图像矩阵与文本矩阵纵向拼接,形成一个统一的输入矩阵。
采用二维旋转位置编码,分别对图像的行与列信息进行编码。
图像与文本信息的真正融合发生在拼接后的矩阵进入多头注意力计算之前。
精华内容
构建一个能同时理解图像与文本的原生多模态模型,关键在于如何将两种异构数据优雅地融合。视觉Transformer(ViT)提供了一套行之有效的方案,其核心在于将图像“翻译”成语言模型能够理解的形式。
图像切块与向量化
处理图像的第一步是将其切分成众多固定大小的小方块。例如,一张720x720像素的图片,可以被切分成16x16像素的patch,总计会得到2025个patch。每个patch包含RGB三个通道,其数据维度为16x16x3,即768。将所有patch的数据展平并堆叠,便构成了一个2025x768的初始图像矩阵,相当于将一张图片看作由2025个“图像词”组成的序列。
这种处理方式将二维的图像信息转化为一维的序列结构,为后续应用Transformer架构奠定了基础。每个768维的向量就编码了对应图像块的局部视觉特征。
注意力压缩降维
直接对2025个“图像词”进行处理,计算开销极其庞大。因此,必须进行压缩。ViT采用一种特殊的注意力机制,在模型输入端对图像矩阵进行一次性的压缩。
该机制并非标准的自注意力计算,而是通过训练得到的一组可学习参数,将2025x768的矩阵压缩至512x768。这个512行是固定的,无论输入图片大小如何,最终都会被压缩到这个统一的维度,极大地降低了后续计算对显存和算力的需求,提高了模型处理效率。
维度对齐与矩阵拼接
压缩后的图像矩阵维度为512x768,而文本词向量矩阵的维度通常是NxD(例如8x4096)。为了将两者融合,必须使它们的列数(特征维度)保持一致。
接下来,通过一个线性投影层(一个768x4096的可训练权重矩阵),将512x768的图像矩阵转换为512x4096的矩阵。完成维度对齐后,便可以将512行的图像矩阵与8行的文本矩阵进行纵向拼接,形成一个520x4096的统一输入矩阵。此时,图像和文本信息被简单地“放”在了一起。
二维位置编码注入
由于图像具有二维空间结构,其位置信息比一维文本更复杂。ViT采用RoPE(旋转位置编码)的变体来处理这个问题。它将每个4096维的向量一分为二,前半部分(2048维)根据图像块所在的行位置进行旋转,后半部分则根据列位置进行旋转。
通过这种方式,模型能够同时捕捉到图像块在行方向和列方向上的相对位置关系,从而理解图像的空间布局。文本部分则沿用一维文本的位置编码方式。
信息融合与后续计算
经过上述步骤,图像和文本信息已经被整合到同一个矩阵中。真正的信息融合发生在后续的计算中。当这个520x4096的矩阵进入Transformer的自注意力层时,模型会计算所有520个token之间的相互关系,包括图像与图像、文本与文本,以及至关重要的图像与文本之间的关系。
通过注意力机制,模型可以学习到图像中的某个区域与文本中的某个词语之间的对应关系,从而实现跨模态的理解和推理。后续的残差连接、前馈网络等操作均在这个融合后的特征上进行。