吴恩达深度学习笔记10-Course4-Week1【卷积神经网络】

卷积神经网络(Convolutional Neural Networks)


一、计算机视觉(Computer Vision)

计算机视觉处理的输入都是图片。当图片尺寸比较小时,可以采用深度神经网络的结构来解决问题。但在现实中我们需要处理的图片尺寸通常比较大,如:500万像素、800万像素。这时输入数据将变得很大,使用神经网络结构将会有非常多的参数需要去学习,不仅很难训练,而且数据集不够大时很容易出现过拟合的问题。

例如:输入为1000x1000的RGB图片即3百万(million)个特征,设第一层隐藏层有1000个unit,这时第一层需要学习的参数有30亿个,明显不合理。而卷积神经网络就能很好的解决这一问题。
这里写图片描述


二、边缘检测(Edge Detection )

二维卷积:
知乎上有一篇关于 理解卷积 的文章,可以参考一下。

一个大矩阵–图像,一个小矩阵–滤波器(filter)/ 卷积核(kenel)。滤波器在图像上有规律的滑动,滤波器的每个元素与对于的图像区域的每个元素进行相乘然后相加,即得到图像上该区域中心坐标点的值,最终得到一个新的矩阵。
这里写图片描述
node:

  • filer的尺寸一般为奇数,方便得到中心点。一般选:1x1, 3x3, 5x5
  • 在数学上的卷积要把滤波器同时水平垂直旋转后再进行计算,图像卷积更准确的名称是互相关(cross-correlation),但是惯例上我们把它叫做卷积。

边缘检测
边缘检测就是利用边缘检测的滤波器与图像进行卷积,得到包含边缘信息的矩阵。下图是两种竖直边缘检测滤波器和的计算原理,第一种是明到暗计算结果为正数,第二种是暗到明计算结果为负数。
这里写图片描述
竖直边缘检测滤波器旋转90°可得到水平边缘检测滤波器。

多种竖直边缘检测滤波器:sobel,scharr
这里写图片描述
这些滤波器的参数值都是人为设置的,不一定很好。而且如果想检测45°,30°的边缘参数值怎么设置呢?我们可以让神经网络来学习这些参数,其实这就是卷积神经网络最主要的思想。


三、填充(Padding)

Padding:
其实就是在原图像上向外填充像素,填充一层纵向和横向都增加两个像素。填充层数p,滤波器尺寸 fxf,图像尺寸 nxn。填充完图像的尺寸为 (n+2p)×(n+2p)。卷积运算后的尺寸为 (n+2p−f+1)×(n+2p−f+1) 。
这里写图片描述

Padding的作用:
因为每次卷积操作,图片的尺寸都会缩小,这样角落和边缘位置的像素进行卷积运算的次数少,可能会丢失有用信息。添加padding可以一定程度上减小这种缺点。

两种padding:Valid / Same
Valid:p=0,即没有padding。n×n的矩阵得到 (n−f+1)×(n−f+1) 的矩阵
Same:p=(f−1) / 2,即输入与输出矩阵的大小相同。卷积计算时,因为filter一般为奇数,所以p的值也为奇数。


四、跨步的卷积(Strided Convolutions)

步长(Stride): filter在图像上向右向下移动的步长,即一次移动几个像素。
这里写图片描述
计算公式:因为有可能会越界,所以要向下取整。
这里写图片描述


五、立体/三维卷积(Convolutions Over Volume)

立体卷积: 滤波器的通道(channel)和图像的通道一致,然后进行立体的卷积。得到通道为1的结果矩阵。
这里写图片描述

多个立体滤波器
如果同时想检测多种特征,可以用多个立体滤波器进行卷积,然后把结果堆叠起来。所以结果矩阵的通道数为立体滤波器的个数,而与单个滤波器的尺寸无关。
这里写图片描述


六、单层卷积网络(One Layer of a Convolutional Network)

一层的卷积网络:
每个立体filter只有一个bias参数。前向传播时对每个卷积结果进行线性运算,然后进行非线性激活。
这里写图片描述

本文使用的notations: 对于第l层
这里写图片描述

多层的CNN例子
这里写图片描述


七、池化层(Pooling Layers)

最大池化(Max pooling):
取每一个区域的最大值,只有超参数,没有参数。可以设置区域尺寸和步长。
以 f=2, p=2 为例:
这里写图片描述

平均池化(Average pooling):
与最大池化层的区别在于,平均池化是取各区域的平均值。

池化层的超参数:

  • f:filter的大小;
  • s:stride大小;
  • 选择最大池化还是平均池化,通常用最大池化;
  • p:padding,正常不使用即p=0。

八、卷积神经网络例子

例子: Input >> Conv >> Pool >> Conv >> Pool >> FC >> FC >> FC >> softmax。FC(Fully Connected): 全连接层
通常我们把一个卷积层和一个池化层看作是一层。因为只有卷积层包含网络参数。
这里写图片描述

CNN各层的尺寸和参数:
搭建CNN时,每层的激活值个数应该是均匀的下降,不能下降的太快或跳变。
这里写图片描述
总结,在卷积层仅有少量的参数。在池化层没有参数。在全连接层存在大量的参数。


九、卷积神经网络的理解

卷积神经网络如何减少参数:

卷积神经网络为什么能有效的减小参数的个数,从而防止过拟合。

  • 参数共享:一个滤波器的参数,适用于图片中各个小区域。
  • 稀疏连接:只需要图像中一小部分元素来计算结果矩阵中的各个元素值,
    这里写图片描述
    CNN还有平移不变的特性:即使图片有轻微的平移,滤波器还是能较好的检测出特征。

搭建卷积神经网络

数据集 >> 网络结构 >> 成本函数 >> 梯度下降
这里写图片描述


猜你喜欢

转载自blog.csdn.net/wang_jiankun/article/details/80305864