
2.2 卷积神经网络
CNN或ConvNet与常规的神经网络非常相似。它们仍然由神经元组成,权重可以从数据中学习而来,每个神经元接收一些输入并执行点积计算。最后一个全连接层上仍然有一个损失函数。它们仍然可以用非线性函数。我们从上一章学到的所有技巧和技术对CNN仍然有效。正如第1章中所述,常规神经网络接收输入数据作为一个单一向量并传递到一系列隐含层。每个隐含层都包含一组神经元,其中每个神经元都与前一层所有其他神经元相连。在一个单层中,每个神经元都是完全独立的,它们不共享任何连接。最后一个全连接层也叫输出层,在图像分类问题中包含分类得分。一般来说,在一个简单的ConvNet中有三个主要的层。分别是卷积层、池化层和全连接层。图2-2是一个简单的神经网络。
所以,有什么变化?由于CNN主要以图像作为输入,我们可以将一些属性编码到网络中,从而减少参数数量。

图2-2 一个常规的三层神经网络
在真实图像数据的情况下,CNN比多层感知器(MLP)表现得更好,主要有两个原因:
·在第1章中,我们看到,为了向MLP提供图像,我们将输入矩阵转换为一个没有空间结构的数字向量。MLP不知道这些数字是空间排列的。CNN的建立正是出于这个原因,即为了阐明多维数据中的这种模式。与MLP不同的是,CNN理解这样一个事实:距离较近的像素之间比距离较远的像素之间的相关性更大。
CNN=输入层+隐含层+全连接层
·CNN与MLP的不同之处还在于模型中的隐含层类型。一个ConvNet按三个维度排列神经元:宽度、高度和深度。每一层都通过激活函数将三维输入量转换为三维输出量。例如,如图2-3所示,输入层存有图像。因此其宽度和高度为图像尺寸,深度为3,因为有红、绿、蓝三个通道。

图2-3 一个简单的ConvNet网络
ConvNet是一种深度神经网络,它在空间上共享它们的参数。