CNN卷积核反传分析

CNN(卷积神经网络)的误差反传(error back propagation)中有一个非常关键的的步骤就是将某个卷积(Convolve)层的误差传到前一层的池化(Pool)层上,因为在CNN中是2D反传,与传统神经网络中的1D反传有点细节上的不同,下面通过一个简单的例子来详细分解一下这个反传步骤。

假设在一个CNN网络中,P代表某个池化层,K代表卷积核,C代表卷基层,首先来看一下前向(feed forward)计算,从一个池化层经过与卷积核(Kernel)的运算得到卷积层:

v2-b0bcd4798869756e1644b45e6fdbc744_hd.jpg

将前向计算的步骤进行分解,可以得到以下公式:

v2-68dd4f780aaec19db6b894e6ee831fa0_hd.jpg

下面根据这个前向计算的步骤来分解出反向传播的步骤:

v2-dbe0c9bdd82d448d3c2180f109b9feec_hd.jpg

首先要确定误差传播的目的地,从deltaC到deltaP,所以先从deltaP1开始分析

从前面的前向计算过程中可以找出P1参与了C中哪些元素的计算,并且可以根据对应的前向计算得出反向传播的计算公式:

v2-a0a5eeecf3d961126b773241b31296f4_hd.jpg

依次类推,还有如下公式:

对于P2

v2-5ad5565a813fdcc73ca095c40bb4a89f_hd.jpg

对于P3

v2-363b1433984ee6e668549d164b40b5a4_hd.jpg

对于P4

v2-505d7f0c6fff090b2b13e77105228ef7_hd.jpg

对于P5

v2-20768231669f4c05b01336328a8e6b8f_hd.jpg

一直可以推到P9

总结这9个反向传播的公式到一起:

v2-e9823fbea4070db0a97996c85ce37998_hd.jpg

进一步可以发现,这9个公式可以用如下的卷积过程来实现:

v2-eb08c18129f7d410e4c8db1060ecd482_hd.jpg

至此,从计算的细节上解释了为什么反向传播的时候要把卷积核旋转180°,并采用full的形式来进行卷积运算。

(注:上文所说的“卷积”被认为是一种不会180°旋转第二个因子的的计算过程,实际上matlab中的的conv2(a,b)会自动180°旋转b,换句话说,在matlab中实现这个步骤的时候不用提前旋转,留给conv2函数自行旋转即可)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值