台大李宏毅--CNN
CNN与普通深度学习(全网络连接 )的很大区别就是:CNN是关注图片的一小部分,一小部分的。而普通深度学习是把图像的每一个像素全部拉长,都作为输入。
一:CNN整体流程
1. CNN – Convolution
CNN 的Convolution与 普通DNN (Fully Connected )的异同
**由上面的三个图可以看见,CNN的卷积过程,其实就是 普通DNN 训练模型的过程。
不同点是:
1. 若把CNN的卷积理解DNN,那么训练时,相当于每次仅仅选出 个输入元素,而普通DNN一般是个输入元素(即所有输入元素都用)。
(这里n是Filter矩阵的维度,m是输入的image矩阵的维度)
2. 若把CNN的卷积理解DNN,那么DNN有很多的权重值都要保持一致(即是共享的)。如上面最后一张图。颜色相同的线,就表明那里的元素要保持一致。**
2. CNN – – Max Pooling
3. CNN – – Flatten
二:CNN代码实现
三:为什么CNN比普通DNN(Fully Connected)要好
1. 参数少
根据是上面已经讲解的内容,CNN其实可以理解为是:简化版本的DNN(Fully Connected)
但是CNN的不同点就在于,
1. CNN的参数少
如上图,下一层一个神经元其实只取上一层的个神经元(n是Filter的行数),而DNN要使用上一层所有的神经元。(还有其他地方都显示的CNN参数少)
2. . 下一层每一个神经元之间其实共用的权重(上面已讲)
2. 同一内容,只用一个神经元处理即可。哪怕在图片中,该内容在其他地方。The same patterns appear in different regions.
3. Subsampling the pixels will not change the object
4. Some patterns are much smaller than the whole image
考虑每个神经元主要对图像哪方面进行分类?(Which image make the a specific neuron active?)
- 对于第一层神经元,可以直接观察它对每一个图像的选择,就可以确定出该神经元偏好于哪方面的图像。
- 对于高层的神经元