ML From Hung Yi Lee --- CNN #9
CNN (卷积神经网络)
为什么卷积神经网络可以用于图片
- 最初使用全连接神经网络,每一层使用前文的模块化思想,获得不同的图片信息,然后逐步深入,最后识别出来。
- 不同的神经元区块化侦测元素
- 相同的事物,不同的位置,使用相同的参数
- 图片的放缩对图片对识别效果并无太大影响
Convolution
- 使用一个filter侦测不同的pattern,每次使用内积然后记录下来,告诉哪些pattern出现了,如上述的3表明有对角线出现了,这就是一个模式发现的过程,使用不同的filter发现不同的pattern然后记录下来。内积越大,表明越是相关。
- 对于彩色的问题,rgb是三色的,使用三个不同的filter分别取发现pattern
- 使用非全连接的方式,比如上述第一个连接方式,就是连接1,2,3, 7,8,9,13,14,15,这样就实现了convolution,换下一个就是加步长
Max Pooling
- 池化
- 取区域的最大值,然后就得到了尺寸较小的图片
- 最后输入到一个全连接空间中输出。
- 输出类别
在Keras实现
- 使用25个filter,每个filter是3x3的大小;
- 输入的为一张灰白的大小为28乘28的图片,然后获取filter之后的feature map
- 然后使用池化,
- 然后看是否继续convolution然后池化??
- 最后得到一个tensor输入到一个全连接神经网络中输出判断。
- 使用池化层缩小图形尺寸
- fliter是多少,就会出现多少个子图,
- 每次的convolution会把整个feature map 作为一个整体然后使用filter对feature map进行操作,这时候的filter的数量就代表着后续的feature map的数量,但是如果遇到下一层的convulsions还是会使用一个filter对所有的feature map组成的三维空间进行filter
- 总结来就一句话,filter并不一定是对平面feature map 操作,而是面向空间的。
CNN到底学到了什么呢?
- filter,不同的filter学到的就是不同角度的线条,是什么角度的线条
- flatten阶段,让所有的neuron全部最大,可视化图片后发现不同神经元兴奋效果不同
- 针对output,可以看到CNN学到的东西并不都是完完全全的我们认为的数字,而是说很不一样的图像。
- 加上l1正则话后惩罚学习多的东西,留下最有价值的部分
可以去学习一下