李书清
(海南软件职业技术学院,海南 琼海 571400)
自2006年Hinton及其合作者提出深度学习的概念之后[1-2],深层神经网络逐步成为机器学习领域一个重要的新研究方向。深层神经网络是一种多层非线性结构,具有强大的特征表达能力和对复杂函数的建模能力,其已经在许多重要领域,例如图像处理、语音处理和自然语言处理等方面取得振奋人心的进展,获得众多学者的高度关注和认可[3-9]。典型的深层神经网络就是多层感知器,它将非线性可分的原始数据通过一种方法映射到一个线性可分的高维空间中,使用线性分类器完成分类。但是由于多层感知器是一个全连接的网络,当输入较大时,权值会增多;而且会出现梯度发散的问题。在这种情况下,卷积神经网络应运而生。卷积神经网络(Convolutional Neural Networks, CNNs)是一种前馈神经网络,每个神经元都只影响邻层的一部分神经元,具有局部感受野。因此,该网络具有极强的捕捉局部特征的能力。另一方面,权值共享和池化显著地降低了网络的计算复杂度,使得CNNs得到广泛应用。CNNs是图像分类和语音识别领域的杰出算法,也是目前大部分计算机视觉系统的核心技术。从facebook的图像自动标签到自动驾驶汽车,乃至AlphaGo都在使用。为了进一步理解CNNs的特点及应用,本文对典型的CNNs进行了理论和结构分析,并开展了相应的比较实验,来验证其识别效果。
卷积神经网络作为神经网络的一种,它具有神经网络的一些特点。神经网络是由多个感知器(神经元)构成的全连接的网络。本质上来说,这样的连接只是简单的线性加权和而已,所以每个神经元加上同一个非线性函数(例如sigmoid,tanh等),使得网络能拟合非线性。通常这个非线性函数被称为激活函数。深层卷积网络的结构如图1所示。C1,C2代表卷积层;S1,S2代表下采样层;最后两层分别为全连接层和输出层。深层卷积网络是一种具有多层非线性结构的神经网络模型,包括一个输入层、多个卷积层和下采样层、多个全连接和一个输出层。其中,相邻层神经元之间权值共享。
图1 卷积神经网络结构
卷积神经网络结构主要有3种操作:卷积、下采样、全连接。整个训练过程分为前向和反向传播[10]。在前向传播中,假设输入为N×N大小矩阵,卷积核ω,大小为m×m,卷积层的输出大小为(N-m+1)×(N-m+1)。则卷积层的输入为:
卷积层的输出为:
在下采样层中,假设下采样区域为(k×s),则下采样层大小为[(N-m+1)×(N-m+1)]/(k×s)。
在反向传播中,对权值的计算公式如下:
其中:
假设n代表网络的层数,L1是输入层,L2到Ln-1是隐含层,输出层是Ln。LNl代表第l层神经元的个数。神经元的激活函数σ(·)为sigmoid函数。ω(1)ij代表第(l-1)层的卷积核,b(l)i是第l层第i个神经单元的偏置。用o(l)i表示第l层第i个单元的输出值,o(l)i表示第l层第i个神经元的输入,O(C)i表示卷积层的输入。如果输入用x1,x2,…,xn表示,则卷积网络的详细计算过程为:
综上所述,卷积神经网络算法如下:
本文使用的实验数据集为MNIST和CIFAR-10。MNIST[11]主要由Google实验室的Corinna Cortes和纽约大学柯朗研究所的Yann LeCun所建,在深层神经网络的性能评测中有广泛应用。其中训练数据集包含60 000个手写数字,测试数据集包含10 000个手写数字,每个手写数字的维数为28×28=784。CIFAR-10[12]包含60 000个32×32的彩色图像,共有10类。有50 000个训练图像和10 000个测试图像。本文的实验平台是一台联想微机,处理器为Intel(R)Core(TM)i5-6500,内存为16G,操作系统为64位Windows,编程环境为Python。本次实验对MNIST手写数字和CIFAR-10进行训练和测试,相关数据和结果如表1所示。
表1 对比实验数据和结果
从表1可以看出,在两个数据集上CNNs的识别错误率分别为0.82%和16.9%。通过测试结果可以看出相较于MNIST数据集,在CIFAR-10上识别率较低。这主要是因为相比MNIST数据集,一方面,CIFAR-10数据规模较大;另一方面,前者为灰度图而后者为彩色图像。更重要的是,对于CIFAR-10来说,相对于传统图像识别数据集,CIFAR-10对于提高数据的识别率来说,具有较好的研究方向。比如数据的平衡性问题,平衡的类别往往能获得最佳的表现,而不平衡的类别往往使模型的效果下降。
本文对卷积神经网络模型结构以数学推导的方式进行了分析,在MNIST和CIFAR-10两个数据集上,使用CNNs进行对比实验,并对实验结果进行了分析。实验结果表明,与传统方法相比,CNNs无论在处理灰度图和彩色图都有较好的识别效果。