前言
在深度学习中的参数梯度推导(三)中篇里,我们总结了CNN的BP推导第一步:BP通过池化层时梯度的计算公式。本篇(下篇)则继续推导CNN相关的其他梯度计算公式。
注意:本文默认读者已具备深度学习上的基本知识
3.2
CNN的BP推导

接下来我们要看看误差逆着经过卷积层会发生什么事情。
那么在反向传播时,我们所讨论的是:
下面正式开始。
数学上和CNN上的卷积操作的区别是,卷积核在前者需要翻转180度。
我们先以一个简单的例子说明为啥这里卷积核要翻转,为啥相对于前传的valid convolution,反传要做full convolution。
接着我们模拟反向求导:
这上面9个式子其实可以用一个矩阵卷积的形式表示,即:
一个结论是如果前向传播是valid模式的卷积运算,那么反向传播就需要做full模式的卷积操作。
接着让我们再看一个不寻常的例子2:
对上述式子展开,进行元素级分析:
其中卷积符号代表CNN中的卷积操作,利用该定义,我们得到:
接着我们模拟反向求导过程:
实际我们可以用下面这个卷积运算来表示上面这些海量的偏导数:
如果我们想让stride>1时和stride=1时的结果能得到统一,我认为那么我们可以将stride>1的情况视为是stride=1的特殊情况,例如,stride=2的话,两个矩阵先按照stride=1那样进行卷积,只是位移如果不够2的话(换句话说,位移总次数如果不能被2整除),卷积结果就输出0。这样我们就得到下面这个计算模式:
现在我们总结下CNN的反向传播算法,以最基本的批量梯度下降法为例来描述反向传播算法。
参考资料
https://www.cnblogs.com/pinard/p/6519110.html
https://grzegorzgwardys.wordpress.com/2016/04/22/8/#unique-identifier