超超超超超简单推导CNN反向传播——低调学习CNN(1)

1.写在前面

相信诸位老铁,点开我这篇博客,都是想看看卷积层的反向传播池化层的反向传播是怎么求导的,但是点开其他博客都是一大段的公式,望而止步,我之前也是介个样子。

在本次博客,我先带大家感觉一下求导的过程,严格来说,本次的CNN并非正宗的CNN,但是却可以帮助我们了解求导的过程!大家一定要看懂这一步,再看下一步,必要的时候拿出纸和笔好好算算!!

笔者在前向传播的时候,会顺便将一些导数求出,以备之后使用。

2.卷积过程

注:

  • A m × n A_{m\times n} Am×n矩阵与 B x × y B_{x\times y} Bx×y矩阵(做步长 s t r i d e = 1 的 stride=1的 stride=1) v a l i d valid valid卷积操作( m ≥ x 且 n ≥ y m\ge x且n\ge y mxny)
    所得元素维度为 ( m − x + 1 ) × ( n − y + 1 ) (m-x+1)\times (n-y+1) (mx+1)×(ny+1)
  • 当卷积操作的步长为 s t r i d e stride stride时,卷积的输出矩阵为 ( m − x s t r i d e x + 1 ) × ( n − y s t r i d e y + 1 ) (\frac{m-x}{stride_x}+1)\times (\frac{n-y}{stride_y}+1) (stridexmx+1)×(strideyny+1),当其中不能整除时,说明该步长不适合卷积操作
  • 如果我们还有 z e r o P a d d i n g zeroPadding zeroPadding,则需要加上 P a d d i n g Padding Padding数字,一般来说输出矩阵为 ( m − x + 2 p x s t r i d e x + 1 ) × ( n − y + 2 p y s t r i d e y + 1 ) (\frac{m-x+2p_x}{stride_x}+1)\times (\frac{n-y+2p_y}{stride_y}+1) (stridexmx+2px+1)×(strideyny+2py+1)
  • 严格的来说,是 ( [ m − x + 2 p x s t r i d e x ] + 1 ) × ( [ n − y + 2 p y s t r i d e y ] + 1 ) ([\frac{m-x+2p_x}{stride_x}]+1)\times ([\frac{n-y+2p_y}{stride_y}]+1) ([stridexmx+2px]+1)×([strideyny+2py]+1)
  • 同时卷积核也叫做感受野( r e c e p t i v e f i e l d receptive field receptivefield)

相信这个操作,大家都熟悉的一批,我不赘述了(为了不用别人的图,这么个小破gif花了好久哈哈)
在这里插入图片描述

卷积核 A A A X X X进行卷积操作,得到矩阵 Y Y Y
在这里插入图片描述
在这里我们先让 Y 11 Y_{11} Y11 Y 12 Y_{12} Y12 Y 13 Y_{13} Y13 Y 14 Y_{14} Y14分别对 A A A矩阵中的 a 11 a_{11} a11 a 12 a_{12} a12元素求偏导,得到以下结果:
在这里插入图片描述
其实, Y 11 Y_{11} Y11 Y 12 Y_{12} Y12 Y 13 Y_{13} Y13 Y 14 Y_{14} Y14对矩阵 A A A中的其他元素求偏导,也会得到类似的结果,老铁们先不要急,一会告诉大家规律。

3.池化操作( P o o l i n g Pooling Pooling d o w n s a m p l e downsample downsample降采样)

再得到矩阵 Y Y Y后,我们对其进行池化(Pooling)操作,不失一般性,可以看做 B B B矩阵对矩阵 Y Y Y卷积操作,得到矩阵 Z Z Z,可以将其视为单元素矩阵 Z Z Z,也可以将其视为一个数 Z Z Z,不过这里不影响:
实际上,池化操作,可以视为没有参数
在这里插入图片描述
Z Z Z分别对矩阵 Y Y Y元素 Y 11 Y_{11} Y11 Y 12 Y_{12} Y12 Y 13 Y_{13} Y13 Y 14 Y_{14} Y14求偏导,有图右下角式子:

在这里插入图片描述

4.求出误差

我们得出了预测值 Z Z Z,原有真实值为 R R R,采用均方误差 E = 1 2 ( Z − R ) 2 E=\frac{1}{2}(Z-R)^2 E=21(ZR)2
令误差 E E E Z Z Z求导数:
∂ E ∂ Z = Z − R \frac{\partial E}{\partial Z}=Z-R ZE=ZR
有:
∂ E ∂ a 11 = ( Z − R ) ∂ Z ∂ a 11 \frac{\partial E}{\partial a_{11}}=(Z-R)\frac{\partial Z}{\partial a_{11}} a11E=(ZR)a11Z

5.反向传播求偏导

此时,我们令 Z Z Z对矩阵 A A A中元素 a 11 a_{11} a11 a 12 a_{12} a12求导,同时带入我们之前求的偏导数:
在这里插入图片描述
在这里插入图片描述
Z Z Z A A A中其他元素求偏导结果类似(大家最好动手算一算,这波不亏的):
在这里插入图片描述
可以看出,不论是 Z Z Z A A A中哪一项元素求偏导,都会有 b 11 、 b 12 、 b 21 和 b 22 b_{11}、b_{12}、b_{21}和b_{22} b11b12b21b22,那我们现在关心一下,偏导中矩阵 X X X的元素:
在这里插入图片描述
你现在可以大胆的猜测一下, ∂ Z ∂ a 13 \frac{\partial Z}{\partial a_{13}} a13Z等于什么?

没错,就是矩阵 X X X右上角的4个元素和矩阵 B B B的四个元素相乘再相加。

不妨再大胆的猜一下,矩阵 Z Z Z对矩阵 A A A求偏导等于什么?

于,矩阵 X X X与矩阵 B B B v a l i d valid valid卷积操作,刚好是 3 × 3 = 9 3\times 3=9 3×3=9个元素

即: ∂ Z ∂ A = X ∗ B \frac{\partial Z}{\partial A}=X*B AZ=XB

所以: ∂ E ∂ A = ( Z − R ) × X ∗ B \frac{\partial E}{\partial A}=(Z-R)\times X*B AE=(ZR)×XB

OK! 咱们求导工作到此结束!是不是感觉很清楚呢??😝


注:严格来说,本次博客所有的 卷 积 操 作 卷积操作 ,都应该叫做 相 关 操 作 相关操作
若之后有时间,我再写写二者的区别和联系

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值