针对于图像识别中常用的CNN,其原理中的卷积层和池化层是最让人不好理解的。在看完各位大佬的解释后,小弟趁热打铁把目前的理解做个简单的总结。
以下纯属个人理解,如有错误,请指正。
卷积:通过filter在输入矩阵中按照一定步长(stride)去无间隙的扫描。
拿图像处理为例,出去常见的二维平面,增加了一个深度(depth)的维度,其中深度可以理解为三维平面。filter的深度必须与输入样本是一致的,就像三维中的3个平面,filter就是三位中的对应不同层面的。由于在扫描过程中,矩阵中间的元素被扫描到的概率会更大一些,所以为了平衡边缘元素被扫描到的概率,所以增加了一个pad概念,即在整个矩阵外围增加一圈0,pad=n, 就增加n全0。卷积层在整个卷积神经网络中可以有多个。最终经过卷积层输出的结果的深度就是filter的个数。那么数据结果的尺寸又是多大呢?如下:
通过整个卷积过程,可以将卷积的操作理解为对输入样本的特征提取和一定程度上的降维。即卷积就是上采样
池化(Pooling):池化的过程是一种降维压缩的过程
在池化filter下,根据设定的Pooling方式来对扫描的区域进行降维,常用的是Max和Mean,经过扫描后,提取扫描区域中的max或者mean,这是前向反馈。
在反向传播过程中,Pooling层会将残差按照Pooling方式将残差传入对应的矩阵位置。如果当时选择的Max,则会将残差传入当时Max的矩阵位置;如果是mean,Pooling会将残差取mean,然后传入矩阵每一个位置。