摘要:卷积神经网络具有局部结合、权值共享及下采样等特征,可有效地降低网络的复杂度减少训练参数的数目。基于这些优越特性,它在各种信息处理中的性能优于传统的神经网络。本文首先介绍神经网络,进而详细的分析了卷积神经网络的原理及结构,包括卷积层、池化层、全连接层,并利用TensorFlow简单的展示卷积神经网络用于图像处理。
关键词:神经网络;卷积神经网络;TensorFlow
中图分类号:TP391文献标识码:A
文章编号:1009-3044(2019)34-0176-02
1 概述
神经网络最早始于1943年的神经生理学家沃伦·麦克洛克和数学家沃尔特·皮茨,他们在根据人脑神经结构提出了感知机神经元模型。1958年Rosenblatt提出了由两层神经元组成的神经网络并实现用单个感知机的训练。该模型数学表示为Y=f(∑w*x),f(x)为激活函数,w为权值向量,x表示模型输入,Y表示模型输出。神经网络实质是一个多层的复合函数。在神经网络中每一层神经元仅仅与下一层的神经元全连接,而在同一层或跨层的神经元彼此都不连接。这种简单的神经网络结构,被称为多层前馈神经网络。1986年杰弗里·辛顿和大卫·鲁梅尔哈特等人提出了反向传播(BP)算法系统简洁地阐述反向传播算法(BP)在神经网络模型上的应用。该算法主要分两步骤:通过正向传播输入信号,输出分类信息;然后通过反向传播误差值,链式求导反向调整全网权值,让下一轮的训练中得到更加准确的输出。该算法把网络权值优化的运算量,从原来的与神经元个数的平方成正比,下降到只和神经元数本身成正比,使得权值参数的调整变得简单易行。该文解决了两层神经网络所需要的复杂计算量问题,从而带动了两层神经网络研究的热潮。近年来,随着计算力的增强及数据的普及,神经网络得到了迅速发展,神经网络的研究进入了白热化阶段,为了获得更好的结果,神经网络的应用也越来越广泛。
神经网络的训练包括设置不同的学习率、激活函数类型、正则类型、正则率、网络层设置等参数来使训练达到良好的结果。图1是根据不同的迭代次数,采用不同的学习率、激活函数、不同的正则类型和正则率、以及不同的网络层结构进行简单训练的demo示例。
2 卷积神经网络
卷积神经网是20世纪60年代Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,进而提出了卷积神经网络CNN。如今,CNN已经成为众多科学领域的研究应用热点之一,特别是在图像处理领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。K.Fukushima提出的新识别机是卷积神经网络的第一个网络实现。卷积神经网本质上是一个权值共享的多层复合函数。该模型的特征使得图像在平移、扭曲、缩放等操作中具有一定程度的不变性,并具有很强的鲁棒性和容错能力,并且也易于训练和优化。如图2,卷积神经网络分为输入层、卷积层、下采样层、全连接层以及输出层。
卷积层,卷积层是卷积神经网络的核心。该层通过“局部感受野”和“权值共享”等神经网络处理操作。卷积层可对高维数据输入实施降维处理并自动提取原始数据的核心特征,达到了去伪存真的目的,极大地提高了处理时效。激活层,激活层中的激活函数包括线性激活函数和非线性激活函数。非线性激活函数将前一层的线性输出进行非线性激活函数处理,从而可达到模拟、逼近任意复杂函数的目的,进而增强网络的表征能力。常见的三种非线性激活函数包括Sig-moid、Tanh、RELU等,如下图四种不同的激活函数:
线性激活函数只能进行线性可分,非线性激活函数使得网络模型可以非线性的表征特征。Sigmoid函数取值范围为(0,1),它可以将实数映射到(0,1)的区间,用来做二分类。然而,Sig-moid函数在趋近0和1时变化率会变得平坦导致梯度消失。Tanh函数也会出现梯度消失的问题。与sigmoid的区别是,tanh的函数取值范围为(-l,1),Tanh的梯度值变化较快,在特征相差明显时具有优越特性。修正线性单元RELU的提出解决了梯度消失问题,该函数具有收敛速度快,且不会产生梯度消失等特性。激活层增强了网络的表示能力和学习能力。下采样层,下采样层其目的是利用数据局部相关性比如图像数据的局部相似性,通过下采样获得少量有用数据来表征数据的主要特征,下采样层降低了数据的处理规模。由于下采样具备局部线性转换不变性,从而增强卷积神经网络的泛化处理能力。全连接层,通过卷积、激活、池化等多个网络层处理之后,使得待处理的数据特性发生了显著变化:输人数据的维度降低了,非常可观地减少了全连接层网络的复杂度;全连接层的输入数据已不再是冗多繁杂的数据,而是经过反复提纯过的主要特征数据,使得最后输出的结果更加简练、高效、可处理。在同一特征映射层面上的神经元权值相同,所以卷积神网络可以并行学习,这是卷积神经网络的一大优势。卷积神经网络从提出至今已经经历多种变形與融合发展,包括LeNet、AlexNet、FNet、VGG、NIN、ResNet、GoogleNet、SENet等经典的结构。
3 TensorFlow及图像处理上的应用
TensorFlow是基于张量流的机器学习计算框架。它是基于数据流图作为核心抽象,采用声明式编程范式,即程序像一种数学模型表达,输入自变量,输出因变量。该范式的程序通过用户设计与组合表达式来实现计算,更适合于神经网络模型。TensorFlow具有代码可读性强、引用具有一定的透明性,提供了预编译优化的能力等优越特性。TensorFlow也提供了大量的库函数。通过tf.nn.conv2d可以实现卷积计算。CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。如下图采用不同核函数得到的图片。图左一采用单位矩阵卷积核得到了原图,相当于未对图像进行任何操作。图左二到图左四分别采用Kerne12、kerne13、kerne14训练得到。
4 结论
随着CNN的发展,CNN网络的融合与变形越来越多,CNN的理论发展日趋成熟。CNN的理论及实践发展迅速,这与我们计算力GPU的发展及大数据的普遍应用密不可分,同时也得益于不断开源的工具。CNN高效快捷的应用已成普遍,在图像分类、物体检测、物体追踪、姿态预估、文本检测识别、视觉、行动识别、场景标记等领域都得到了广泛的应用,并且将获得较高准确率。未来人们不仅将会这些应用场景中获得更高的准确率,同时,也将会兼顾应用处理的速度与时效。
参考文献:
[1] Williams D,Hinton G.Learning representations by back-prop-agating errors [J]. Nature,1986,323 (6088):5 33-5 38.
[2] Rodolfo Bonnin.Building Machine Learning Projects with Ten-sorFlow[M].Packt Publishing,2016,12.
[3]张玉宏.深度之美[M].北京:电子工业出版社,2018.
【通联编辑:梁书】
收稿日期:2019-10-12
作者简介:刘中雨,男,硕士,主要研究方向为机器学习与数据科学。