0_2_1-卷积层的反向传播-单通道、无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_1-卷积层的反向传播-单通道、无padding、步长1

依赖知识

a) 了解神经网络的基础知识,熟悉卷积网络

b) 熟悉导数的链式法则及常见函数的导数

c) 熟悉常见的优化方法,梯度下降,随机梯度下降等

d) 熟悉矩阵和向量的乘加运算

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

卷积定义

​ 对于输入图像 I I , 使用维度为k1×k2 的滤波器 K K ,卷积的定义如下:

(1)(IK)ij=m=0k11n=0k21I(i+m,j+n)K(m,n)

注意:这里的卷积跟数学中定义的卷积不是完全一致的,数学中这叫协相关; 卷积和协相关的区别详见deep learning 第九章282页。神经网络中一般都把公式(1)的定义当做卷积。

CNN卷积网络

​ 卷积网络包含一系列的卷积层,每层由输入特征图 I I ,一堆滤波器K 和偏置 b b . 假设输入的高度、宽度、通道数分别为H,W,C; 则 IRH×W×C I ∈ R H × W × C , 输出 D D 个通道的卷积层,则有卷积核KRk1×k2×C×D ,偏置 bRD b ∈ R D ,每个输出通道一个偏置。则其中一个输出通道的可以如下表示:

(IK)ij=m=0k11n=0k21c=1CKm,n,cIi+m,j+n,c+b(2) (2) ( I ∗ K ) i j = ∑ m = 0 k 1 − 1 ∑ n = 0 k 2 − 1 ∑ c = 1 C K m , n , c ⋅ I i + m , j + n , c + b

​ 有心读者肯定会疑惑公式(2),没有体现padding和卷积核的步长。由于卷积相对复杂,没有办法一次性说明的非常清楚,计划分几次来逐步说明;本文接下来将推导最简单的卷积反向传播公式。假定输入输出通道都为1,即 C=D=1 C = D = 1 , 且卷积核的padding=0,步长为1。

约定说明

a) l l 代表网络的第l 层, zl z l 代表第 l l 层卷积,zi,jl 代表第 l l 层卷积的(i,j) 位置的值; zl z 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 )

根据以上约定第 l l 层卷积输出为:

(4)zi,jl=m=0k1l11n=0k2l11Wm,nl1zi+m,j+nl1+bl1i[0,Hl1],j[0,W^l1]

其中: 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=ijLzli,jzli,jWl1m,n=ijδli,j(kl11m=0kl12n=0Wl1m,nzl1i+m,j+n+bl1)Wl1m,n=ijδli,jzl1i+m,j+n//lWl1m,n(1)(2)(5) (1) ∂ L ∂ W m , n l − 1 = ∑ i ∑ j ∂ L ∂ z i , j l ∗ ∂ z l i , j ∂ W m , n l − 1 / / l 层 的 每 个 神 经 元 都 有 梯 度 传 给 权 重 W m , n l − 1 (2) = ∑ i ∑ j δ i , j l ∗ ∂ ( ∑ m = 0 k 1 l − 1 ∑ n = 0 k 2 l − 1 W m , n l − 1 z i + m , j + n l − 1 + b l − 1 ) ∂ W m , n l − 1 (5) = ∑ i ∑ j δ i , j l ∗ z i + m , j + n l − 1

​ 对比公式(5)和公式(4),可以发现,损失函数 L L 关于第l1层权重 Wl1 W l − 1 的梯度就是以 δl δ l 为卷积核在 zl1 z l − 1 上做卷积的结果(这里没有偏置项)。多么简介对称呀!!!。

b) 同理可得

Lbl1=ijδli,j(6) (6) ∂ L ∂ b l − 1 = ∑ i ∑ j δ i , j l

l-1层梯度

​ 然后再来看看损失函数关于第 l1 l − 1 层输出的梯度

