【论文】Fukui, Akira, Dong Huk Park, Daylen Yang, Anna Rohrbach, Trevor Darrell, and Marcus Rohrbach. Multimodal compact bilinear pooling for visual question answering and visual grounding. (pdf)
对于像视觉问答、视觉定位这样的多模态任务,需要融合不同类型模型的向量得到一个 joint representation
传统的向量融合方式是:点积、点加和全连接,或者加入注意力机制。本文就属于改变特征融合方式的一种,的作者认为这些方法不如向量的外积,但是向量的外积会引起维度的急剧增加,于是作者提出了 MCB(Multimodal Compact Bilinear pooling)
如下如所示,MCB 大致的工作流程为
- 随机地将图片和文本特征映射到更高维空间里
- 然后,在快速傅里叶变化(Fast Fourier Transform,FFT)空间中使用元素乘积有效地卷积两个向量
对于开放式问题回答,作者在 VQA 框架中使用了两次 MCB,一次预测空间注意,第二次预测回答
对于一个问答多个答案的情况,作者引入三次 MCB,将编码后的答案和图像空间联系在一起
Multimodal compact bilinear pooling for visual and textual embedding
对于 VQA 或者视觉定位问题,我们需要基于给定的图片 x \mathbf x x 和问题 q \mathbf q q 来预测最有可能的回答或者位置 a ^ \hat a a^,于是问题可以描述为 a ^ = a r g m a x a ∈ A p ( a ∣ x , q ; θ ) \hat a=\underset{a\in A}{argmax}\ p(a|\mathbf x,\mathbf q;\theta) a^=a∈Aargmax p(a∣x,q;θ) 其中, A A A 表示回答集合或者位置集合
对于图像特征 x = Ξ ( x ) x=\Xi (\mathbf x) x=Ξ(x) 和问题语义特征 q = Ω ( q ) q = \Omega(\mathbf q) q=Ω(q),我们希望通过 pooling 得到一个不错的融合特征。我们将多模态 pooling 记为 Φ ( x , q ) \Phi(x, q) Φ(x,q),它应该能很好地对 x x x 和 q q q 关系进行编码,同时它还应该很好训练,很容易学得一个分类器
Multimodal compact bilinear pooling
Bilinear model 计算两个向量的外积,然后学习一个线性变换 W W W,即 z = W [ x ⊗ q ] z=W[x\otimes q] z=W[x⊗q] ⊗ \otimes ⊗ 表示外积 x q T xq^T xqT, [ ⋅ ] [\cdot] [⋅] 表示将矩阵线性化为一个向量
双线性池化允许两个向量的所有元素以乘法方式相互作用。但是,如前面所述,外积存在维度爆炸的问题,假如参与运算的两个向量的维度为 2048 2048 2048, z ∈ R 3000 z\in\mathbb R^{3000} z∈R3000,那么我们将会有 2048 × 2048 × 3000 2048\times2048\times3000 2048×2048×3000 个参数,将近 12.5 billion
因此,需要一种方式将外积映射到更低的维度,并且避免直接计算外积。于是,引入了 Count Sketch Projection Function Ψ : v ∈ R n → y ∈ R d \Psi:v\in\mathbb R^n\rightarrow y\in \mathbb R^d Ψ:v∈Rn→y∈Rd
定义两个向量,(1) s ∈ { − 1 , 1 } n s\in\left\{-1, 1\right\}^n s∈{−1,1}n,每个 index 下取 1 1 1 或 − 1 -1 −1; (2) h ∈ { 1 , ⋯ , d } n h\in\left\{1,\cdots, d\right\}^n h∈{1,⋯,d}n,将输入 v v v 的 i i i 映射到输出 y y y 上的 j j j
s , h s,h s,h 用标准正态分布进行初始化,并在后面的 count sketch invocations 中保持不变。 y y y 被初始化为零向量。对每一个元素 v [ i ] v[i] v[i] 通过 h h h映射到 j = h [ i ] j=h[i] j=h[i], s [ i ] ⋅ v [ i ] s[i]\cdot v[i] s[i]⋅v[i] 加到 y [ j ] y[j] y[j] 上
这样,我们就可以将外积压缩到一个更低维的空间中,从而减小
W
W
W 的参数大小
另外,为了避免直接计算外积,可以将两个向量外积的 count sketch 表示为对两个 count sketch 的卷积操作 Ψ ( x ⊗ q , h , s ) = Ψ ( x , h , s ) ∗ Ψ ( q , h , s ) \Psi(x\otimes q,h,s)=\Psi(x,h,s)\ast\Psi(q, h,s) Ψ(x⊗q,h,s)=Ψ(x,h,s)∗Ψ(q,h,s) ∗ \ast ∗ 表示卷积操作,卷积理论指出,时间域上的卷积等同于其他处理时的元素积
x ′ ∗ q ′ x'\ast q' x′∗q′ 可以写为 F F T − 1 ( F F T ( x ′ ) ⊙ F F T ( q ′ ) ) FFT^{-1}(FFT(x')\odot FFT(q')) FFT−1(FFT(x′)⊙FFT(q′)), ⊙ \odot ⊙ 表示元素积,为什么可以这么做参考 Tensor Sketch Algorithm
下面给出了 MCB 工作的示意图和算法流程,算法中我们将
v
1
,
v
2
v_1,v_2
v1,v2 代为
x
,
q
x, q
x,q
Architectures for VQA
使用 ResNet-152 提取图像特征,输入图像大小为 448 × 448 448\times448 448×448,从 pool5 提取特征,然后对这个向量( 2048 2048 2048 维)进行 L2 正则化
输入问题首先标注维单词,然后对单词进行 one-hot 编码,然后再经过一个 learned embedding layer,embedding 之后接 tanh 激活。再然后经过一个两层的 LSTM(每层有 1024 个单元),每层 LSTM 的输出连接在一起形成一个 2048 维的向量
图片特征向量和问题语义特征一起传入 MCB,MCB 后经过 element-wise signed square-root 和 L2 正则化。这之后,经过一个全连接网络层根据 16000 维的多模态特征预测出 3000 个回答
注意力机制
作者在 MCB pooling 中加入了 soft attention:对于图像特征中的每一个空间网格位置,使用 MCB pooling 将视觉特征的切片和语义特征进行融合。如 Figure 3 所示,在池化之后使用了两层卷积神经网络预测每个网格位置的注意力权重,接着再使用 softmax 进行归一化产生 soft attention map,然后根据权重加和视觉特征和 attention map 产生一个注意力图像特征。作者还尝试生成多个 attention map,实现一个直观上的多次回头观察,这些 attention map 的结合在经过第二个 MCB(Figure 3 中下面的分支的 MCB) 与语义特征融合之前实现
使用 MCB 的预测注意力特征图使模型能够更有效地学习如何通过图像特征和语义特征关注到显著位置
Answer Encoding
对于不固定回答的 VQA(multiple choices),作者引入了一个额外的 answers embedding
如 Figure 4 所示,对于不定长的回答选项,每一个都使用 word embedding 和 LSTM 层(LSTM 层的权重在候选答案*享)进行编码。然后,使用带注意力机制的 MCB 将编码后的回答选项和原来分支的多模态特征进行融合。最终的 embedding 结果变化为一个分类向量,向量的维度等于回答的个数
Architecture for visual grounding
在视觉定位中,模型的输入是一个问题和带有多个 bounding box 的图片,grounding 的目标是输出符合问题的 bounding box
作者提出的定位方法基于完全监督的 GroundR,做了如下修改,
- 将 GroundR 的融合部分替换为 MCB
- 引入视觉特征的线性嵌入
- 对两种输入模态使用 L2 正则化替代 batch norm