在卷积神经网络中,虽然卷积层得名于卷积(convolution)
运算,但我们通常在卷积层中使用更加直观的互相关运算(cross-correlation)
运算。
卷积运算与互相关运算的联系
卷积运算与互相关运算类似。为了得到卷积运算的输出,只需将核数组左右翻转并上下翻转,再与输出做互相关运算。
互相关运算
许多机器学习的库实现的是互相关函数但是称之为卷积。
- 公式:
S ( i , j ) = ( K ∗ I ) ( i , j ) = ∑ m ∑ n I ( i + m , j + n ) K ( m , n ) . S(i,j)=(K*I)(i,j)=\sum_m \sum_n I(i+m,j+n)K(m, n). S(i,j)=(K∗I)(i,j)=m∑n∑I(i+m,j+n)K(m,n).
在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口的输入子数组与核数组按元素相乘并求和,得到输入数组中相应位置的元素。如下图所示:
图中的输入数组的高和宽分别为
2
2
2,其中的
4
4
4 个元素由二维互相关运算得出:
0
×
0
+
1
×
1
+
3
×
2
+
4
×
3
=
19
1
×
0
+
2
×
1
+
4
×
2
+
5
×
3
=
25
3
×
0
+
4
×
1
+
6
×
2
+
7
×
3
=
37
4
×
0
+
5
×
1
+
7
×
2
+
8
×
3
=
43
0\times0+1\times1+3\times2+4\times3=19\\ 1\times0+2\times1+4\times2+5\times3=25\\ 3\times0+4\times1+6\times2+7\times3=37\\ 4\times0+5\times1+7\times2+8\times3=43
0×0+1×1+3×2+4×3=191×0+2×1+4×2+5×3=253×0+4×1+6×2+7×3=374×0+5×1+7×2+8×3=43
如果用在图中:
卷积
-
公式:
S ( i , j ) = ( I ∗ K ) ( i , j ) = ∑ m ∑ n I ( m , n ) K ( i − m , j − n ) . S(i,j)=(I*K)(i,j)=\sum_m \sum_n I(m,n)K(i-m, j-n). S(i,j)=(I∗K)(i,j)=m∑n∑I(m,n)K(i−m,j−n).卷积是可交换的(commutative)。我们可以等价地写作:
S ( i , j ) = ( K ∗ I ) ( i , j ) = ∑ m ∑ n I ( i − m , j − n ) K ( m , n ) . S(i,j)=(K*I)(i,j)=\sum_m \sum_n I(i-m,j-n)K(m, n). S(i,j)=(K∗I)(i,j)=m∑n∑I(i−m,j−n)K(m,n).
运算方式如图中所示: