论文部分内容阅读
摘要:本文先介绍浅层神经网络的特点和应用,并指出其发展的瓶颈及不足之处;然后引入深度学习的概念,以卷积神经网络为例,详细介绍卷积神经网络的关键技术特点,最后通过一个实例说明卷积神经网络在深度学习方面的应用。
关键词:多层感知机;深度学习;卷积神经网络;人工智能
中图分类号:TP183:文献标识码:A
0 引言
在上世纪80年代,基于生物神经元数学模型的多层感知机(Multi-Layer Perceptron,简称 MLP)实现的网络模型就被叫作神经网络。由于当时的计算能力受限、数据规模较小等因素,神经网络一般只能训练到很少的层数,这种小规模的神经网络叫做浅层神经网络(Shallow Neural Network)。浅层神经网络不太容易轻松提取数据的高层特征,表达能力一般,虽然在诸如数字图片识别等简单任务上取得不错效果,但很快被90年提出的支持向量机超越。同时,浅层神经网络的发展遇到了很大的发展瓶颈。
1 深度学习简介
加拿大多伦多大学教授 Geoffrey Hinton长期坚持神经网络的研究,但由于当时支持向量机的流行,神经网络相关的研究工作遇到了重重阻碍。2006 年,Geoffrey Hinton 在 [1]
提出了一种逐层预训练的算法,可以有效地初始化Deep Belief Networks(DBN)网络,从而
使得训练大规模、深层数(上百万的参数量)的神经网络成为可能。在论文中,Geoffrey
Hinton 把深层的神经网络叫做Deep Neural Network,这一块的研究也因此称为 Deep
Learning(深度学习)。
2 卷积神经网络简介
2.1浅层神经网络的特点分析
前面本文提到浅层神经网络是采用全连接形式的一种神经网络,這种浅层神经网络一般层数不多,但参数量在当时的计算机硬件的条件来说是非常庞大的。训练一个浅层的神经网络计算代价并不小,由此可见,全连接层较高的内存占用量严重限制了神经网络朝着更大规模、更深层数方向的发展。
2.2 卷积神经网络的特点
卷积神经网络作为深度学习的一个典型网络,通过充分利用局部相关性和权值共享的思想,大大地减少了网络的参数量,从而提高训练效率,更容易实现超大规模的深层网络[1]。2012年,加拿大多伦多大学Alex Krizhevsky 将深层卷积神经网络应用在大规模图片识别挑战赛ILSVRC-2012上,在ImageNet数据集上取得了15.3%的Top-5错误率,排名第一,相对于第二名在Top-5错误率上降低了10.9%,这一巨大突破引起了业界强烈关注,卷积神经网络迅速成为计算机视觉领域的新宠,随后在一系列的任务中,基于卷积神经网络的形形色色的模型相继被提出,并在原有的性能上取得了巨大提升。
2.3 卷积神经网络的基本原理
在数字图像处理中有一种基本的处理方法叫线性滤波[2]。它将待处理的二维数字看作一个大型矩阵,图像中的每个像素可以看作矩阵中的每个元素,像素的大小就是矩阵中的元素值。而使用的滤波工具是另一个小型矩阵,这个矩阵就被称为卷积核。卷积核的大小远远小于图像矩阵,具体的计算方式就是对于图像大矩阵中的每个元素,计算周围的像素和卷积核对应位置的乘积,之后将结果相加最终得到的终值就是该像素的值,这样就完成了一次卷积。
如果采用卷积神经网络来替代以上提到的手写数字识别浅层神经网络,采用三个卷积层,和两个全连接层,一共只需要13450个参数,而且识别的准确率大幅上升。经过测试,可由原来的91%上升到98%以上。由此可见,卷积层的参数量非常少,主要的参数量集中在全连接层。由于卷积层将输入特征维度降低很多,从而使得全连接层的参数量不至于过大,因此通过卷积神经网络可以显著降低网络参数量,同时增加网络深度,大幅提高了识别的准确率。
3 卷积神经网络的具体应用
卷积神经网络可以应用在人工智能的很多领域[3],比如图像和自然语言处理等等。其结合特征提取和目标训练为一体的模型,能够很好地利用已有的信息对结果进行反馈训练。对图像识别的卷积神经网络来说,同样也是充分利用特征提取时提取的图像特征,来计算图像特征权重的大小,然后归一化处理需要处理的数据。这样使得原来的图像信息抽象成一个向量化的样本集,之后将样本集和训练好的模板输入卷积神经网络进行处理。下面以图像处理为例,说明卷积神经网络具体的编程方法和步骤。
3.1 MNIST数据集介绍
MNIST数据集是一个手写数字的数据库,它有60000个28*28像素的训练样本集和10000个28*28像素的测试样本集[4]。样本中包含了各个训练数据和相应的标签,其中标签集包含了0,1,2,3,4,5,6,7,8,9一共10个分类数据。通过对数据集的若干次训练,实现网络对输入数字图片的数字预测。
3.2 数据获取及预处理
本文使用的编程环境是TensorFlow 2.3,采用GTX1080 GPU进行训练,具体步骤如下:
(1)数据获取
首先使用TensorFlow 2.3本身自带的数据获取方式获得MNIST数据集并进行预处理。
(2)数据预处理
mnist数据集中每个实例的标签对应于0-9之间的任意一个数字,用来对图片进行标注,但这种标注方法并不能使得损失函数获得一个好的结果,因此数据预处理主要是先对数据标签(label)进行one-hot转换处理,处理之后就把常规的数字表示成0,1的形式,这种形式更适合进行损失函数的求解最小化。然后使用TensorFlow自带的data API进行打包,组合成训练集(train)和标签(label)的配对数据集。 3.3 建立卷积神经网络模型和结果分析
基本的卷积神经网络模型是由卷积层、池化层、BatchNormalization层、dropout层以及作为分类的全连接层构成,同时每一层使用relu激活函数做分割。主要代码如下:
(1)输入的初始化
输入的初始化使用的是Input类,根据输入的数据大小,将输入的数据维度做成[28,28,1]的三维数据。
(2)建立卷积层
使用TensorFlow自带的卷积层实现类对卷积进行计算,通过设定卷积核的数量、卷积核的大小、padding方式和激活函数初始化卷积类。
(3)建立BatchNormalization层和MaxPooling层
BatchNormalization层和MaxPooling层的目的是输入数据正则化,增大模型的泛化能力。
(4)建立分类的全连接层
全连接层的作用是对卷积层所提取的特征做最终分类,先使用flat函数进行扁平化,最后使用softmax函数进行分类。
(5)实验结果分析
实验结果分析来看,经过15个epochs训练后,训练集的效果非常好,准确率达到了98.91%,但测试集在第4个epoch训练结束后准确率达到92.3%,以后就基本没有得到提高,说明存在一定程度的过拟合问题。
(6)解决过拟合常规的办法
a.正则化
正则化是机器学习中最常见的过拟合解决方法,在损失函数中加入正则项来惩罚模型的参数,以此来降低模型的复杂度,常见的添加正则项的正则化技术有L1,L2正则化。
b. Dropout
Dropout是深度学习中最常用的控制过拟合的方法,主要用在全连接层处。Dropout方法是在一定的概率上(通常设置为0.5)隐式的去除网络中的神经元。
c.Batch Normalization
BM算法是一种非常有用的正则化方法,可以让大型的卷积神经网络快速收敛,同时还能提高分类的准确率,不需要使用局部响应归一化处理。BM算法会将每一层的输入值做归一化处理,并且会重构归一化处理之后的数据,确保数据的分布不会发生变化。
d.增加噪声
增加噪声是深度学习中的一种避免过拟合的方法,可以在输入数据上添加,增大数据的多样性,也可以在权值上添加噪声,这种方法类似于L2正则化。
本实验采用了L2正则化和Dropout的处理过拟合方案,经过过拟合处理和参数调节后,使得训练集和测试集的曲线基本拟合,达到了预期的目标。
4 总结
本文先介绍浅层神经网络的特点和不足之处,进而引入深度学习的概念,并详细介绍了深度学习的典型网络-卷积神经网络的特点和应用,最后通过使用TensorFlow2.3建立卷积神经网络,对mnist数据集进行识别,从数据获取、数据预处理、建立卷积神经网络等一系列步骤进行说明,从运行的结果来看,卷积神经网络比传统的浅层神经网络大幅度提高了识别的准确率。
参考文献
[1] 王宇石等.一种基于卷积神经网络的违禁品探测系统及部署方法[J],科技创新与应用,2020(7).
[2] 曹华军,吴宗民等.噪声图像的线性滤波分析与仿真[J],信息技术与信息华,2017(8).
[3] 闫涛. 深度学习算法实践 [M]. 电子工业出版社出版社,2020.
作者简介:翟高粤,男(1975-11)廣西钦州,汉,硕士,副教授,研究方向:软件理论,人工智能。
关键词:多层感知机;深度学习;卷积神经网络;人工智能
中图分类号:TP183:文献标识码:A
0 引言
在上世纪80年代,基于生物神经元数学模型的多层感知机(Multi-Layer Perceptron,简称 MLP)实现的网络模型就被叫作神经网络。由于当时的计算能力受限、数据规模较小等因素,神经网络一般只能训练到很少的层数,这种小规模的神经网络叫做浅层神经网络(Shallow Neural Network)。浅层神经网络不太容易轻松提取数据的高层特征,表达能力一般,虽然在诸如数字图片识别等简单任务上取得不错效果,但很快被90年提出的支持向量机超越。同时,浅层神经网络的发展遇到了很大的发展瓶颈。
1 深度学习简介
加拿大多伦多大学教授 Geoffrey Hinton长期坚持神经网络的研究,但由于当时支持向量机的流行,神经网络相关的研究工作遇到了重重阻碍。2006 年,Geoffrey Hinton 在 [1]
提出了一种逐层预训练的算法,可以有效地初始化Deep Belief Networks(DBN)网络,从而
使得训练大规模、深层数(上百万的参数量)的神经网络成为可能。在论文中,Geoffrey
Hinton 把深层的神经网络叫做Deep Neural Network,这一块的研究也因此称为 Deep
Learning(深度学习)。
2 卷积神经网络简介
2.1浅层神经网络的特点分析
前面本文提到浅层神经网络是采用全连接形式的一种神经网络,這种浅层神经网络一般层数不多,但参数量在当时的计算机硬件的条件来说是非常庞大的。训练一个浅层的神经网络计算代价并不小,由此可见,全连接层较高的内存占用量严重限制了神经网络朝着更大规模、更深层数方向的发展。
2.2 卷积神经网络的特点
卷积神经网络作为深度学习的一个典型网络,通过充分利用局部相关性和权值共享的思想,大大地减少了网络的参数量,从而提高训练效率,更容易实现超大规模的深层网络[1]。2012年,加拿大多伦多大学Alex Krizhevsky 将深层卷积神经网络应用在大规模图片识别挑战赛ILSVRC-2012上,在ImageNet数据集上取得了15.3%的Top-5错误率,排名第一,相对于第二名在Top-5错误率上降低了10.9%,这一巨大突破引起了业界强烈关注,卷积神经网络迅速成为计算机视觉领域的新宠,随后在一系列的任务中,基于卷积神经网络的形形色色的模型相继被提出,并在原有的性能上取得了巨大提升。
2.3 卷积神经网络的基本原理
在数字图像处理中有一种基本的处理方法叫线性滤波[2]。它将待处理的二维数字看作一个大型矩阵,图像中的每个像素可以看作矩阵中的每个元素,像素的大小就是矩阵中的元素值。而使用的滤波工具是另一个小型矩阵,这个矩阵就被称为卷积核。卷积核的大小远远小于图像矩阵,具体的计算方式就是对于图像大矩阵中的每个元素,计算周围的像素和卷积核对应位置的乘积,之后将结果相加最终得到的终值就是该像素的值,这样就完成了一次卷积。
如果采用卷积神经网络来替代以上提到的手写数字识别浅层神经网络,采用三个卷积层,和两个全连接层,一共只需要13450个参数,而且识别的准确率大幅上升。经过测试,可由原来的91%上升到98%以上。由此可见,卷积层的参数量非常少,主要的参数量集中在全连接层。由于卷积层将输入特征维度降低很多,从而使得全连接层的参数量不至于过大,因此通过卷积神经网络可以显著降低网络参数量,同时增加网络深度,大幅提高了识别的准确率。
3 卷积神经网络的具体应用
卷积神经网络可以应用在人工智能的很多领域[3],比如图像和自然语言处理等等。其结合特征提取和目标训练为一体的模型,能够很好地利用已有的信息对结果进行反馈训练。对图像识别的卷积神经网络来说,同样也是充分利用特征提取时提取的图像特征,来计算图像特征权重的大小,然后归一化处理需要处理的数据。这样使得原来的图像信息抽象成一个向量化的样本集,之后将样本集和训练好的模板输入卷积神经网络进行处理。下面以图像处理为例,说明卷积神经网络具体的编程方法和步骤。
3.1 MNIST数据集介绍
MNIST数据集是一个手写数字的数据库,它有60000个28*28像素的训练样本集和10000个28*28像素的测试样本集[4]。样本中包含了各个训练数据和相应的标签,其中标签集包含了0,1,2,3,4,5,6,7,8,9一共10个分类数据。通过对数据集的若干次训练,实现网络对输入数字图片的数字预测。
3.2 数据获取及预处理
本文使用的编程环境是TensorFlow 2.3,采用GTX1080 GPU进行训练,具体步骤如下:
(1)数据获取
首先使用TensorFlow 2.3本身自带的数据获取方式获得MNIST数据集并进行预处理。
(2)数据预处理
mnist数据集中每个实例的标签对应于0-9之间的任意一个数字,用来对图片进行标注,但这种标注方法并不能使得损失函数获得一个好的结果,因此数据预处理主要是先对数据标签(label)进行one-hot转换处理,处理之后就把常规的数字表示成0,1的形式,这种形式更适合进行损失函数的求解最小化。然后使用TensorFlow自带的data API进行打包,组合成训练集(train)和标签(label)的配对数据集。 3.3 建立卷积神经网络模型和结果分析
基本的卷积神经网络模型是由卷积层、池化层、BatchNormalization层、dropout层以及作为分类的全连接层构成,同时每一层使用relu激活函数做分割。主要代码如下:
(1)输入的初始化
输入的初始化使用的是Input类,根据输入的数据大小,将输入的数据维度做成[28,28,1]的三维数据。
(2)建立卷积层
使用TensorFlow自带的卷积层实现类对卷积进行计算,通过设定卷积核的数量、卷积核的大小、padding方式和激活函数初始化卷积类。
(3)建立BatchNormalization层和MaxPooling层
BatchNormalization层和MaxPooling层的目的是输入数据正则化,增大模型的泛化能力。
(4)建立分类的全连接层
全连接层的作用是对卷积层所提取的特征做最终分类,先使用flat函数进行扁平化,最后使用softmax函数进行分类。
(5)实验结果分析
实验结果分析来看,经过15个epochs训练后,训练集的效果非常好,准确率达到了98.91%,但测试集在第4个epoch训练结束后准确率达到92.3%,以后就基本没有得到提高,说明存在一定程度的过拟合问题。
(6)解决过拟合常规的办法
a.正则化
正则化是机器学习中最常见的过拟合解决方法,在损失函数中加入正则项来惩罚模型的参数,以此来降低模型的复杂度,常见的添加正则项的正则化技术有L1,L2正则化。
b. Dropout
Dropout是深度学习中最常用的控制过拟合的方法,主要用在全连接层处。Dropout方法是在一定的概率上(通常设置为0.5)隐式的去除网络中的神经元。
c.Batch Normalization
BM算法是一种非常有用的正则化方法,可以让大型的卷积神经网络快速收敛,同时还能提高分类的准确率,不需要使用局部响应归一化处理。BM算法会将每一层的输入值做归一化处理,并且会重构归一化处理之后的数据,确保数据的分布不会发生变化。
d.增加噪声
增加噪声是深度学习中的一种避免过拟合的方法,可以在输入数据上添加,增大数据的多样性,也可以在权值上添加噪声,这种方法类似于L2正则化。
本实验采用了L2正则化和Dropout的处理过拟合方案,经过过拟合处理和参数调节后,使得训练集和测试集的曲线基本拟合,达到了预期的目标。
4 总结
本文先介绍浅层神经网络的特点和不足之处,进而引入深度学习的概念,并详细介绍了深度学习的典型网络-卷积神经网络的特点和应用,最后通过使用TensorFlow2.3建立卷积神经网络,对mnist数据集进行识别,从数据获取、数据预处理、建立卷积神经网络等一系列步骤进行说明,从运行的结果来看,卷积神经网络比传统的浅层神经网络大幅度提高了识别的准确率。
参考文献
[1] 王宇石等.一种基于卷积神经网络的违禁品探测系统及部署方法[J],科技创新与应用,2020(7).
[2] 曹华军,吴宗民等.噪声图像的线性滤波分析与仿真[J],信息技术与信息华,2017(8).
[3] 闫涛. 深度学习算法实践 [M]. 电子工业出版社出版社,2020.
作者简介:翟高粤,男(1975-11)廣西钦州,汉,硕士,副教授,研究方向:软件理论,人工智能。