δl1i,j=Lzl1i,j=ijLzli,jzli,jzl1i,j=ijδli,j(kl11m=0kl12n=0Wl1m,nzl1i+m,j+n+bl1)zl1i,j=ijδli,jWl1m,n=mnδlim,jnWl1m,n       (7)=ijδli,jWl1ii,jj       (8)//i=im,j=jnWl1m,n//m=ii,n=jj//i=im[0,Hl1],j=jn[0,W^l1]//ii[0,kl111],jj[0,kl121](3)(4)(5)(6)(7) (3) δ i ′ , j ′ l − 1 = ∂ L ∂ z i ′ , j ′ l − 1 = ∑ i ∑ j ∂ L ∂ z i , j l ∗ ∂ z i , j l ∂ z i ′ , j ′ l − 1 (4) = ∑ i ∑ j δ i , j l ∗ ∂ ( ∑ m = 0 k 1 l − 1 ∑ n = 0 k 2 l − 1 W m , n l − 1 z i + m , j + n l − 1 + b l − 1 ) ∂ z i ′ , j ′ l − 1 / / 当 i = i ′ − m , j = j ′ − n 时 有 梯 度 W m , n l − 1 (5) = ∑ i ∑ j δ i , j l W m , n l − 1 / / 此 时 m = i ′ − i , n = j ′ − j (6) = ∑ m ∑ n δ i ′ − m , j ′ − n l W m , n l − 1               ( 7 ) / / 此 时 i = i ′ − m ∈ [ 0 , H l − 1 ] , j = j ′ − n ∈ [ 0 , W ^ l − 1 ] (7) = ∑ i ∑ j δ i , j l W i ′ − i , j ′ − j l − 1               ( 8 ) / / 需 要 满 足 i ′ − i ∈ [ 0 , k 1 l − 1 − 1 ] , j ′ − j ∈ [ 0 , k 2 l − 1 − 1 ]

​ 约束条件: ii[0,kl111],jj[0,kl121] i ′ − i ∈ [ 0 , k 1 l − 1 − 1 ] , j ′ − j ∈ [ 0 , k 2 l − 1 − 1 ]

​ 变换一下就是: i[i+1kl11,i],j[j+1kl12,j](9) (9) i ∈ [ i ′ + 1 − k 1 l − 1 , i ′ ] , j ∈ [ j ′ + 1 − k 2 l − 1 , j ′ ]

​ 同时 i,j i , j 需要满足公式(4)的约束条件:

i[0,Hl1],j[0,W^l1](10) (10) i ∈ [ 0 , H l − 1 ] , j ∈ [ 0 , W ^ l − 1 ]

