台大李宏毅--CNN

CNN与普通深度学习(全网络连接 )的很大区别就是:CNN是关注图片的一小部分,一小部分的。而普通深度学习是把图像的每一个像素全部拉长,都作为输入。

一:CNN整体流程

台大李宏毅--CNN

1. CNN – Convolution

台大李宏毅--CNN
台大李宏毅--CNN
台大李宏毅--CNN
台大李宏毅--CNN

CNN 的Convolution与 普通DNN (Fully Connected )的异同

台大李宏毅--CNN
台大李宏毅--CNN
**由上面的三个图可以看见,CNN的卷积过程,其实就是 普通DNN 训练模型的过程。
不同点是:
1. 若把CNN的卷积理解DNN,那么训练时,相当于每次仅仅选出nn=n2 个输入元素,而普通DNN一般是mm=m2个输入元素(即所有输入元素都用)。
(这里n是Filter矩阵的维度,m是输入的image矩阵的维度)
2. 若把CNN的卷积理解DNN,那么DNN有很多的权重值都要保持一致(即是共享的)。如上面最后一张图。颜色相同的线,就表明那里的元素要保持一致。**

2. CNN – – Max Pooling

台大李宏毅--CNN
台大李宏毅--CNN

3. CNN – – Flatten

台大李宏毅--CNN

二:CNN代码实现

台大李宏毅--CNN

三:为什么CNN比普通DNN(Fully Connected)要好

1. 参数少

台大李宏毅--CNN
根据是上面已经讲解的内容,CNN其实可以理解为是:简化版本的DNN(Fully Connected)
但是CNN的不同点就在于,
1. CNN的参数少
如上图,下一层一个神经元其实只取上一层的n2个神经元(n是Filter的行数),而DNN要使用上一层所有的神经元。(还有其他地方都显示的CNN参数少)
2. . 下一层每一个神经元之间其实共用的权重(上面已讲)

2. 同一内容,只用一个神经元处理即可。哪怕在图片中,该内容在其他地方。The same patterns appear in different regions.

台大李宏毅--CNN

3. Subsampling the pixels will not change the object

台大李宏毅--CNN

4. Some patterns are much smaller than the whole image

台大李宏毅--CNN

考虑每个神经元主要对图像哪方面进行分类?(Which image make the a specific neuron active?)

  1. 对于第一层神经元,可以直接观察它对每一个图像的选择,就可以确定出该神经元偏好于哪方面的图像。
    台大李宏毅--CNN
  2. 对于高层的神经元
    台大李宏毅--CNN