人工智能课程实践报告
题 目: 卷积神经网络 MNIST 手写体识别
学 院:
专 业:
学 号:
姓 名:
日 期: 2018 年 11 月
TensorFlow 中使用 CNN 实现手写体数字识别
一、 问题分析
题目要求为:基于 CNN 实现手写体数字识别并对比 MLP 分析。
基于题目的要求对问题进行分析,了解卷积神经网络相关知识。
(一)、卷积神经网络结构
卷积神经网络通常包含以下几种层:输入层、卷积层、池化层、全连接层、
softmax 层。
1、输入层。输入层是整个神经网络的输入,在处理图像的卷积神经网络中,
它一般代表了一张图片的像素。其中三维矩阵的长和宽代表了图像的大小,而三
维矩阵的深度代表了图像的色彩通道(Channel)。比如黑白图片的深度为 1,而
在 RGB 色彩模式下,图像的深度为 3。从输入层开始,卷积神经网络通过不同的
神经网络结构将上一层的三维矩阵转化为下一层的三维矩阵,直到最后的全连接
层。
2、卷积层。卷积层是一个卷积神经网络中最为重要的部分。和传统全连接
层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块, 这个小块
常用的大小有 3*3 或者 5*5。卷积层试图将神经网络中的每一小块进行更加深入
地分析从而得到抽象程度更高的特征。一般来说,通过卷积层处理过的节点矩阵
会变得更深。
3、池化层(Pooling)。池化层神经网络不会改变三维矩阵的深度,但是它可
以缩小矩阵的大小。池化操作可以认为是将一张分辨率较高的图片转化为分辨率
较低的图片。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达
到减少整个神经网络中参数的目的。
4、全连接层。在经过多轮卷积层和池化层的处理之后,在卷积神经网络的
最后一般会是由 1 到 2 个全连接层来给出最后的分类结果。经过几轮卷积层和池
化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。
我们可以将卷积层和池化层看成自动图像特征提取的过程。在特征提取完成之后,
仍然需要使用全连接层来完成分类任务。
5、Softmax 层。和在 MLP 网络中介绍的一样,Softmax 层主要用于分类问题。
通过 Sofmax 层,可以得到当前样例属手不同种类的概率分布情况。
(二)、卷积层操作
一般的卷积神经网络由多个卷积层构成,每个卷积层中通常会进行如下几个
操作:
1、图像通过多个不同的卷积核的滤波,并加偏置( bias),提取出局部特征,
每一个卷积核会映射出一个新的 2D 图像。
2、将前面卷积核的滤波输出结果,进行非线性的激活函数处理。目前最常见
的是使用 ReLU 函数,而以前 Sigmoid 函数用得比较多。
3、对激活函数的结果再进行池化操作(即降采样,比如将 2*2 的图片降为 1x1
的图片),目前一般是使用最大池化,保留最显著的特征,并提升模型的畸变容
忍能力。
(三)、卷积网络要点
1、局部连接。人的视觉神经处理光信号需经过视觉感受野的处理。每个感
受野只接受一小块区域的信号,一小块区域内的像素相互关联,每个神经元不需
要接受全部像素点的信息,只需要接受局部的像素点作为输入,而后将所有这些
神经元收到的局部信息综合起来得到全局信息。
人眼识别物体从点和边开始,每个神经元只接收一个区域的信号,并提取出
点和边的特征,再将点和边的信号传递给后一层神经元,组合成高阶特征,如三
角形、正方形、直线、拐角等,再进行组合和抽象,得到进一步的组合识别特征。
可由此得到启发,在神经网络中使用局部连接结构,并对输入特征进行组合和抽
象来获得更高阶的特征,以此进行图像识别。按此进行网络结构的改进,可得卷
积神经网络的结构。
2、权值共享。权值的共享使得我们能更有效的进行特征抽取,因为它极大
的减少了需要学习的自由变量的个数。通过控制模型的规模,卷积网络对视觉问
题可以具有很好的泛化能力。
3、降采样。池化(pool)即下采样(downsamples),目的是为了减少特征
图。池化操作对每个深度切片独立,规模一般为 2*2,相对于卷积层进行卷积
运算。
二、 解决思路
(一)、基于上述的了解和分析,设计了一个简单的卷积神经网络完成对手写体
识别问题的训练和测试。网络的具体细节定义如下:
1、权重和偏置设置。设计中为权重制造随机噪声打破完全对称,这里设置
为截断的正态分布噪声,标准差为 0.1。因为后续使用了 ReLU 激活函数,所以
为偏置增加小的正值(0.1)用来避免死亡节点。
2、定义损失函数并选择优化器。
损失函数采用交叉熵函数,能够更好地衡量概率分布差异。
为改善梯度下降,优化器选用自适应优化的 Adam,Adam 也是基于梯度下降
的方法,但迭代参数的学习步长都有一个确定的范围,不会因为很大的梯度导致
很大的学习步长,参数的值比较稳定。
3、减轻过拟合。与上次使用 MLP 类似,使用 Dropout 函数,通过一个
placeholder 传入 keep_prob 比率控制。训练时,随机丢弃一部分节点数据来减
轻过拟合,预测时则保留全部数据来追求更好的预测性能。
(二)、综合上诉细节分析,本次神经网络具体结构如下:
1、输入卷积层。使用 32 个 5*5*1 的卷积核,加入偏置,使用 Relu 激活函
数,最后使用 2*2 的最大池化函数对卷积的输出结果进行池化操作。
2、卷积层。本层与上一层基本一致,但是卷积核数量变为 64,提取了更多
的特征。
3、全连接层。对上层的输出变形为一维向量,使用 ReLU 激活函数。
4、Dropout 层。使用 dropout 函数减轻过拟合。
5、输出全连接层。通过 softmax 层,得到最后的概率输出。
三、 实例讨论
简单展示模型训练的结果:
评论4