​ 因此有
{i[max(0,i+1kl11),min(Hl1,i)]j[max(0,j+1kl12),min(W^l1,j)](11) (11) { i ∈ [ max ( 0 , i ′ + 1 − k 1 l − 1 ) , min ( H l − 1 , i ′ ) ] j ∈ [ max ( 0 , j ′ + 1 − k 2 l − 1 ) , min ( W ^ l − 1 , j ′ ) ]

​ 下面来看一个例子,对于l-1层 5×5 5 × 5 的卷积层,卷积核 3×3 3 × 3 , 则输出的l层卷积大小为5-3-1=3,也就是 3×3 3 × 3 , 此时有:
{i[max(0,i2),min(2,i)]j[max(0,j2,min(2,j)] { i ∈ [ max ( 0 , i ′ − 2 ) , min ( 2 , i ′ ) ] j ∈ [ max ( 0 , j ′ − 2 , min ( 2 , j ′ ) ]

根据公式(7)及其约束条件有:
δl10,0=δl0,0Wl10,0δl10,1=δl0,1Wl10,0+δl0,0Wl10,1δl10,2=δl0,2Wl10,0+δl0,1Wl10,1+δl0,0Wl10,2δl11,0=δl1,0Wl10,0+δl0,0Wl11,0δl11,1=δl1,1Wl10,0+δl0,1Wl11,0+δl1,0Wl10,1+δl0,0Wl11,1δl11,2=ijδli,jWl1ii,jj......δl12,2=ijδli,jWl1ii,jji[0,0],j[0,0]i[0,0],j[0,1]i[0,0],j[0,2]i[0,1],j[0,0]i[0,1],j[0,1]i[0,1],j[0,2]i[0,2],j[0,2](8)(9)(10)(11)(12)(13)(14)(15) (8) δ 0 , 0 l − 1 = δ 0 , 0 l W 0 , 0 l − 1 i ∈ [ 0 , 0 ] , j ∈ [ 0 , 0 ] (9) δ 0 , 1 l − 1 = δ 0 , 1 l W 0 , 0 l − 1 + δ 0 , 0 l W 0 , 1 l − 1 i ∈ [ 0 , 0 ] , j ∈ [ 0 , 1 ] (10) δ 0 , 2 l − 1 = δ 0 , 2 l W 0 , 0 l − 1 + δ 0 , 1 l W 0 , 1 l − 1 + δ 0 , 0 l W 0 , 2 l − 1 i ∈ [ 0 , 0 ] , j ∈ [ 0 , 2 ] (11) δ 1 , 0 l − 1 = δ 1 , 0 l W 0 , 0 l − 1 + δ 0 , 0 l W 1 , 0 l − 1 i ∈ [ 0 , 1 ] , j ∈ [ 0 , 0 ] (12) δ 1 , 1 l − 1 = δ 1 , 1 l W 0 , 0 l − 1 + δ 0 , 1 l W 1 , 0 l − 1 + δ 1 , 0 l W 0 , 1 l − 1 + δ 0 , 0 l W 1 , 1 l − 1 i ∈ [ 0 , 1 ] , j ∈ [ 0 , 1 ] (13) δ 1 , 2 l − 1 = ∑ i ∑ j δ i , j l W i ′ − i , j ′ − j l − 1 i ∈ [ 0 , 1 ] , j ∈ [ 0 , 2 ] (14) . . . . . . (15) δ 2 , 2 l − 1 = ∑ i ∑ j δ i , j l W i ′ − i , j ′ − j l − 1 i ∈ [ 0 , 2 ] , j ∈ [ 0 , 2 ]

​ 等价于以下的卷积

δl1=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,δl0,0,δl1,0,δl2,0,0,0,0,0,δl0,1,δl1,1,δl2,1,0,0,0,0,δl0,2,δl1,2,δl2,2,0,0,0,0,0,0,0,0,0,0000000(16)(17)(18)(19)(20)(21)(22)Wl12,2,Wl11,2,Wl10,2,Wl12,1,Wl111,Wl101,Wl12,0Wl11,0Wl10,0 δ l − 1 = ( (16) 0 , 0 , 0 , 0 , 0 , 0 , 0 (17) 0 , 0 , 0 , 0 , 0 , 0 , 0 (18) 0 , 0 , δ 0 , 0 l , δ 0 , 1 l , δ 0 , 2 l , 0 , 0 (19) 0 , 0 , δ 1 , 0 l , δ 1 , 1 l , δ 1 , 2 l , 0 , 0 (20) 0 , 0 , δ 2 , 0 l , δ 2 , 1 l , δ 2 , 2 l , 0 , 0 (21) 0 , 0 , 0 , 0 , 0 , 0 , 0 (22) 0 , 0 , 0 , 0 , 0 , 0 , 0 ) ∗ ( W 2 , 2 l − 1 , W 2 , 1 l − 1 , W 2 , 0 l − 1 W 1 , 2 l − 1 , W 11 l − 1 , W 1 , 0 l − 1 W 0 , 2 l − 1 , W 01 l − 1 , W 0 , 0 l − 1 )

​ 即以 Wl1 W l − 1 翻转 180 180 ∘ 的矩阵为卷积核在 δl δ l 加上padding=2的矩阵上做卷积的结果。

a) 设 rot180Wl1 r o t 180 ∘ W l − 1 为以 Wl1 W l − 1 翻转 180 180 ∘ 的矩阵后的矩阵

b) 设 pδl p δ l δl δ l 加上padding高宽为卷积核高宽减1即 (kl111,kl121) ( k 1 l − 1 − 1 , k 2 l − 1 − 1 ) 后的梯度矩阵,可知其高度为 Hl+2kl112=Hl1+kl111 H l + 2 k 1 l − 1 − 2 = H l − 1 + k 1 l − 1 − 1 ;相应的宽度为 W^l1+kl121 W ^ l − 1 + k 2 l − 1 − 1

c) 卷积核 rot180Wl1 r o t 180 ∘ W l − 1 的大小为 (kl11,kl11) ( k 1 l − 1 , k 1 l − 1 ) ,在上做完卷积后的长宽刚好与 δl1 δ l − 1 的高度和宽度一样,即 (Hl1,W^l1) ( H l − 1 , W ^ l − 1 )

d) pδl p δ l δl δ l 的关系如下:

pδli,j={δlikl11+1,jkl12+10i[kl111,Hl+kl112]j[kl121,W^l+kl122]i,j(12) (12) p δ i , j l = { δ 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 其 它 情 况

​ 接下来将证明这个卷积就是 δl1 δ l − 1

根据公式(4) 卷积后的 (i,j) ( i , j ) 位置的值为:

m=0kl111n=0kl121rot180Wl1m,npδli+m,j+n=m=0kl111n=0kl121Wkl111m,kl121n pδli+m,j+n      //180=m=0kl111n=0kl121Wm,n pδli+kl111m,j+kl121n     //m+m=kl111,n+n=kl121=m=0kl111n=0kl121Wm,n pδli+kl111m,j+kl121n     //=m=0kl111n=0kl121Wm,n {δlim,jn0//im[0,Hl1]jn[0,W^l1]//im[0,Hl1]jn[0,W^l1](23)(24)(25)(26)(15) (23) ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 r o t 180 ∘ W m , n l − 1 p δ i + m , j + n l (24) = ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 W k 1 l − 1 − 1 − m , k 2 l − 1 − 1 − n   p δ i + m , j + n l             / / 将 翻 转 180 ∘ 改 回 来 (25) = ∑ m ′ = 0 k 1 l − 1 − 1 ∑ n ′ = 0 k 2 l − 1 − 1 W m ′ , n ′   p δ i + k 1 l − 1 − 1 − m ′ , j + k 2 l − 1 − 1 − n ′ l           / / m ′ + m = k 1 l − 1 − 1 , n ′ + n = k 2 l − 1 − 1 (26) = ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 W m , n   p δ i + k 1 l − 1 − 1 − m , j + k 2 l − 1 − 1 − n l           / / 将 下 标 改 回 来 (15) = ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 W m , n   { δ i − m , j − n l / / i − m ∈ [ 0 , H l − 1 ] 且 j − n ∈ [ 0 , W ^ l − 1 ] 0 / / i − m ∉ [ 0 , H l − 1 ] 或 j − n ∉ [ 0 , W ^ l − 1 ]

​ 可以看出公式(15)与公式(7)完全一致。

结论

a) 卷积前向计算公式如下:

zli,j=m=0kl111n=0kl121Wl1m,nzl1i+m,j+n+bl1i[0,Hl1],j[0,W^l1](4) (4) z i , j l = ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 W m , n l − 1 z i + m , j + n l − 1 + b l − 1 i ∈ [ 0 , H l − 1 ] , j ∈ [ 0 , W ^ l − 1 ]

b) 损失函数 L L 关于第l1层权重 Wl1 W l − 1 的梯度,是以损失函数 L L 关于第l层梯度 δl δ l 为卷积核在 zl1 z l − 1 上做卷积的结果
LWl1m,n=ijδli,jzl1i+m,j+n(5) (5) ∂ L ∂ W m , n l − 1 = ∑ i ∑ j δ i , j l ∗ z i + m , j + n l − 1

c) 损失函数 L L 关于第l1层偏置 bl1 b l − 1 的梯度,是 δl δ l 元素之和
Lbl1=ijδli,j(6) (6) ∂ L ∂ b l − 1 = ∑ i ∑ j δ i , j l

d) 以损失函数 L L 关于第l1层梯度 δl1 δ l − 1 , 是以第 l1 l − 1 层权重的翻转 rot180Wl1 r o t 180 ∘ W l − 1 为卷积核在 δl δ l 加上padding高宽 为 (kl111,kl121) ( k 1 l − 1 − 1 , k 2 l − 1 − 1 ) 后的梯度矩阵 pδl p δ l 上卷积

δl1=m=0kl111n=0kl121rot180Wl1m,npδli+m,j+n(16) (16) δ l − 1 = ∑ m = 0 k 1 l − 1 − 1 ∑ n = 0 k 2 l − 1 − 1 r o t 180 ∘ W m , n l − 1 p δ i + m , j + n l

参考

  1. backpropagation-in-convolutional-neural-networks
  2. 矩阵乘法
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值