目录
一、第一种理解方法
1.receptive filed(感受野) stride(滑动距离)
2.共享参数 以及filter
3.只用全链接或者用参数共享和感受野的差别
二、第二种理解方法
1.用filter遍历整张图片
编辑2.feature map
三、两个方法总结
四、最大池化理解
五、根据类型选择是否用卷积层
六、CNN不能处理图片放大缩小或者旋转
现在我们要识别一张猫
固定一张图片的大小作为输入
这个彩色图片有3个channels(RGB)每一个都是100*100把它拉直丢到network里去
但是这样子呢每一个neural接收的参数实在是太多了,我们让每一个neural识别特定的部分
我们设定一个感受野(receptive field )3*3大小这个感受野可以左右上下滑动,滑动距离为stride,当滑出去了就用padding进行填充
这个27维度的向量最为neural的输入。receptive field的大小以及形状都能自定义,并且说同一个receptive filed可能有多个neural守卫
这里有两个neural它们都是侦测鸟嘴的只是守备的范围不一样,那我需要在每个侦测范围都放一个侦测鸟嘴的neural吗,这样做的话会不会参数量过多呢?:
所以我们让这两个neural共享weight参数,这两个neural只是输入不同:
每一个守望野会有很多neurons每一组公用参数的neural就叫做filter:
*当只用全连接时,该模型弹性较大容易overfitting但是有可能适用于公用任务
*当使用感受野和共享参数用卷积层时,加了一些限制,弹性变差,可能会导致model bias但是说呢会让在特定任务上表现更好
另一种解释方法是,卷积层里面有许多filter,大小是3*3*channel,要去里面抓pattern
我们假设是一个黑白图片,一个channel,filter里面的值是未知参数是经过gradient descent计算出来的:
然后进行计算
这个filter就在意的是主对角线上的特征
然后一直算,经历64个filter,就有64堆数字,这个就是feature map,这个feature map你可以看作是一个新的map:
作为下一个卷积层的输入,你可以叠许多卷积层:
这样每一层叠加就会让看到更大的范围在第二层的3*3相当于在第一层更大的范围:
这个就解释了第一个方法里的filters的共用参数是怎么运行的
第一个方法是思想,第二个方法是运行
在图片影像识别中,把大的图片缩小不会影响小的图片是什么
最大池化就是在每个小区域里选一个最大的:
这样就可以减少计算的压力:
影像辨识大概就是这样,经过卷积层把它拉直最后传入全连接神经网络
但是说用池化不一定是好的,你得考虑忽略掉某些东西时会不会有不好的效果。比如说围棋,你拿掉一些横排或者竖排肯定是对局势影响是不同得所以在阿尔法狗中都是full卷积层。
图片识别是观察某一部分特征,而围棋也是观测局部特征,所以可以选择卷积层。
当我们把图片放大时同样得图片机器可能不认识,这时候我们需要数据增强(data augument)。把每张图片截下来放大让cnn看过不同大小的pattern