卷积神经网络(Convolutional Neural Network, CNN)是一种源于人工神经网络(Neural Network, NN)的深度机器学习方法,近年来在图像识别领域取得了巨大的成功。CNN由于采用局部连接和权值共享,保持了网络的深层结构,同时又大大减少了网络参数,使模型具有良好的泛化能力又较容易训练。NN的训练算法是基于梯度下降的错误反向传播(Back Propagate,BP)算法,CNN的训练算法是BP算法的一种变形。本文从梯度下降的数学推导中总结了NN训练过程中的错误信号传播和权重修改策略,用切割小图训练共权神经网络的方式解释了CNN中的卷积过程,并以特殊卷积的方式解释了CNN的子采样过程,最后将NN的错误信号传播和权重修改策略移植到CNN的训练中。我们将推导出的CNN训练方法用C++编码实现,用CNN应用最早最典型的手写数字识别问题验证被编码的推导过程,得到了正确的效果。
人工神经网络(Neural Network, NN)有50多年的历史。神经网络的发展也经历过单层感知机,多层感知机,多层感知机变形几个阶段。卷积神经网络(Convolutional Neural Network, CNN)是多层感知机的一种变体。神经网络的训练方法是错误反向传播算法(Back Propagate, BP),而错误反向传播算法的数学基础是梯度下降。在本章的前半部分,我给出单层感知机和多层感知机的工作原理,即BP算法。
计算机学者从生物视觉的研究中得到启示,一个视觉神经细胞只与其距离较近的邻层神经元相连。鉴于此,CNN的采用了局部感受野。为了简化模型,一个特征平面的神经元共享权值。CNN最早由YannLecun 实现并运用到手写数字识别问题中,并取得该领域最高的识别率,至今未被超越。CNN是NN的一种变形,CNN与NN最大的不同在于CNN的卷积和子采样过程,而子采样可以被认为是一种特殊的卷积过程。在本章的后半部分,将以切割小图训练共享权值的NN的方式阐释卷积神经网络中的卷积过程。
本文按照BP的思想实现并训练了一个卷积神经网络模型。我使用经典的手写数字识别问题检测CNN训练推导过程的准确性。在实验中,我使用6万张图片训练CNN,用1万张数字图片做测试,训练后的CNN模型在测试集上的准确率高达98.6%。实验说明用切割小图训练NN的方法推导的CNN训练方法是正确的。
卷积神经网络通常采用若干个卷积和子采样层的叠加结构作为特征抽取器。卷积层与子采样层不断将特征图缩小,但是特征图的数量往往增多。特征抽取器后面接一个分类器,分类器通常由一个多层感知机构成。在特征抽取器的末尾,我们将所有的特征图展开并排列成为一个向量,称为特征向量,该特征向量作为后层分类器的输入。