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
层,
zl
代表第
l
层卷积,
zld,i,j
代表第
l
层卷积第
d
通道
(i,j)
位置的值;
zl
的通道数为
Cl
, 高度和宽度分别为
Hl,W^l
(
避免与权重相同
)
b)
Wl−1,bl−1
代表连接第
l−1
层和第
l
层的卷积核权重和偏置; 卷积核的维度为
(kl−11,kl−12)
; 卷积核的步长为
(sl−11,sl−12)
,padding 为
(pl−11,pl−12)
, 记
pzl−1
为
zl−1
高度和宽度这两个维度填充padding后的多维向量。
c) 记损失函数L关于第
l
层卷积的输出
zl
的偏导为
δl=∂L∂zl (3)
前向传播
有padding和没padding的前向传播过程完全一样,只需要将 无padding 中所有公式中的
zl−1
替换为
pzl−1
即可。
因此根据以上约定,卷积核权重
Wl−1∈Rkl−11×kl−12×Cl−1×Cl
,偏置
bl−1∈RCl
,每个输出通道一个偏置。 则有第
l
层卷积层,第
d
个通道输出为:
zld,i,j=∑c=1Cl−1∑m=0kl−11−1∑n=0kl−12−1Wl−1m,n,c,dpzl−1c,i⋅sl−11+m,j⋅sl−12+n+bl−1di∈[0,Hl−1],j∈[0,W^l−1](4)
其中:
Hl=(Hl−1−kl−11+2pl−11)/sl−11+1; W^l=(W^l−1−kl−12+2pl−12)/sl−12+1
;
反向传播
同样反向传播过程中,也只需要将 无padding 中所有公式中的
zl−1
替换为
pzl−1
即可。
权重梯度
a) 首先来看损失函数
L
关于第
l−1
层权重
Wl−1
和偏置
bl−1
的梯度:
∂L∂Wl−1m,n,c,d=∑i∑j∂L∂zld,i,j∗∂zld,i,j∂Wl−1m,n,c,d=∑i∑jδld,i,j∗∂(∑Cl−1c=1∑kl−11−1m=0∑kl−12−1n=0Wl−1m,n,c,dpzl−1c,i⋅sl−11+m,j⋅sl−12+n+bl−1d)∂Wl−1m,n,c,d=∑i∑jδld,i,j∗pzl−1c,i⋅sl−11+m,j⋅sl−12+n//l层的d通道每个神经元都有梯度传给权重Wl−1m,n,c,d(1)(2)(5)
b) 损失函数
L
关于第
l−1
层偏置
bl−1
的梯度同
∂L∂bl−1d=∑i∑jδld,i,j(6)
l-1层梯度
根据 无padding 中公式(8)有
∂L∂pzl−1c,i,j=∑d=1Cl∑m=0kl−11−1∑n=0kl−12−1rot180∘Wl−1m,n,c,dpδlpaddingd,i+m,j+n(8)
其中
pδlpaddingd,i,j
是
δl
在行列直接插入
(sl−11−1,sl−12−1)
行列零元素后(即
δlpadding
),再在元素外围填充高度和宽度为
(kl−11−1,kl−12−1)
的零元素后的梯度矩阵。
我们知道
δl−1c
就是
(∂L∂pzl−1c,i,j)h×w
去除高度和宽度的填充后的矩阵,因此有
δl−1c=(∂L∂pzl−1c,i,j)pl−11≤i<Hl−1+pl−11,pl−12≤j<W^l−1+pl−12=(∑d=1Cl∑m=0kl−11−1∑n=0kl−12−1rot180∘Wl−1m,n,c,dpδlpaddingd,i+m,j+n)pl−11≤i<Hl−1+pl−11,pl−12≤j<W^l−1+pl−12(3)(9)