CNN:两种理解方式:
第一种理解方式:
第一种简化方法:设置感受野(Receptive Field)
一张图片是一个三维的张量(宽,高,3个chanel)。
一个神经元不需要看完整的图片,只需要看一小部分就可以了(比如说只需要关注鸟嘴,鸟的眼睛…),每一个神经元只考虑自己的感受野(receptive field)就好了。
一般图像的设置如下图,
- 因为在图像里会看全部的chanels,所以讲kernel size(卷积核)的时候只看高×宽(3×3)就好了
- 同一个感受野会有一组神经元去观察注意,比如64或者128个
- 希望不同感受野之间有高度的重叠
- 感受野覆盖整个图片
第二种简化方法:共享参数(Parameter Sharing)
比如说都要检测鸟嘴,但在两张图片里鸟嘴出现在不同的位置,其实每个位置都有负责整个感受野的神经元,但是这两个神经元相当于做的事情一样了。所以希望不同感受野的神经元可以共享参数,所以可以让这两个神经元的weight(权重)一样。
一般设置:
每一个感受野有一组神经元去观察注意,比方说64个神经元。那么第一个感受野的第一个神经元跟第二个感受野的第二个神经元共享参数(filter)
Receptive Field + Parameter Sharing =Convolutional Layer
第二种理解方式:
卷积层就是里面有很多的filter,这些filter的大小是3×3×channel tensor,每个filter的作用就是去图片里边抓取一个pattern,假设filter里边的数值已知(其实这些数值就是model的参数,按理说是未知的,需要通过梯度下降找出来)
如上图所示,用橙色的filter去跟图像卷积,得到右下角橘色的,用蓝色的filter去跟图像做同样的操作,得到右下角蓝色的,如果有64个filter,那么就得到一个4×4×64的fature map(64组4×4的数字),可以把feature map看作另外一张图片,这个图片的channel是64(如果想在这个图片的基础上继续卷积的话,filter的高度就得是前一个卷积层的filter