深度学习中,假设有两个层次的特征 x ∈ R n , x ∈ R m . x \in \mathbb{R}^n, x \in \mathbb{R}^m. x∈Rn,x∈Rm. 如何得到融合这两者的新特征 z ∈ R k . z \in \mathbb{R}^k. z∈Rk.
常见的方法如下:
concat
: z = [ x , y ] ∈ R m + n , k = m + n . z=[x,y] \in \mathbb{R}^{m+n}, k=m+n. z=[x,y]∈Rm+n,k=m+n.addition
: z = x + y ∈ R k z=x+y \in \mathbb{R}^{k} z=x+y∈Rk,需要把两个特征映射到同一维度 k . k. k.biLinear
:
z = x T W y , W ∈ R k × m × n . z i = x T W i y , W i ∈ R m × n , i = 1 : k . z=x^TWy, \quad W \in \mathbb{R}^{k \times m \times n}. \\ z_i = x^TW_iy, \quad W_i \in \mathbb{R}^{m \times n},i=1:k. z=xTWy,W∈Rk×m×n.zi=xTWiy,Wi∈Rm×n,i=1:k.sum-pooling
:
设未池化的特征图为 X ∈ R n × h × w , y ∈ R m X \in \mathbb{R}^{n\times h \times w}, y \in \mathbb{R}^m X∈Rn×h×w,y∈Rm,
z = ∑ i , j w i j ⊙ X i j ∈ R n z = \sum_{i,j} w_{ij} \odot X_{ij} \in \mathbb{R}^n z=i,j∑wij⊙Xij∈Rn
i , j i,j i,j表示特征的每一个位置。其中 w i j w_{ij} wij计算如下
w i j = σ ( F C ( [ X i j , y ] ) ) ∈ R n . w_{ij}=\sigma \big(FC([X_{ij}, y])\big) \in \mathbb{R}^n. wij=σ(FC([Xij,y]))∈Rn.
σ \sigma σ表示sigmoid
函数,FC的作用是维度调整。