0_2_4-卷积层的反向传播-多通道、有padding、步长不为1

numpy实现神经网络系列

工程地址:https://github.com/yizt/numpy_neuron_network

基础知识

0_1-全连接层、损失函数的反向传播

0_2_1-卷积层的反向传播-单通道、无padding、步长1

0_2_2-卷积层的反向传播-多通道、无padding、步长1

0_2_3-卷积层的反向传播-多通道、无padding、步长不为1

0_2_4-卷积层的反向传播-多通道、有padding、步长不为1

0_2_5-池化层的反向传播-MaxPooling、AveragePooling、GlobalAveragePooling、GlobalMaxPooling

0_3-激活函数的反向传播-ReLU、LeakyReLU、PReLU、ELU、SELU

0_4-优化方法-SGD、AdaGrad、RMSProp、Adadelta、Adam

DNN练习

1_1_1-全连接神经网络做线性回归

1_1_2-全连接神经网络做mnist手写数字识别

CNN练习

2_1-numpy卷积层实现

2_2-numpy池化层实现

2_3-numpy-cnn-mnist手写数字识别

本文目录

依赖知识

a) 熟悉全连接层、损失函数的反向传播

b) 熟悉卷积层的反向传播-单通道、无padding、步长1

c) 熟悉卷积层的反向传播-多通道、无padding、步长1

d) 熟悉卷积层的反向传播-多通道、无padding、步长不为1

e) 熟悉以上4点的依赖知识

约定说明

a) l l 代表网络的第l 层, zl z l 代表第 l l 层卷积,zd,i,jl 代表第 l l 层卷积第d 通道 (i,j) ( i , j ) 位置的值; zl z l 的通道数为 Cl C l , 高度和宽度分别为 Hl,W^l H l , W ^ l ( 避 免 与 权 重 相 同 )

b) Wl1,bl1 W l − 1 , b l − 1 代表连接第 l1 l − 1 层和第 l l 层的卷积核权重和偏置; 卷积核的维度为(k1l1,k2l1) ; 卷积核的步长为 (sl11,sl12) ( s 1 l − 1 , s 2 l − 1 ) ,padding 为 (pl11,pl12) ( p 1 l − 1 , p 2 l − 1 ) , 记 pzl1 p z l − 1 zl1 z l − 1 高度和宽度这两个维度填充padding后的多维向量。

c) 记损失函数L关于第 l l 层卷积的输出zl 的偏导为 δl=Lzl   (3) δ l = ∂ L ∂ z l       ( 3 )

前向传播

​ 有padding和没padding的前向传播过程完全一样,只需要将 无padding 中所有公式中的 zl1 z l − 1 替换为 pzl1 p z l − 1 即可。

​ 因此根据以上约定,卷积核权重 Wl1Rkl11×kl12×Cl1×Cl W l − 1 ∈ R k 1 l − 1 × k 2 l − 1 × C l − 1 × C l ,偏置 bl1RCl b l − 1 ∈ R C l ,每个输出通道一个偏置。 则有第 l l 层卷积层,第d个通道输出为:

zld,i,j=c=1Cl1m=0kl111n=0kl121Wl1m,n,c,dpzl1c,isl11+m,jsl12+n+bl1di[0,Hl1],j[0,W^l1](4) (4) z d , i , j l = ∑ c = 1 C l − 1 ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 W m , n , c , d l − 1 p z c , i ⋅ s 1 l − 1 + m , j ⋅ s 2 l − 1 + n l − 1 + b d l − 1 i ∈ [ 0 , H l − 1 ] , j ∈ [ 0 , W ^ l − 1 ]

​ 其中: Hl=(Hl1kl11+2pl11)/sl11+1;     W^l=(W^l1kl12+2pl12)/sl12+1 H l = ( H l − 1 − k 1 l − 1 + 2 p 1 l − 1 ) / s 1 l − 1 + 1 ;           W ^ l = ( W ^ l − 1 − k 2 l − 1 + 2 p 2 l − 1 ) / s 2 l − 1 + 1 ;

