卷积神经网络的训练

卷积神经网络的训练
在上一篇博客中,介绍了卷积神经网络的相关知识,这一节就来介绍卷积神经网络的相关训练方法。由于涉及到各种公式所以部分用手写的方式(字写得不好见谅)。
之前提到过,和全连接神经网络相比,卷积神经网络的训练要复杂一些。但是训练的原理是一样的:
利用链式求导计算loss函数对每个权重的偏导数(梯度),然后根据梯度下降公式更新权重。训练的算法仍然是BP算法。
再复习下BP算法:(这里我涉及到很多公式及其推导,所以我就直接贴我之前写的word文档的图片)
卷积神经网络的训练
卷积神经网络的训练
卷积神经网络的训练
卷积神经网络的训练
卷积神经网络的训练
卷积神经网络的训练
卷积神经网络的训练
总结一下就是:
卷积神经网络的训练
对于卷积神经网络,由于涉及到局部连接、下采样等操作影响到了第二步误差项的具体计算方式,而权值共享影响了第三步权重梯度的计算方式。接下来,分别介绍卷积层和池话层的训练算法。

卷积层误差项的传递

最简单情况下误差项的传递

考虑步长为1、输入图像的深度为1、filter的个数为1的最简单的情况。
假设 我们输入的大小为3x3、filter大小为2x2,按步长为1来进行卷积,可知我们将得到的是一个2x2的Feature Map。如下图:(后面的步骤一定要结合图看才容易懂一点)
卷积神经网络的训练
在上图中:
卷积神经网络的训练
卷积神经网络的训练
卷积神经网络的训练
通过推导,我们不难发现,计算卷积神经网络的训练 就相当于把第L层的Sensitive Map(误差项映射)周围补一圈0,然后将filter旋转180度之后进行cross-correlation(互相关),就可以得到结果。图大致可以这样表示:
卷积神经网络的训练
对应成卷积公式表达出来就是:
卷积神经网络的训练
上面的 Wl 表示的是第l层filter的权重数组。展开的话,公式为:
卷积神经网络的训练
接下来我们就求第二项
卷积神经网络的训练
由于比较简单我就简单敲了。
由于:卷积神经网络的训练
所以我们仅求**函数的导数就行了:卷积神经网络的训练
最后我们将一二项结合起来得到终公式就为:
卷积神经网络的训练
简化一下为卷积形式就是:
卷积神经网络的训练
其中圆圈符号表示,将矩阵中的每个对应元素相乘。
以上就是在误差传递中步长为1、输入的深度为1、filter个数为1最简单的情况。
接下来我们逐一的讨论一般情况。
利用类推思想我们来看一下当步长不为1的情况。我们设步长为S。

卷积步长为S的误差传递

之前我们也了解了步长的概念,所以步长为1和步长为S的区别我们就不难想到:
卷积神经网络的训练
我们可以看出,因为步长为2,得到的feature map跳过了步长为1时相应的部分。因此,当我们反向计算误差项时,我们可以对步长为S的sensitivity map相应的位置进行补0,将其还原成步长为1时的sensitivity map,最后再用公式进行求解。

输入层深度为D时的误差传递

当输入深度为D时,filter的深度也必须为D,l-1层的di通道只与filter的di通道的权重进行计算。因此,反向计算误差项时,我们可以使用公式,用filter的第di通道权重对第l层sensitivity map进行卷积,得到第l-1层di通道的sensitivity map。如下图所示:
卷积神经网络的训练

filter数量为N时的误差传递

filter数量为N时,输出层的深度也为N,第i个filter卷积产生输出层的第i个feature map。由于第l-1层每个 加权输入 netl−1d,i,j都同时影响了第l层所有feature map的输出值,因此,反向计算误差项时,需要使用全导数公式。也就是,我们先使用第d个filter对第l层相应的第d个sensitivity map进行卷积,得到一组N个l-1层的偏sensitivity map。依次用每个filter做这种卷积,就得到D组偏sensitivity map。最后在各组之间将N个偏sensitivity map 按元素相加,得到最终的N个l-1层的sensitivity map:
卷积神经网络的训练

卷积层filter权重梯度的计算

由于上面的BP算法已经详细复习介绍了,这里权重的更新就不再赘述了。

Pooling(池化)层的训练和误差传递

Pooling层的训练

根据池化层的概念和性质,无论是 max pooling 还是 mean pooling,都没有我们需要学习的参数。因此,在卷积神经网络的训练中,pooling层需要做的仅仅就是将误差项传递到上一层,从而没用梯度的计算。

Pooling层的误差传递

这里我们以Max Pooing为例子。
Max Pooling的误差传递
如下图:
我们假设第l-1层大小为44,pooling filter大小为22,步长为2,这样,max pooling之后,第l层大小为2*2。假设第l层的δ值都已经计算完了,我们现在的要做的就是计算第l-1层的δ值。
卷积神经网络的训练
根据性质,只有区块中最大的值才会对相应其他值产生影响。
也就是说上面的图可以简化成:
卷积神经网络的训练
同理,根据Mean Pooling的性质,我们不难知道,下一层的误差项的值会平均分配到上一层对应区块的所有神经元当中。