0_2_2-卷积层的反向传播-多通道、无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手写数字识别

本文目录

本文下载地址:0_2_2-卷积层的反向传播-多通道、无padding、步长1

依赖知识

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

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

c) 熟悉以上两点的依赖知识

约定说明

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)

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

前向传播

​ 根据以上约定,卷积核权重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,dzl1c,i+m,j+n+bl1i[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 z c , i + m , j + n l − 1 + b l − 1 i ∈ [ 0 , H l − 1 ] , j ∈ [ 0 , W ^ l − 1 ]

其中: Hl=Hl1kl11+1;     W^l=W^l1kl12+1 H l = H l − 1 − k 1 l − 1 + 1 ;           W ^ l = W ^ l − 1 − k 2 l − 1 + 1; 注意前后通道直接相当于全连接,即前后两个卷积层直接所有通道都互相连接。

反向传播

权重梯度

a) 首先来看损失函数L L关于第l1层权重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,dzl1c,i+m,j+n+bl1)Wl1m,n,c,d=ijδld,i,jzl1c,i+m,j+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 z c , i + m , j + n l − 1 + b l − 1 ) ∂ W m , n , c , d l − 1 (5) = ∑ i ∑ j δ d , i , j l ∗ z c , i + m , j + n l − 1

​ 对比公式(5)和 单通道中公式(4),可以发现,损失函数 L L关于第l1层权重 Wl1:,:c,d W : , : c , d l − 1梯度就是以 δld δ d l为卷积核在 zl1c z c 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层梯度

​ 由单通道 可知第l l层的第d个通道传给第l1 l − 1c c通道的梯度为:

(7)m=0k1l11n=0k2l11rot180Wm,n,c,dl1pδd,i+m,j+nl

​ 而l层的每个通道都有梯度返回给第l-1层的第c个通道,因此有:

δl1c,i,j=d=1Clm=0kl111n=0kl121rot180Wl1m,n,c,dpδld,i+m,j+n(8) (8) δ 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δld,i,j={δld,ikl11+1,jkl12+10i[kl111,Hl+kl112]j[kl121,W^l+kl122]i,j(12) (12) p δ d , i , j l = { δ d , i − k 1 l − 1 + 1 , j − k 2 l − 1 + 1 l i ∈ [ k 1 l − 1 − 1 , H l + k 1 l − 1 − 2 ] 且 j ∈ [ k 2 l − 1 − 1 , W ^ l + k 2 l − 1 − 2 ] 0 i , j 其 它 情 况


版权声明:本文为csuyzt原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。