9. 卷积神经⽹络-CNN 的基本原理

典型的 CNN 由3个部分构成:

  1. 卷积层
  2. 池化层
  3. 全连接层

如果简单来描述的话:卷积层负责提取图像中的局部特征;池化层⽤来⼤幅降低参数量级(降维);全连接层类似传统神经⽹络的部分,⽤来输出想要的结果。

卷积——提取特征

卷积层的运算过程如下图,⽤⼀个卷积核扫完整张图⽚:

这个过程我们可以理解为我们使⽤⼀个过滤器(卷积核)来过滤图像的各个⼩区域,从⽽得到这些⼩区域的特征值。

在具体应⽤中,往往有多个卷积核,可以认为,每个卷积核代表了⼀种图像模式,如果某个图像块与此卷积核卷积出的值⼤,则认为此图像块⼗分接近于此卷积核。如果我们设计了6个卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们⽤6中基础模式就能描绘出⼀副图像。以下就是25种不同的卷积核的示例:

总结:卷积层的通过卷积核的过滤提取出图⽚中局部的特征,跟上⾯提到的⼈类视觉的特征提取类似。

池化层(下采样)——数据降维,避免过拟合

池化层简单说就是下采样,他可以⼤⼤降低数据的维度。其过程如下:

上图中,我们可以看到,原始图⽚是20×20的,我们对其进⾏下采样,采样窗⼝为10×10,最终将其下采样成为⼀个2×2⼤⼩的特征图。

之所以这么做的原因,是因为即使做完了卷积,图像仍然很⼤(因为卷积核⽐较⼩),所以为了降低数据维度,就进⾏下采样。

总结:池化层相⽐卷积层可以更有效的降低数据维度,这么做不但可以⼤⼤减少运算量,还可以有效的避免过拟合。

全连接层——输出结果

这个部分就是最后⼀步了,经过卷积层和池化层处理过的数据输⼊到全连接层,得到最终想要的结果。

经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太⼤,计算成本⾼,效率低下。

典型的 CNN 并⾮只是上⾯提到的3层结构,⽽是多层结构,例如 LeNet-5 的结构就如下图所示:

卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层

在了解了 CNN 的基本原理后,我们重点说⼀下 CNN 的实际应⽤有哪些。