CNN卷积神经网络的反向传播

本文主要讲解梯度在CNN网络中的误差传播:
包括两个内容:
池化层到卷积层的误差计算
卷积层到池化层的误差计算

CNN的前向结构为       一层卷积->激活函数->一层池化

1.池化层到卷积层的反向传播(只传播误差,因为池化层没权重)

当L层表示的是池化层的时候
当L-1层表示的是卷积层的时候

池化层:L层输出   a t a_{t} at        #池化层输出
a t = z t a_{t}=z_{t} at=zt             ↑ \uparrow     #池化
卷积层:L-1层输出   a t − 1 a_{t-1} at1      #卷积层输出
a t − 1 = σ ( z t − 1 ) a_{t-1}=\sigma (z_{t-1}) at1=σ(zt1)       ↑ \uparrow    
               #卷积操作
z t − 1 = a t − 2 ∗ w z_{t-1}=a_{t-2}*w zt1=at2w      ↑ \uparrow    
池化层:L-1层输出   a t − 2 a_{t-2} at2      #池化层输出

在这里插入图片描述

在这里插入图片描述

2.卷积层到池化层的反向传播(包括误差灵敏度传播和计算权重):

当L层表示的是j卷积层的时候
当L-1层表示的是池化层的时候

卷积层:L层输出:   a l a^{l} al      #卷积层输出
a l = σ ( z l ) a^{l}=\sigma (z^{l}) al=σ(zl)        ↑ \uparrow

z l = a l − 1 ∗ w z^{l}=a^{l-1}*w zl=al1w      ↑ \uparrow
池化层:L-1层输出: a l − 1 a^{l-1} al1    #池化层输出
a l − 1 = z l − 1 a^{l-1}=z^{l-1} al1=zl1        ↑ \uparrow     #池化层没有激活函数,所以第L层a对z求偏导就为1
               #池化操作
z l − 1 = a l − 2 z^{l-1}=a^{l-2} zl1=al2        ↑ \uparrow
卷积层:L-1层输出:   a l − 2 a^{l-2} al2    #卷积层输出

我们的目标是希望根据当前的误差灵敏度能够得到计算上一时刻的误差灵敏度公式。
以及根据当前灵敏度传播矩阵得到计算梯度w的更新公式。

1) 根据当前误差灵敏度,计算上一时刻的误差灵敏度

在这里插入图片描述

下面开始计算得到以上公式

列出卷积公式,分别对at-1求导得到t和t-1的关系
在这里插入图片描述
#根据关系还原成矩阵形式,便于计算机批量计算
在这里插入图片描述

2)根据当前误差灵敏度计算当前权重的梯度,从而进行更新

在这里插入图片描述

根据求导结果写成矩阵形式:得到误差灵敏度t和权重wt之间的关系
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值