CNN

2023-07-12

CNN(Convolutional Neural Network)

CNN(卷积神经网络)是深度学习的其中一种model。
介绍它从一个例子开始。
我们要对一张固定大小(以100* 100为例) ,其他大小的图片(例如500500)在放入前需要进行裁剪(变成100 * 100)再继续处理。
彩色图片一般都是RGB,所以图片一共有3
100*100个参数。
按照先前学过的Deep Learning的方法,使用全连接。
那么这个模型的参数就相当大了。训练起来很耗时,而且全连接造成参数过多,容易过拟合。
那么如何化简,提高效率,还能提高精度呢?

1. 每个neuron看图片的一个部分

基于人类对图片的观察,人类从图片中的特征(比如鸟嘴,鸟眼)等等,判断出图片里描绘的是鸟。

所以让一个neuron只看图片里的一部分就行了
常规做法如下图所示。
从图中可以看出,一个图片的位置由多个neurons共同查看。并且各个监控的特征区域有重叠部分,这也是为了提高精度。

2. Parameter shaving

基于人类对图片的观察,一个特征(比如鸟嘴,鸟眼)会出现在一个图片的各个位置。所以每个特征的neuron采用的是相同的权重。

Convolutional Layer

卷积层如下图所示

3. Polling

这也是基于人类的观察,一张鸟图,即使缩小了,你也能看出它是鸟
这就是所谓的Polling的由来。
如下图所示。
在你用Convolutional Layer得到了一个结果,你可以任意做裁剪(比如上图中就是4个特征中需选取最大的特征保留)结果如下图所示

Whole CNN

值得一提的是,其实POOLING可用可不用

CNN的缺陷

同样是100*100的图片,如果放大后,CNN可能识别不出同一个狗。
为了解决这个问题,我们需要做的是训练时,把一张图片做放大/缩小/旋转后,再放进训练集中进行训练