1.引言
对于视觉问答任务而言,其中比较重要的部分就是两种模态的特征融合。目前对于特征融合最先进的技术是双线性池化,该技术有很多的变体。我们主要围绕双线性池化这种模态融合的方法展开总结。其中MUTAN方法的代码,我已经放在这个链接里面MUTAN代码。本文仅供大家参考,所有方法均来自于论文,如有侵权,请联系我删除!
2.Bilinear Model
首先我们来解释一下什么是线性模型,然后再引出双线性模型。看看它们的不同之处,方可知道为什么双线性比线性要好。
2.1 线性模型
线性模型是指形如 z = w 1 x + w 2 y z = w_1x + w_2y z=w1x+w2y的形式,其中 w 1 ∈ R c × n , w 2 ∈ R c × m , x ∈ R n , y ∈ R m w_1 \in R^{c \times n} , w_2\in R^{c \times m} , x\in R^n , y\in R^m w1∈Rc×n,w2∈Rc×m,x∈Rn,y∈Rm。可以看到z只考虑了x本身的影响和y本身影响的线性叠加,而没有考虑到x与y之间相互作用的影响。
举个例子:我要判断一个吸烟的人患肺癌的指标,判断依据有两个特征,一个是每年吸烟的量,一个是每年喝酒的量。定义 x x x为吸烟特征, y y y为喝酒特征。利用上面的公式 z = w 1 x + w 2 y z = w_1x + w_2y z=w1x+w2y,可以得到一个人患肺癌的指标。但这里是单独考虑的吸烟和喝酒,并没考虑到吸烟与喝酒的相互作用。
到这里你应该知道,为什么要提出双线性模型,那就是因为我想考虑特征与特征之间的相互作用关系。线性模型的参数量一共为 c × ( n + m ) c \times (n+m) c×(n+m),c为最后分类的个数。
2.2 双线性模型
最开始研究者们考虑的双线性是双线性池化,而双线性模型是一种比较古老的统计模型,后面又有学者证明了:双线性池化等价于双线性模型。因此我们先介绍双线性池化,再介绍双线性模型,最后再看看双线性池化是如何等价于双线性模型的。
2.2.1 双线性池化
我们考虑两个特征的双线性池化, x = ( x 1 , x 2 , . . . , x n ) , y = ( y 1 , y 2 , . . . , y m ) x = (x_1,x_2,...,x_n) \ , \ y = (y_1,y_2,...,y_m) x=(x1,x2,...,xn) , y=(y1,y2,...,ym),其中 x i ∈ R , y i ∈ R x_i \in R \ , \ y_i \in R xi∈R , yi∈R,x和y均为列向量。
我们现在的目的是为了考虑这两个特征的相互作用,换句话说就是让 x i x_i xi分别与 y j y_j yj相乘。我们可以写成下面的公式:
a = x y T ∈ R n × m a = xy^T \ \in R^{n \times m} a=xyT ∈Rn×m (1)
得到的a是一个 n × m n \times m n×m的矩阵,然后我们把这个矩阵展平再做两次归一化,就得到了特征x与特征y的相互作用向量b。
b = N o r m a l ( F l a t t e n ( a ) ) ∈ R n m b = Normal(Flatten(a)) \ \in R^{nm} b=Normal(Flatten(a)) ∈Rnm
其中Flatten是展平操作,Normal是两次归一化操作。然后再对b做一次线性映射,就得到了我们的目标z。
z = W b ∈ R c z = Wb \ \in R^{c} z=Wb ∈Rc (2)
其中 W ∈ R c × n m W \in R^{c\times nm} W∈Rc×nm,此时的参数量为 c × n × m c\times n \times m c×n×m。令 W i ∈ R 1 × n m W_i \in R^{1\times nm} Wi∈R1×nm是W的第i行, z = ( z 1 , . . . , z c ) ∈ R c z = (z_1,...,z_c) \in R^c z=(z1,...,zc)∈Rc,然后 z i z_i zi可以写为:
z i = W i N o r m a l ( F l a t t e n ( x y T ) )