吴恩达深度学习课程笔记-9

久未见 提交于 2020-02-01 16:26:24

04. 卷积神经网络

第一周 卷积神经网络

1.1 计算机视觉

计算机视觉方向算是深度学习领域发展最快的方向之一,出现了大量富有创造性的工作。

而面对图片处理,首先出现的问题就是数据量巨大,一个1000×1000的RGB图片直接输入神经网络将有1百万的特征,网络的参数也将非常庞大,对于训练、设备内存都是巨大的挑战,所以不能这么干,卷积网络应运而生。

1.2 & 1.3 边缘检测

边缘检测是计算机视觉里一个基本问题,传统的做法是依靠各种手工设计的边缘检测算子,通过与图片进行卷积来检测边缘。

有各种各样的边缘检测算子,哪一种最合适其实众说纷纭。深度学习的观点是,这些卷积核的参数不要再手工设计了,而是当作参数让网络去学习。

1.4 & 1.5 & 1.6 卷积

机器学习中的卷积其实和数学或信号处理中的卷积定义不同,这里的卷积其实应该算是互相关。

卷积之后的图像大小计算公式:

\( \lfloor \frac{n + 2p - f}{s} + 1 \rfloor  \times \lfloor \frac{n + 2p - f}{s} + 1 \rfloor \)

其中卷积核大小(kernel size)或者滤波器(filter)大小 \( f \) 一般为奇数,填充大小(padding)\( p \) 取决于选择的卷积类型:

  • Valid 卷积:不加填充。卷积之后图像越来越小。
  • Same 卷积:使输出图像尺寸和输入图像尺寸一样的填充。

步长(stride)\( s \) 和图像大小\( n \times n \) 如果搭配不凑巧的话,上面的式子可能不能整除,所以要做向下取整。

进一步,我们处理的都是彩色图像,有RGB三个通道(或者说深度depth),因此卷积核要和输入有相同的通道数。例如对200×200×3的图像,采用3×3×3的卷积核进行卷积。一个卷积核其实只能用来提取一种特征,如果要提取多种特征,就要用多个卷积核,每个卷积核的卷积输出都是一个通道,多个输出叠起来就得到最后的输出。

由上图可以看出,卷积核通道数=卷积输入的通道数,卷积输出的通道数=卷积核的数目。

1.7 & 1.8 & 1.9 卷积神经网络

介绍完基本的卷积运算,组合起来就可以组成卷积网络了,以其中一层来说:

先定义一些符号表示:

  • \( f^{[l]} = \text{filter size} \)
  • \( p^{[l]} = \text{padding} \)
  • \( s^{[l]} = \text{stride} \)
  • \( n^{[l]}_C = \text{number of channels} \)

下面计算卷积网络中各种量的尺寸:

  • 输入:\( n^{[l-1]}_H \times n^{[l-1]}_W \times n^{[l-1]}_C \)
  • 输出:\( n^{[l]}_H \times n^{[l]}_W \times n^{[l]}_C \)
  • 卷积核(滤波器):\( f^{[l]} \times f^{[l]} \times n^{[l-1]}_C \)
  • 激活值:\( a^{[l]} \rightarrow n^{[l]}_H \times n^{[l]}_W \times n^{[l]}_C  \)
  • 参数(权重):\( f^{[l]} \times f^{[l]} \times n^{[l-1]}_C \times n^{[l]}_C \)
  • 偏移量:\( n^{[l]}_C \)

其实 \( n^{[l]}_C \) 就等于 \( l \) 层卷积核的数目。

注意参数量计算:\( f^{[l]} \times f^{[l]} \times n^{[l-1]}_C \times n^{[l]}_C + n^{[l]}_C \),所以无论图片有多大,参数量只取决于卷积核的尺寸和数目。

卷积网络除了卷积层,还有池化层和全连接层。

池化层最常用的就是最大池化,超参数包括滤波器尺寸\(f\)和步长\(s\),常用的是\(f=2,s=2\). 不同于卷积运算,输入的每个通道都独立的计算池化,因而输入输出的通道数一定相同。

除了采取最大池化,还可以采用平均池化,顾名思义,就是取平均值,但最大池化用的更多。

池化层没有需要学习的参数,反向传播时也没有要操作的对象。

简单的卷积神经网络如上图,和经典的LeNet-5比较像。每一个卷积层之后跟着一个池化层,可以看到随着卷积层数加深,特征尺寸减小,通道数增多。最后的全连接层是将特征展开成一个长向量后构成的神经网络。

通常在统计卷积网络的层数时,只考虑那些有参数的层,所以池化层的数目可以不考虑,或者将其和卷积层视为一层。

上面这种网络的参数量主要集中在全连接层,卷积层的参数相对较少。

对了,卷积神经网络中有非常多的超参数,这些超参数最好不要自己选择,直接利用学术界最新最好的网络结构就好了。

1.11 为什么使用卷积

两个优势:参数共享和稀疏连接

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!