第3.1章 卷积神经网络(CNN)-1

一、背景

   在机器学习大热的前景之下,计算机视觉(Computer Vision)、自然语言处理(Natural Language Process,NLP)、语音识别(Speech Recognition)并列为机器学习方向的三大热点方向。
   计算机视觉(Computer Vision)包括:图像分类(Image Classification)、目标检测(Object Detection)、风格迁移(Neural Style Transfer)、语义分割(Semantic Segmentation)等。

二、引入卷积神经网络的原因

   在计算机视觉领域,需要处理大量图像数据。假设一张小图像包含的数据量为1000×1000×3(rgb,3通道),如果把这些数据直接作为神经网络的输入层,将会导致输入层单元非常多,从而导致计算量非常大(假设隐藏层单元有1000个,则输入层和第二层之间的权重向量的大小为3,000,000×1000)。有这么多的参数,我们很难获得足够的数据以避免神经网络过拟合;同时,训练一个有这么多参数的神经网络,对计算量和内存的需求相当大。所以为了能在计算机视觉中尽情地使用任意大小图像,基于卷积运算的卷积神经网络(Convelutional Neural Network)出现了。


   CNN是如何减少参数的呢?
   先简单解释一下。相比于把整个图像所含的数据直接作为输入层数据的方法,CNN中的参数只有卷积核中的参数,还可以算上偏置(bias)这一个参数。就算我们把卷积核的大小设定为原始图像的大小(1000×1000×3),参数数目也是少于全连接网络的(3,000,000×1000)。当然我们不会设的那么大,所以CNN的参数数目确实是大大减少了。


三、“卷积”的概念

   “卷积”是卷积神经网络的核心,关于卷积神经网络中卷积的运算方法参见深入学习卷积神经网络(CNN)的原理知识中的“3.4 卷积(convolution)”
在这里插入图片描述
   我们通过上图解释一下几个概念:上图中一个3×3的小单元格叫做一个过滤器(filter);每一行代表一个卷积运算过程,即一个卷积层。
   1)过滤器的种类
   CNN中有好多不同种类的过滤器,如Sobel过滤器、Scharr过滤器等。我们可以通过选用不同种类的过滤器来指定过滤器的值,也可以用CNN来习得过滤器中的值。

   2)过滤器的大小
   过滤器的大小是不确定的,可以是3×3、5×5、7×7等,但大多都是奇数。原因之一是奇数大小的过滤器有一个中心位置(可以称之为中心像素),这样就可以描述过滤器的位置。还有一个原因和计算output layer的大小有关。当然,如果使用偶数大小的过滤器也没有关系,不过大家都习惯用奇数的而已。

   3)过滤器中值的意义
   如下图所示,请注意用红色圆圈圈起来的部分。原始图像通过过滤器,将过滤器希望提取的特征提取出来了。
   首先需要知道,图中“1”表示白色亮度,“-1”表示黑色亮度,介于两者之间数值的亮度递减。比如第一个,过滤器的主对角线是1,最后得到的图像,显然在主对角线上的亮度明显高于其他地方。
在这里插入图片描述


   读完上面,我们再来解释一下CNN是如何减少参数的:

  1. 参数共享
       相比全连接网络一个参数对应一个数据特征,卷积网络中过滤器与特征之间不是一一对应的,实现了参数共享。
  2. 稀疏连接(感受野。对比全连接理解)
       原始图像与过滤器进行卷积运算后得到的那一个值,只与原始图像上参与运算的那一个矩形区域有关,和其他部分无关。

四、基本的卷积操作的改进

   1.padding

  • 使用padding的原因:
       1)由上图可以看到,每经过一次过滤,图像就会变小。
       2)对于原始图像四个顶点部分的数据,只会被一个过滤器使用,导致边缘信息丢失。
      因此,在卷积操作之前,先在原始图像边缘进行像素填充,像素值可以是0也可以是图像边缘像素,填充宽度为p,p的值大于等于1即可。如下图,灰色部分是填充部分:
  • 填充多少合适? 两个常见的选择:valid卷积和same卷积
      same卷积:选择的填充将使得输出大小等于输入大小
      valid卷积:不填充

   2.stride

  卷积上下左右移动的步长,如下图。上面是步长为1,下面是步长为2。

五、卷积网络中三种类型的层

   1.Convolution(CONV)

   之前介绍的进行卷积操作的一个过程就是一个卷积层。

   2.Pooling(POOL)

  • 作用
       Andrew Ng 对池化层的作用是这样解释的:“ConvNets often also use pooling layers to reduce the size of the representation, to speed the computation, as well as make some of the features that detects a bit more robust”。即减小图像大小、加速计算、使其检测出的特征更加健壮。
  • 参数
       没有参数(parameters)需要学习!但是有超参数(hyperparameters):过滤器大小(f)和步长(s),一般取f=2,s=2。
  • 种类:Max Pooling、Average Pooling
  • 运算方法:参见深入学习卷积神经网络(CNN)的原理知识中的“3.5 池化(Pooling)”

   3.Fully Connected(FC)

  把最后得到的池化层中的所有参数全部排列成一个列向量,形成全连接层,用于进行分类。

六、一个简单的CNN的结构图

在这里插入图片描述
其中,卷积层、池化层作为一个整体可以循环有多层,全连接层可可以有多层。

来源:coursera----Andrew Ng----Converlutional Neural Networks

原创文章 35 获赞 17 访问量 7842

猜你喜欢

转载自blog.csdn.net/dear_jing/article/details/102786588
今日推荐