Transformer模型中的跨模态注意力机制(Cross-Modal Attention)原理与计算细节
字数 2591 2025-12-11 04:42:58
Transformer模型中的跨模态注意力机制(Cross-Modal Attention)原理与计算细节
题目描述
在深度学习多模态任务中(如图文检索、视觉问答、音视频理解),Transformer模型常被扩展用于处理来自不同模态(如视觉、文本、音频)的输入数据。跨模态注意力(Cross-Modal Attention)是此类模型的核心组件,它能实现一个模态的查询(Query)与另一个模态的键值(Key-Value)之间的交互。本题要求深入解释跨模态注意力的工作原理、计算步骤、与自注意力的区别,以及在实际模型(如ViLBERT、LXMERT)中的应用方式。
解题过程
1. 基本概念与背景
多模态数据通常具有异构性(例如图像像素和文本词向量),直接融合这些特征十分困难。跨模态注意力借鉴了Transformer中的注意力机制,但关键区别在于:
- 自注意力(Self-Attention):计算单个模态内部元素之间的关系(如文本词与词之间)。
- 跨模态注意力(Cross-Modal Attention):计算两个不同模态元素之间的关系(如图像区域与文本单词之间)。
核心目标:使一个模态的信息能通过注意力权重“聚焦”到另一模态的相关部分,实现跨模态语义对齐。
2. 跨模态注意力的数学形式
假设有两个模态的特征:
- 视觉特征序列 \(V \in \mathbb{R}^{n_v \times d}\)(如 \(n_v\) 个图像区域的特征向量)。
- 文本特征序列 \(T \in \mathbb{R}^{n_t \times d}\)(如 \(n_t\) 个单词的词向量)。
其中 \(d\) 为特征维度。
以文本查询视觉为例(即使用文本作为Query,视觉作为Key和Value):
-
生成Query、Key、Value矩阵:
- 文本侧生成Query:\(Q_T = T W_Q\)(\(W_Q \in \mathbb{R}^{d \times d_k}\))。
- 视觉侧生成Key和Value:
\(K_V = V W_K\),\(V_V = V W_V\)(\(W_K, W_V \in \mathbb{R}^{d \times d_k}\))。 - 这里 \(d_k\) 通常等于 \(d\) 或缩放后的维度。
-
计算注意力分数:
- 对每个文本查询向量 \(q_t \in Q_T\),计算它与所有视觉键向量 \(k_v \in K_V\) 的点积:
\[ \text{Score}(q_t, k_v) = \frac{q_t \cdot k_v^T}{\sqrt{d_k}} \]
- 得到注意力矩阵 \(A \in \mathbb{R}^{n_t \times n_v}\),其中 \(A_{ij}\) 表示第 \(i\) 个文本词与第 \(j\) 个图像区域的相关性。
- 加权聚合视觉信息:
- 对注意力矩阵按行做Softmax归一化:\(\tilde{A} = \text{Softmax}(A)\)(沿视觉序列维度)。
- 使用归一化权重对视觉值向量 \(V_V\) 加权求和,得到文本查询对应的跨模态表示:
\[ \text{Output}_T = \tilde{A} \cdot V_V \]
- 输出维度为 \(\mathbb{R}^{n_t \times d}\),每个文本词获得一个融合了相关视觉信息的增强向量。
同理可定义视觉查询文本(交换Query和Key/Value的来源)。
3. 常见架构模式
在实际模型中,跨模态注意力通常以两种方式组织:
a) 双流架构(Two-Stream)
- 代表模型:ViLBERT、LXMERT。
- 设计:
- 每个模态先通过若干层自注意力层独立编码(学习模态内部结构)。
- 随后在特定层插入跨模态注意力层,让两个模态的特征交互。
- 交互可以是双向的(如图像→文本和文本→图像交替进行)或单向的。
b) 单流架构(Single-Stream)
- 代表模型:VisualBERT、Unicoder。
- 设计:
- 将视觉和文本特征拼接成一个序列输入Transformer。
- 在自注意力中直接计算所有元素间的关系(包括跨模态对)。
- 本质上自注意力同时覆盖了模态内和模态间交互,但计算成本较高。
4. 训练与优化细节
- 预训练任务:为了学习跨模态对齐,常用任务包括:
- 掩码语言建模(MLM)+ 图像输入:根据上下文文本和图像预测被掩码的词。
- 图像-文本匹配(ITM):判断图像和文本是否匹配(二分类)。
- 区域-词对齐(如Masked Region Modeling):预测图像区域对应的文本描述。
- 梯度流动:在跨注意力层中,梯度会同时反向传播到两个模态的编码器,迫使它们学习共享的语义空间。
5. 实例说明(以LXMERT为例)
-
输入编码:
- 文本:使用WordPiece分词,并添加[CLS]和[SEP]标记,通过词嵌入层得到 \(T\)。
- 图像:用Faster R-CNN提取物体区域特征,经线性投影得到 \(V\)。
-
编码器结构:
- 文本编码器:9层自注意力 + 跨注意力层(文本作Query,视觉作Key/Value)。
- 视觉编码器:5层自注意力 + 跨注意力层(视觉作Query,文本作Key/Value)。
- 跨模态编码器:5层双向跨注意力(交替进行文本→视觉和视觉→文本的交互)。
-
输出应用:
- [CLS]位置的最终向量用于图像-文本匹配任务。
- 文本和视觉的序列输出用于视觉问答(VQA)或图文检索。
6. 总结与要点
- 核心作用:跨模态注意力实现了异构数据间的软对齐,无需显式标注对应关系。
- 与自注意力的区别:Query和Key/Value来源不同模态,计算的是跨模态相关性。
- 关键设计:注意力方向(单向/双向)、层数安排、预训练任务的选择。
- 应用场景:多模态检索、生成、推理等任务(如图文生成、视觉推理、视频描述)。
通过以上步骤,跨模态注意力将多模态信息融合问题转化为可学习的注意力权重分配,成为现代多模态Transformer模型的基石。