摘要:本文基于Yann Lecun的论文“Gradient-Based Learning Applied to Document Recognition”中提出的LeNet-5卷积神经网络模型,结合Alex Krizhevsky所描述的架构并使用谷歌的机器智能开源软件库TensorFlow中示例程序构建了带有归一化层的多层卷积神经网络模型。该模型是一个由交替卷积和非线性组成的多层体系结构,最后使用多层全连接网络与softmax分类器连接。模型使用交叉熵损失函数对预测结果进行评价并在训练过程中使用Adma优化算法代替传统的梯度下降算法,使得算法收敛速度得以加快。本文所使用的数据集为Cifar-10官网中二进制文件数据集,使用Cifar-10的5个batch进行训练和其所提供的测试数据集进行模型检验,模型在使用单个CPU进行10000次迭代大约训练90分钟的情况下预测正确率达到76%的精度。本文记录每10次迭代后的损失函数值并绘图进行讨论,同时比较了不同迭代次数下的预测正确率关系,对于在训练时间和预测正确率的权衡上有一定的指导意义。
关键词:卷积神经网络、TensorFlow、CIFAR-10、LenNet-5
1. 卷积神经网络
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,[1]对于大型图像处理有出色表现。
卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构[2]。
一种卷积神经网络各个层级结构,如下图所示:
图1.1 一种CNN的结构
1.1. 卷积层
卷积层(Convolutional layer),卷积神经网络中每层卷积层由若干卷积单元组成。卷积层是卷积核在上一级输入层上通过逐一滑动窗口计算而得,将卷积核的各个参数与对应的局部像素值相乘之和,(通常还要再加上一个偏置参数),得到卷积层上的结果。图1.1.1表示了一次卷积运算的例子。
图1.1.1 卷积核大小为3*3的一次卷积运算
卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。
1.2. 线性整流层
线性整流层(Rectified Linear Units layer, ReLU layer)使用线性整流(Recti