第三章 卷积神经网络
一、神经认知机模型
这是一种分层神经网络模型。神经认知机由负责对比度提取的G层,以及负责图形特征提取的S细胞层和抗变形的C细胞层交替排列组成。最上层的C细胞会输出识别结果。借助于S细胞层和C细胞层交替排列的结构,各种输入模型的信息会在经过S细胞层提取特征后,通过C细胞层对特征畸变的容错,并在反复迭代后被传播到上一层。经过这个过程,在底层G提取的局部特征会逐渐变成全局特征。因输入模式扩大、缩小或平移而产生的畸变也很好地被C细胞消除,所以网络对变形具有较好的稳健性。
在神经认知机中,如果没有任何细胞对输入模式做出反应,就采用增加细胞的学习规则。通过引入神经网络中的误差反向传播算法,人们得到了卷积神经网络CNN。LeCun等人提出的卷积神经网络和神经认知机一样,也是基于人类视觉皮层中感受野的结构得到的模型。
卷积神经网络由输入层、卷积层、池化层、全连接层和输出层组成。通过增加卷积层和池化层,还可以得到更深层次的网络,其后的全连接层也可以采用多层结构。
二、卷积层
卷积神经网络中的卷积操作可以看做是输入样本和卷积核的内积运算。卷积操作后得到特征图。卷积层中是使用同一卷积核对每个输入样本进行卷积操作的。在第二层及其以后的卷积层,把前一层的特征图作为输入数据,同样进行卷积操作。与S细胞具有相同的作用:提取特征。
(书中对于卷积过程描述不详,需要自行查询卷积原理。)
为了得到和原始输入样本大小相同的特征图。可以采用对输入样本进行填充(padding)处理后再进行卷及操作的方法。零填充指的就是用0填充输入样本的边界。
卷积核的滑动步长越大,特征图越小。
卷积结果不能直接作为特征图,需通过激活函数计算后,把函数输出结果作为特征图。
一个卷积层中可以有多个不同的卷积核,而每一个卷积核都对应一个特征图feature map。
当卷积层的输入样本是三通道的彩色图像时,图3.5中的卷积核就会是三维的3 * M * M,M表示卷积核大小。
第二层及其以后的卷积层的输入是上一层的特征图,而特征图的个数是由上一层的卷积核个数决定的。当上一层的卷积核数为8时,就会得到8个特征图作为下一层的输入,所以下一层需要8个三维的8*M*M卷积核。
三、池化层
池化层的作用是减小卷积层产生的特征图的尺寸。选取一个区域,根据该区域的特征图得到新的特征图,这个过程就是池化操作。(原文的表述真笼统。直白点:代表选举制度:选定一个区域方格,从方格中按照一定规则取一个数,来代表整个区域。进而实现数据压缩,降低数据维度,实现运算量的简化。)
池化操作降低了特征图的维度,使得特征表示对输入数据的位置变化具有稳健性。池化操作与C细胞具有相同的作用:抗变形的畸变容错。
四、全连接层
和多层感知器一样,全连接层也是首先计算激活值,然后通过激活函数计算各单元的输出值。激活函数包括sigmoid、tanh、ReLU等函数。由于全连接层的输入就是卷积层或池化层的输出,是二维的特征图,所以需要对二维特征图进行降维处理Flatten(展成一维图像)。
五、输出层
和多层感知器的输出层一样,卷积神经网络的输出层也是使用似然函数计算各类别的似然概率。
六、神经网络的训练方法
1、误差更新方法:
卷积神经网络的参数包括卷积层的卷积核大小、全连接层的连接权重和偏置值。和多层神经网络一样,卷积神经网络中的参数训练也是使用误差反向传播算法。多个全连接层,仍然按照链式法则逐层调整。
池化层的误差传播:
误差只在激活值最大的单元之间传播。在反复调整连接权重的过程中,激活值最大的单元有可能出现在其他位置,届时就只调整其他单元的连接权重。谁大调整谁。棒打出头鸟。
可以把池化层看做是有部分连接的全连接层。
卷积层的误差传播:
把卷积层的卷积核看做是只与特定单元相连接的全连接层。卷积核看做是一层全连接层。
2、参数的设定方法
与神经网络有关的
- 卷积层的卷积核大小、卷积核个数
- 激活函数的种类
- 池化方法的种类
- 网络的层结构(卷积层的个数、全连接层的个数等)
- 全连接层的个数
- Dropout的概率
- 有无预处理
- 有无归一化
与训练有关的参数
- Mini-Batch的大小
- 学习率
- 迭代次数
- 有无预训练
最理想的状态就是从这些参数组合中选择最优的组合进行训练,但是由于组合数过于庞大,所以设置参数时,只能根据以往的研究和经验,不断的摸索更优化的组合。
图3.11(a):卷积核的大小不会对误识别率产生显著影响,不过5 5卷积核的性能最好。
图3.11(b):卷积核个数越多识别性能越好。
图3.11(c):逐层增加卷积核的个数,识别性能越好,其中128256
512时效果好于都使用256个卷积核。
图3.11(d):激活函数对识别性能有显著影响。最近提出的ReLU和maxout好于sigmoid和tanh函数。
图3.11(e):即使增加全连接层,性能也不会改变。甚至没有全连接层也没有问题。
图3.11(f):结果显示ZCA白化效果很好,优于未实施预处理的情况。
图3.11(g):使用Dropout能够提升些许识别性能。
图3.11(h):学习率不会产生显著影响。无须大幅调整这些参数。
图3.11(i):不同Mini-Batch大小不会产生显著影响。无须大幅调整这些参数。
图3.11(j):有无归一化也不会产生明显性能差异。无须大幅调整这些参数。
通过以上比较可知:在调整参数时,重要的是先调整卷积层的卷积核个数、激活函数的种类以及输入图像的预处理。其他参数虽然也会对性能或多或少产生影响,但是差异不大,所以首先确定重要参数,然后再对其他参数进行微调即可。
小结:
卷积神经网络能够通过卷积层和池化层使得特征映射具有位移不变性。都是通过误差反向传播算法进行训练的。近年来提出的激活函数和Dropout等技术能够提高网络的泛化能力。
与多层感知器相比,卷积神经网络的参数更少,不容易发生过拟合,因而网络的泛化能力能够得以提高。