读书笔记--神经网络与深度学习(四)卷积神经网络

5 卷积神经网络

卷积神经网络CNN,是一种具有局部连接、权重共享等特性的深层前馈神经网络。
目前,卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络,使用反向传播算法进行训练。
卷积神经网络结构上的局部连接、权重共享和汇聚的特性,使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数更少。
卷积神经网络主要使用在图像分类、人脸识别、物体识别、图像分割等,其准确率一般也远远超出了其它的神经网络模型。近年来,卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域。

5.1 卷积

卷积是分析数学中的一种重要的运算,在信号处理或图像处理中,经常使用一维或二维卷积。

一维卷积:在信号处理中用于计算信号的延迟累积。用于计算t时刻受到的信号(当前产生的信息和以前延迟信息的叠加)。
ω1ω2ω3…ωk是信号在经过k个时间步长后的衰减倍数,称为滤波器或卷积核。
一般情况下滤波器的长度远小于信号序列长度。卷积相当于信号序列的简单移动平均。

二维卷积:在图像处理中使用。因为图像为二维结构。
常用的均值滤波就是当前位置的像素值设为滤波器窗口中所有像素的平均值。
在图像处理中,卷积经常作为特征提取的有效方法。经过卷积操作的结果称为特征映射。

5.1.1 互相关

在机器学习和图像处理领域,卷积的主要功能是在一个图像(或某种特征)上滑动一个卷积核(即滤波器),通过卷积操作得到一组新的特征。在计算卷积的过程中,需要进行卷积核翻转。在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销。
互相关和卷积的区别仅仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积。
事实上,很多深度学习工具中卷积操作其实都是互相关操作。

5.1.2 卷积的变种

在卷积的标准定义基础上,还可以引入滤波器的滑动步长和零填充来增加卷积的多样性,可以更灵活地进行特征抽取。
滤波器的步长(Stride)是指滤波器在滑动时的时间间隔。
零填充(Zero Padding)是在输入向量两端进行补零。
一般常用的卷积有以下三类:
• 窄卷积(Narrow Convolution):步长s = 1,两端不补零p = 0,卷积后输出长度为n − m + 1。
• 宽卷积(Wide Convolution):步长s = 1,两端补零p = m − 1,卷积后输出长度n + m − 1。
• 等宽卷积(Equal-Width Convolution):步长 s = 1,两端补零 p = (m −1)/2,卷积后输出长度n。
在早期的文献中,卷积一般默认为窄卷积;而目前的文献中,卷积一般默认为等宽卷积。

5.1.3 卷积的数学性质

交换性:如果不限制两个卷积信号的长度,卷积具有交换性。
导数:

5.2 卷积神经网络

卷积神经网络一般由卷积层,汇聚层和全连接层构成.

5.2.1 用卷积来代替全连接

如果采用卷积来代替全连接,第l 层的净输入z(l) 为第l − 1层活性值a(l−1)和滤波器w(l) ∈ Rm 的卷积。
根据卷积的定义,卷积层有两个很重要的性质:
局部连接: 在卷积层(假设是第 l 层)中的每一个神经元都只和下一层(第 l − 1层)中某个局部窗口内的神经元相连,构成一个局部连接网络。层间连接数的个数减少。
权重共享:作为参数的滤波器 w(l) 对于第 l 层的所有的神经元都是相同的。
由于局部连接和权重共享,卷积层的参数只有一个 m 维的权重 w(l) 和 1 维的偏置b(l),共m + 1个参数。参数个数和神经元的数量无关。
此外,第l 层的神经元个数不是任意选择的,而是满足n(l) = n(l−1) − m + 1。

5.2.2 卷积层

卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器。
特征映射(Feature Map)为一幅图像(或其它特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征。为了提高卷积网络的表示能力,可以在每一层使用多个不同的特征映射,以更好地表示图像的特征。
在输入层,特征映射就是图像本身。如果是灰度图像,就是有一个特征映射,深度D = 1;如果是彩色图像,分别有RGB三个颜色通道的特征映射,输入层深度D = 3。
一个卷积层包括:输入特征映射组,输出特征映射组,卷积核。
为了计算输出特征映射Yp,用卷积核Wp,1, Wp,2, · · · , Wp,D 分别对输入特征映射X1, X2, · · · , XD 进行卷积,然后将卷积结果相加,并加上一个标量偏置b得到卷积层的净输入Zp,再经过非线性激活函数后得到输出特征映射Yp。

5.2.3 汇聚层

汇聚层也叫子采样层,其作用是进行特征选择,降低特征数量,从而减少参数数量。
卷积层可以减少连接的数量,但是特征映射组中神经元个数并没有显著减少,如果后面接一个分类器,分类器的输入维数依然很高,容易出现过拟合。加上汇聚层,可以降低特征维数,避免过拟合。

汇聚(Pooling)是指对每个区域进行下采样(Down Sampling)得到一个值,作为这个区域的概括。
常用的汇聚函数有两种:最大汇聚(取区域内神经元最大值)和平均汇聚(神经元平均值)。
汇聚层不但可以有效地减少神经元的数量,还可以使得网络对一些小的局部形态改变保持不变性,并拥有更大的感受野。
典型的汇聚层是将每个特征映射划分为2 × 2大小的不重叠区域,然后使用最大汇聚的方式进行下采样。汇聚层也可以看做是一个特殊的卷积层,卷积核大小为m × m,步长为s × s,卷积核为max函数或mean函数。过大的采样区域会急剧减少神经元的数量,会造成过多的信息损失。

5.2.4 典型的卷积网络结构

一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。
一个卷积块为连续M 个卷积层和b个汇聚层(M通常设置为2 ∼ 5,b为0或1)。一个卷积网络中可以堆叠N 个连续的卷积块,然后在后面接着K 个全连接层(N 的取值区间比较大,比如1 ∼ 100或者更大;K一般为0 ∼ 2)
目前,整个网络结构趋向于使用更小的卷积核(比如1 × 1和3 × 3)以及更深的结构(比如层数大于50)。此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用变得也越来越小,因此目前比较流行的卷积网络中,汇聚层的比例也逐渐降低,趋向于全卷积网络。

5.3 参数学习

卷积网络中的参数为卷积核中权重以及偏置。使用误差反向传播算法进行参数学习。
在卷积神经网络中,有卷积层和汇聚层。参数为卷积核以及偏置,所以只需要计算卷积层中参数的梯度。

5.3.1 误差项的计算

卷积层和汇聚层的误差项计算有所不同。
汇聚层 当第l + 1层为汇聚层时,因为汇聚层是下采样操作,l + 1层的每个神经元的误差项δ 对应于第l层的相应特征映射的一个区域。l层的第p个特征映射中的每个神经元都有一条边和l + 1层的第p个特征映射中的一个神经元相连。根据链式法则,第l 层的一个特征映射的误差项δ(l,p),只需要将l + 1层对应特征映射的误差项δ(l+1,p) 进行上采样操作(和第l层的大小一样),再和l层特征映射的激活值偏导数逐元素相乘,就得到了δ(l,p)。
卷积层:

5.4 几种典型的卷积神经网络

LeNet-5:基于 LeNet-5 的手写数字识别系统在 90 年代被美国很多银行使用,用来识别支票上面的手写数字。
AlexNet:第一个现代深度卷积网络模型,其首次使用了很多现代深度卷积网络的一些技术方法,比如使用 GPU 进行并行训练,采用了ReLU作为非线性激活函数,使用Dropout防止过拟合,使用数据增强来提高模型准确率等。
Inception 网络:在卷积网络中,如何设置卷积层的卷积核大小是一个十分关键的问题。在Inception 网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception 模块。Inception网络是由有多个inception模块和少量的汇聚层堆叠而成。 Inception模块同时使用1 × 1、3 × 3、5 × 5等不同大小的卷积核,并将得到的特征映射在深度上拼接(堆叠)起来作为输出特征映射。
残差网络:通过给非线性的卷积层增加直连边的方式来提高信息的传播效率。
假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的卷积层)f(x; θ)去逼近一个目标函数为h(x)。如果将目标函数拆分成两部分:恒等函数x和残差函数h(x) − x。
根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易学习 。因此,原来的优化问题可以转换为:让非线性单元f(x; θ)去近似残差函数h(x) − x,并
用f(x; θ) + x去逼近h(x)。

5.5 其他卷积方式

转置卷积,空洞卷积

5.6 小结

卷积神经网络是受生物学上感受野的机制而提出。
目前,卷积神经网络已经成为计算机视觉领域的主流模型。通过引入跨层的直连边,可以训练上百层乃至上千层的卷积网络。随着网络层数的增加,卷积层越来越多地使用1 × 1和3 × 3大小的小卷积核,也出现了一些不规则的卷积操作,比如空洞卷积、可变形卷积等。网络结构也逐渐趋向于全卷积网络,减少汇聚层和全连接层的作用。

猜你喜欢

转载自blog.csdn.net/tianyouououou/article/details/95168509