在卷积神经网络中,虽然卷积层得名于卷积(convolution)运算,但我们通常在卷积层中使用更加直观的互相关运算(cross-correlation)运算。
卷积运算与互相关运算类似。为了得到卷积运算的输出,只需将核数组左右翻转并上下翻转,再与输出做互相关运算。

许多机器学习的库实现的是互相关函数但是称之为卷积。
在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口的输入子数组与核数组按元素相乘并求和,得到输入数组中相应位置的元素。如下图所示:

图中的输入数组的高和宽分别为
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).
运算方式如图中所示:
