卷积神经网络-2

本文来自于网易云课堂

单层卷积神经网络

这里写图片描述
如何构建卷积神经网络的单层网络呢?过滤器的作用相当于W,卷积和相当于w×a,然后加上偏移b即为z。也就是说从 a [ 0 ] a [ 1 ] 的过程,首先执行线性函数,在加上偏差,然后应用激活函数Relu,然后通过神经网络的一层把一个6*6*3的维度 a [ 0 ] 演化为一个4*4*2的维度 a [ 1 ]
这里写图片描述
不论图片有多大,始终是用过滤器提取特征,总的参数很小。10个过滤器的话,加上偏移参数也就是280个。这就是卷积神经网络的一个特征,叫做避免过拟合。
这里写图片描述
注意,高度,宽度和通道是没有固定的顺序标准的。Andrew Ng采用的是高度、宽度、通道的顺序。

简单卷积神经网络示例

这里写图片描述
一个典型的卷积网络通常有三层,一个卷积层(CONV),一个池化层(POOL),最后一个是全连接层(FC)。虽然仅用一个卷积层也能搭建好但大部分架构师还是会添加池化层和全连接层。幸运的是,池化层和全连接层更容易设计。
这里写图片描述

池化层

这里写图片描述
除了卷积层,神经网络也经常使用池化层来缩减模型大小,提高计算速度,同时提高所提取特征的鲁棒性。
先举一个例子,给定一个4*4的矩阵,用到的池化层是最大池化,执行最大池化输出的是2*2矩阵。输出中的每个元素都是对应输入位置的最大元素。这就像应用了一个2*2的过滤器,步长为2.这就是池化层的超参数:f=2,s=2,其效果相当于高度和宽度缩小一半。这就是对最大池化功能的直观理解。你可以把这4*4的输入看做是某种特征的集合,数字大意味着提取了某些特定特征。左上限具有这个 特征可能是垂直边缘,或者其他的特征。然而右上限并不具备这个特征。所以最大化操作的功能就是只要在任何一个象限内提取到某个特征。它都会保存到最大池化的输出里。所以其实际功能是如果过滤器提取到某个特征,那么保留最大值。如果没有提取到这个特征,那么值就是很小,这就是对最大池化的直观理解。但是必须承认,人们愿意利用池化层的原因是此法在很多实验中效果都很好,但是不知道大家是否真正理解其有用的原因。一个最有意思的特点是它有一组超参数,但是并没有什么参数要学习。实际上对于梯度下降并没有什么可学的。一旦确定了f和s,那么它就是一个固定运算。
这里写图片描述
之前用于卷积层的计算也适用于池化层,也有f,s, 也可以计算输出。如果输入是三维的,那么输出也是三维的。计算池化层的方法就是对每一个通道分别进行计算。
还有另外一种类型的池化-平均池化,不过不经常使用。顾名思义,过滤器选取的是平均值而不是最大值。
这里写图片描述

卷积神经网络示例

这个例子使用的网络和经典网络Le-Net5非常相似,其灵感也来源于此,它是由Yan LeCun创建的。在卷积网络文献中,卷积有两种分类,这与所谓层的划分具有一致性。一类卷积是一个卷积层和一个池化层作为一层,另一类卷积是把卷积层作为一层把池化层作为另一层。人们在计算神经网络具有多少层时,通常只是统计具有权重和参数的层,因为池化层没有权重和参数,只有一些超参数。因此,我们把CONV1和POOL1作为1层,并记为layer1。虽然在阅读文献时可能会看到分成2层的情况,这只是不同的标记术语而已。
这里写图片描述
这个例子中有2个卷积层,然后加了2个全连接层,最后加了一个softmax层。这个例子中的卷积神经网络很典型,看上去它有很多超参数,关于如何选定这些超参数,常规做法是尽量不要自己设置超参数,而是查看文献中别人设置了哪些超参数,选一个在别人任务中效果较好的架构,那么它也有可能适用你自己的应用程序。随着神经网络的加深,高度和宽度都会减少,信道数量 会增加,然后得到一个全连接层。在神经网络中,另一种常见模式就是一个或多个卷积层后面跟随一个池化层,然后在是一个或多个卷积层后面跟随一个池化层,然后是几个全连接层,最后是softmax层。
关于神经网络的激活值形状(activation shape),激活值大小和参数数量。对于输入为32*32*3,这些数做乘法,结果为3072。那么激活值a[0]有3072维,激活值矩阵为32*32*3,输入层没有参数。有几点要注意,第一,池化层和最大池化层没有参数。第二,卷积层的参数相对较少。其实许多参数都存在于全连接层。观察可发现,随着神经网络深度的加深,激活值会逐渐变小,如果下降太快也会影响性能。许多神经网络都有这样一种属性。
这里写图片描述
一个卷积神经网络包括卷积层,池化层和全连接层。许多计算机视觉正在探索如何把这些基本模块整合起来,构建高效的神经网络。整合这些基本模块确实需要深入的理解和感觉。根据Adrew Ng的经验,最好的方法就是大量阅读别人的案例。

为什么使用卷积

和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接。还是上一节的例子,给定32*32*3的输入,使用6个f=5的过滤器,得到28*28*6的输出,如果采用全连接层,那么参数数量会高达32*32*3*28*28*6≈1400万个参数,所以要训练的参数有很多。而采用过滤器,参数一共有(5*5+1)*6=156.卷积网络映射这么少的参数有2个原因,
一是参数共享(parameter sharing)。观察可以发现,特征检测如垂直特征检测如果适用于图片的某个区域,那么他也可能适用于图片的其他区域。二是使用稀疏连接(sparsity of connections)。例如每个输出值只与36个输入特征的9个特征相连接,而且其他像素值都不会对输出产生任何影响。神经网络用这两种机制来减少参数,以便我们用更少的训练集来训练它从而预防过拟合。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u010132497/article/details/80008206