卷积神经网络(convolutional neural networks,CNN)是机器学习利用自然图像中一些已知结构的创造性方法。
计算机视觉的神经网络结构:
首先,多层感知机的输入是二维图像 X \mathbf{X} X,其隐藏表示 H \mathbf{H} H 在数学上是一个矩阵,在代码中表示为二维张量。其中 X \mathbf{X} X 和 H \mathbf{H} H 具有相同的形状。为了方便理解,我们可以认为,无论是输入还是隐藏表示都拥有空间结构。
使用 [ X ] i , j [\mathbf{X}]_{i, j} [X]i,j 和 [ H ] i , j [\mathbf{H}]_{i, j} [H]i,j 分别表示输入图像和隐藏表示中位置( i i i, j j j)处的像素。
为了使每个隐藏神经元都能接收到每个输入像素的信息,我们将参数从权重矩阵(如同我们先前在多层感知机中所做的那样)替换为四阶权重张量 W \mathsf{W} W。假设 U \mathbf{U} U 包含偏置参数,我们可以将全连接层形式化地表示为
[ H ] i , j = [ U ] i , j + ∑ k ∑ l [ W ] i , j , k , l [ X ] k , l = [ U ] i , j + ∑ a ∑ b [ V ] i , j , a , b [ X ] i + a , j + b . \begin{aligned} \left[\mathbf{H}\right]_{i, j} &= [\mathbf{U}]_{i, j} + \sum_k \sum_l[\mathsf{W}]_{i, j, k, l} [\mathbf{X}]_{k, l}\\ &= [\mathbf{U}]_{i, j} + \sum_a \sum_b [\mathsf{V}]_{i, j, a, b} [\mathbf{X}]_{i+a, j+b}.\end{aligned} [H]i,j=[U]i,j+k∑l∑[W]i,j,k,l[X]k,l=[U]i,j+a∑b∑[V]i,j,a,b[X]i+a,j+b.
其中,从 W \mathsf{W} W 到 V \mathsf{V} V 的转换只是形式上的转换,因为在这两个四阶张量的元素之间存在一一对应的关系。我们只需重新索引下标 ( k , l ) (k, l) (k,l),使 k = i + a k = i+a k=i+a、 l = j + b l = j+b l=j+b, 由此可得 [ V ] i , j , a , b = [ W ] i , j , i + a , j + b [\mathsf{V}]_{i, j, a, b} = [\mathsf{W}]_{i, j, i+a, j+b} [V]i,j,a,b=[W]i,j,i+a,j+b。索引 a a a 和 b b b 通过在正偏移和负偏移之间移动覆盖了整个图像。对于隐藏表示中任意给定位置( i i i, j j j)处的像素值 [ H ] i , j [\mathbf{H}]_{i, j} [H]i,j,可以通过在 x x x 中以 ( i , j ) (i, j) (i,j) 为中心对像素进行加权求和得到,加权使用的权重为 [ V ] i , j , a , b [\mathsf{V}]_{i, j, a, b} [V]i,j,a,b 。
简化 H \mathbf{H} H 定义为:
[ H ] i , j = u + ∑ a ∑ b [ V ] a , b [ X ] i + a , j + b . [\mathbf{H}]_{i, j} = u + \sum_a\sum_b [\mathbf{V}]_{a, b} [\mathbf{X}]_{i+a, j+b}. [H]i,j=