基于稀疏自编码器的手写体数字识别
2017-04-25余涛
余涛
摘要:深度学习是基于深层神经网络的人工智能领域的概念。其架构有卷积神经网络(CNN),深度置信网络(DBN),自动编码器(AE)等。本文描述了一种把稀疏自编码器无监督学习得到的权值矩阵应用于卷积神经网络,而并不直接训练卷积神经网络的图像特征提取方法,并利用提取的特征训练分类器。最终得到的网络分类效果较理想,并且比起传统人工神经网络的图像识别,具有网络参数较少,对图像的平移具有一定的容忍能力,不容易过拟合等优点。
关键词:深度学习;卷积神经网络;稀疏自编码器;无监督学习;特征提取
中图分类号:TP391.41 文献标识码:A 文章编号:1007-9416(2017)01-0066-01
1 引言
深度学习广泛应用于图像识别、语音识别、自然语言处理等领域。一些机器学习的任务需要复杂的数据预处理过程,人工提取特征,深度学习自动提取特征的能力大大简化了数据 预处理的过程,尤其是对于图像处理,提取的特征具有明显的含义。卷积神经网络是一种深度学习的架构,网络的参数可以通过无监督学习训练。本文描述的方法并不直接训练卷积神经网络,而是通过稀疏自编码器无监督学习得到的权值矩阵作为稀疏自编码器的卷积滤波器,从而间接确定卷积神经网络的参数。
2 稀疏自编码器
自动编码器是一种无监督学习的神经网络结构。网络结构如图1所示,分为输入层、隐 层、输出层。隐层也称为特征提取层,自编码器的正向传导过程分为编码和解码。编码过程即输入数据x经过线性加和以及偏置得到z2= W1x+b1,经过S型函数f(x)(比如sigmoid函数)得到隐层激活值a2=f(z2)。解码过程即隐层激活值经过线性加和以及非线性变换得到输出层激活值hW;b=(W2a2+b2)。
自编码器的训练目标是让输出层和输入层之间的误差尽量小,即试图学习一个恒等函数hW;b(x)=x,。若训练结果较为理想,x经正向传导后,输出值和x相似,即可认为隐层是对输入x的一个理想的编码,通过对隐层节点解码能够较好地恢复x。
对隐层节点施加某些约束,比如让隐层节点个数较少,那么为了解码能够较好地恢复输入数据,隐层节点就必须捕捉输入数据的主要特性,从而达到提取特征的目的。
稀疏自编码器通过在代价函数中加入稀疏性惩罚项来约束隐层节点对所有训练样本的平均激活值,某个隐层节点只有在特定的输入下才能获得较大的激活值,而对于其他输入则激活值很低,那么该隐层节点就对特定的输入具有代表性,特定的输入就是该隐层节点提取的特征。
3 手写体数字图像识别
本文使用的数据是MNIST数据库,训练集数据包含了60000个20×20的手写体数字图片和对应的标签,测试集数据包含了10000个20×20的手写体数字图片和对应的标签。读取图片数据后,把原始图像进行扩展,得到20×40的新图像,原始图像在新图像中的位置随机选取。(见图1)
4 稀疏自编码器的训练
稀疏自编码器的训练使用的是BP算法(Back Propagation Algorithm),代价函数为:
其中,J为三层BP网络的代价函数,β为稀疏性代价系数,为隐层神经元j对所有训练样本的平均激活度,ρ为期望平均激活度,为ρ和的KL距离(KL divergence)。
从MNIST数据库数字5到9的图片中随机提取8×8的小片10000片作为训练样本。稀疏自动编码器的输入层节点为64个,隐层节点25个,输出层节点数和输入层相同。
把训练好的稀疏自编码器的输入层和隐层连接权值可视化,隐层每一个节点代表一个特征,隐层节点和输入层的连接权值排列成8×8的图片就是特征的可视化形式。对于较小的图像来说,稀疏自编码器训练得到的特征是各个方向的边缘信息。输入的图像可以近似地由隐层节点所代表的特征线性表示。训练好的稀疏自编码器输入层和输出层连接的权值(64×25)作为卷积神经网络的卷积滤波器(25个)。
5 分类
原始图像(20×40)经过卷积和降采样得到Feature Map2,共有25个特征图。把Feature Map2的所有特征图展开作为ANN的输入,训练Softmax分类器进行分类。
6 结果及分析
实验设备为一台搭载Win7操作系统,CPU是Intel i5-3210M,主频2.5GHz。RAM为4GB的笔记本电脑。训练分类器使用的训练集样本数为10000,测试集样本数2000。
稀疏自编码器训练使用的样本是数字5到9的图像,而网络进行分类的输入是数字0到4的图像,理想的分类效果说明稀疏自编码器对于小型图像提取的特征可近似地认为是图像的普遍特征。
对比CNN+ANN和直接使用ANN分类的结果,可以看出虽然ANN在训练集上正确率高于CNN+ANN,但在测试集上的正确率明显下降,表现出对训练集的依赖(过拟合),尤其是加入椒盐噪声后,ANN在测试集上的正确率急剧下降到77%,表现出严重的过拟合。而CNN+ANN对于测试集和训练集,分类正确率基本相同。
直接使用ANN进行分类的网络需要训练的参数有4000个,而CNN+ANN仅有1250个。进行卷积操作时,选取的卷积步长不宜过长,否则有可能“跨过”具有明显特征的区域。而降采样的步长同样需谨慎選取,虽然步长大对于降维有较明显的作用,但可能导致特征严重丢失,例如卷积步长都为3时,降采样的步长从2增加到3时,分类准确率从85.8%下降到68.5%。