反向传播

​ 同样反向传播过程中,也只需要将 无padding 中所有公式中的 zl1 z l − 1 替换为 pzl1 p z l − 1 即可。

权重梯度

a) 首先来看损失函数 L L ​ 关于第 l1 l − 1 层权重 Wl1 W l − 1 和偏置 bl1 b l − 1 的梯度:

LWl1m,n,c,d=ijLzld,i,jzld,i,jWl1m,n,c,d=ijδld,i,j(Cl1c=1kl111m=0kl121n=0Wl1m,n,c,dpzl1c,isl11+m,jsl12+n+bl1d)Wl1m,n,c,d=ijδld,i,jpzl1c,isl11+m,jsl12+n//ldWl1m,n,c,d(1)(2)(5) (1) ∂ L ∂ W m , n , c , d l − 1 = ∑ i ∑ j ∂ L ∂ z d , i , j l ∗ ∂ z d , i , j l ∂ W m , n , c , d l − 1 / / l 层 的 d 通 道 每 个 神 经 元 都 有 梯 度 传 给 权 重 W m , n , c , d l − 1 (2) = ∑ i ∑ j δ d , i , j l ∗ ∂ ( ∑ c = 1 C l − 1 ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 W m , n , c , d l − 1 p z c , i ⋅ s 1 l − 1 + m , j ⋅ s 2 l − 1 + n l − 1 + b d l − 1 ) ∂ W m , n , c , d l − 1 (5) = ∑ i ∑ j δ d , i , j l ∗ p z c , i ⋅ s 1 l − 1 + m , j ⋅ s 2 l − 1 + n l − 1

b) 损失函数 L L 关于第l1层偏置 bl1 b l − 1 的梯度同

Lbl1d=ijδld,i,j(6) (6) ∂ L ∂ b d l − 1 = ∑ i ∑ j δ d , i , j l

l-1层梯度​

​ 根据 无padding 中公式(8)有

Lpzl1c,i,j=d=1Clm=0kl111n=0kl121rot180Wl1m,n,c,dpδlpaddingd,i+m,j+n(8) (8) ∂ L ∂ p z c , i , j l − 1 = ∑ d = 1 C l ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 r o t 180 ∘ W m , n , c , d l − 1 p δ d , i + m , j + n l p a d d i n g

​ 其中 pδlpaddingd,i,j p δ d , i , j l p a d d i n g ​ δl δ l ​ 在行列直接插入 (sl111,sl121) ( s 1 l − 1 − 1 , s 2 l − 1 − 1 ) ​ 行列零元素后(即 δlpadding δ l p a d d i n g ​ ),再在元素外围填充高度和宽度为 (kl111,kl121) ( k 1 l − 1 − 1 , k 2 l − 1 − 1 ) ​ 的零元素后的梯度矩阵。

​ 我们知道 δl1c δ c l − 1 就是 (Lpzl1c,i,j)h×w ( ∂ L ∂ p z c , i , j l − 1 ) h × w 去除高度和宽度的填充后的矩阵,因此有

δl1c=(Lpzl1c,i,j)pl11i<Hl1+pl11,pl12j<W^l1+pl12=(d=1Clm=0kl111n=0kl121rot180Wl1m,n,c,dpδlpaddingd,i+m,j+n)pl11i<Hl1+pl11,pl12j<W^l1+pl12(3)(9) (3) δ c l − 1 = ( ∂ L ∂ p z c , i , j l − 1 ) p 1 l − 1 ≤ i < H l − 1 + p 1 l − 1 , p 2 l − 1 ≤ j < W ^ l − 1 + p 2 l − 1 (9) = ( ∑ d = 1 C l ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 r o t 180 ∘ W m , n , c , d l − 1 p δ d , i + m , j + n l p a d d i n g ) p 1 l − 1 ≤ i < H l − 1 + p 1 l − 1 , p 2 l − 1 ≤ j < W ^ l − 1 + p 2 l − 1

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值