深度学习专项课程(4)(第一周)

深度学习专项课程(4)(第一周)

本周介绍了卷积神经网络的基本概念

边缘检测&卷积基本概念

卷积运算是卷积神经网络最基本的组成部分,接下来通过边缘检测的案例来看看卷积是如何进行计算的。

dl_49.png

我们想要检测上图中物体的轮廓,为了简单起见我们先从垂直和水平的栅栏边缘开始。

下图左边是一个 6 x 6 的灰度图像(灰度图像只有两个维度,我们常见的 RGB 图像有三个维度)。中间是一个 3 x 3 的矩阵,称为过滤器或是卷积核,过滤器和左边图像之间的 * 号代表卷积操作。卷积的基本步骤是使用过滤器扫描图像的矩阵,将图像矩阵的值和过滤器上对应位的数字相乘并求和,最后将结果填入矩阵中。
可以看到,下图的右边是执行卷积操作之后的结果,成功实现了提取灰度图像垂直边缘的操作。
如果想检测水平边缘的话,可以将过滤器的参数旋转90度便可实现。

dl_50.png

过滤器的参数也需要进行学习,对于它的初始参数我们可以设置为文献中常用的值。

dl_51.png

卷积的步长也是一个基本的卷积操作。下图中将卷积的步长设为 2 ,这样过滤器在扫描图像矩阵的时候每次将移动两个单位。有时候因会出现过滤器移动到矩阵外面的情况,这是便不进行计算,我们只有在过滤器完全包含在矩阵中时才进行计算。

过滤器的尺寸通常是奇数,这可能有两个原因:一是因为奇数的过滤器可以在 padding 操作中进行对称的填充。二是因为奇数的过滤器会有一个中心点,这样就可以准确的指出过滤器的位置。

dl_52.png

Padding

为了搭建一个卷积神经网络,需要用到的基本的卷积操作还有就是 padding 。

在卷积的操作中会出现两个问题,第一个问题是如果我们对图片进行了多次的卷积操作,那么不能避免的是生成的矩阵会越来越小,这是我们不想看到的。第二个问题是图片边缘信息的缺失。比如说矩阵四个顶角的数字在卷积的操作中只被计算了一次,而中间的数字则会被计算多次。

为了解决这两个问题就有了 padding 操作。基本思想就是在原图像的边缘填充像素,习惯上我们使用 0 来填充。这样就解决了这两个问题。

dl_53.png

至于填充多少个像素通常有两个选择,valid 卷积same 卷积
valid 卷积是指不进行填充,而same 卷积 是指填充后进行卷积操作得到的矩阵与输入的矩阵尺寸相同。

对维度的总结

下图中上面是输入的参数,下面是卷积操作后输出的参数。

dl_54.png

三维卷积

灰度图像只有两个维度,而我们常见的RGB图像有三个维度,这时我们需要进行三维卷积。

随着图像维度的增加,相应的,过滤器的维度也增加,并且过滤器第三个维度的值应与图像第三个维度的值相等。

卷积的方法与在二维的情况下类似,我们将过滤器不同的通道与图像不同的通道(第三维称之为通道)对应,再相乘求和得到一个值,再使用过滤器依次扫描整个图像便可得到最终的结果。

如果只使用一个过滤器,卷积后的结果仍是一个二维的矩阵。如果使用两个过滤器将得到两个二维的矩阵,将其叠加起来就能得到一个三维的结果。使用多个过滤器的目的是为了提取多个不同的特征。

dl_55.png

单层卷积网络

如图所示,这是一个卷积层。这里使用了两个过滤器。我们将过滤器卷积之后的矩阵用类似 python 广播的方式加上偏置值 b ,再将矩阵放入 ReLU 激活函数中,最后输出一个 4 x 4 的矩阵。因为使用了两个滤波器,把这两个滤波器最后输出的矩阵堆叠起来就得到了一个 4 x 4 x 2 的矩阵,这也是这个卷积层输出的最后结果。

dl_56.png

这里用到了很多的符号,我们来总结一下这些符号的含义:

dl_57.png

池化层

除了使用卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度同时提高所提取特征的鲁棒性。

如下图,池化的操作是将图像按照给定的矩阵分割成不同的区域,再取每个区域中最大的值填入给定的矩阵。这里执行的是最大池化,所以取最大值。相对的,还有平均池化,顾名思义,就是取区域内所有值的平均值填入其中。
这里的池化参数:过滤器 f 大小是 2 , 步长 s = 2。这样设置的参数效果相当于将输入的高度和宽度减少一半。

dl_58.png

卷积神经网络实例

dl_59.png

上图是一个卷积神经网络的实例,其目的是去识别手写数字。

网络的输入是 32 x 32 x 3 的 RGB 图像,经过两个卷积层(每一层包括卷积和池化两个操作,因为只有卷积操作才有权重参数,故我们将两个操作合起来称为一层),再经过两个全连接层,一个 softmax 层,最后的输出为 0-9 10个数字。

网络中的参数变化:

activation shape activation size # parameters
input (32,32,3) 3072 0
CONV1(f=5,s=1) (28,28,8) 6272 208
POOL1 (14,14,8) 1568 0
CONV2(f=2,s=1) (10,10,16) 1600 416
POOL2 (5,5,16) 400 0
FC3 (120,1) 120 48001
FC4 (84,1) 84 10081
Sofmax (10,1) 10 841

为什么使用卷积

  • 参数共享 一个特征检测器(如垂直边缘检测器)如果在图片的一部分区域有用,那么大概率在其他部分也是有用的。
  • 稀疏连接 每一层中的输出值的数量只占了输入的一小部分。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×