视觉-语言模型 (VLM) 中的跨模态 Transformer 使模型能够处理和关联来自视觉(图像)和文本(语言)数据的信息。这些 Transformer 使用注意力机制来识别不同模态元素之间的联系,例如将图像区域与特定词语或短语关联起来。通过这种方式,它们使 VLM 能够执行需要理解两种输入的任务,例如生成图像字幕、回答有关视觉内容的问题或根据文本查询检索相关图像。核心思想是创建一个共享的表示空间,视觉和文本特征可以在其中动态地相互作用和影响。
一个具体的例子是 CLIP(对比语言-图像预训练)这样的 VLM 如何使用跨模态 Transformer 来对齐图像和文本嵌入。在训练过程中,CLIP 通过视觉编码器(例如,CNN 或 ViT)处理图像,并通过语言编码器(例如,Transformer)处理文本。然后,跨模态 Transformer 层计算图像块和文本 Token 之间的注意力分数,使模型能够学习哪些视觉特征对应于特定的词语。例如,如果文本输入是“一只狗在公园里奔跑”,跨模态注意力有助于模型聚焦于图像中的狗和草地区域。类似地,在像 Flamingo 这样的模型中,跨模态层使得模型在生成过程中可以交织视觉和文本输入,确保字幕中的每个词都基于图像的相关部分。
从实现的角度来看,跨模态 Transformer 通常涉及两个独立的编码器堆栈(每个模态一个),然后是交叉注意力层。例如,在文本到图像检索任务中,图像编码器可能会输出一组表示图像区域的特征向量,而文本编码器则为查询生成嵌入。然后,交叉注意力层使用文本嵌入作为查询,图像特征作为键和值,计算加权和以确定相关性。使用 VLM 的开发者经常面临计算复杂性管理等挑战——因为对高分辨率图像和长文本进行注意力计算可能成本很高——或者确保跨模态的梯度流。PyTorch 或 TensorFlow 等工具提供模块化组件(例如 nn.MultiheadAttention
)来实现交叉注意力,但为了优化规模,可能需要使用 Token 剪枝或使用注意力的线性近似等技术。关键在于,跨模态 Transformer 通过实现两个领域之间灵活、上下文感知的交互,弥合了视觉和语言之间的鸿沟。