天天看点

深度学习中的参数梯度推导(三)下篇

前言

在深度学习中的参数梯度推导(三)中篇里,我们总结了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