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 , 使用维度为 k 1 × k 2 的滤波器 K ,卷积的定义如下:

(1) ( I K ) i j = m = 0 k 1 1 n = 0 k 2 1 I ( i + m , j + n ) K ( m , n )

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

CNN卷积网络

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

(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 , 且卷积核的padding=0,步长为1。

约定说明

a) l 代表网络的第 l 层, z l 代表第 l 层卷积, z i , j l 代表第 l 层卷积的 ( i , j ) 位置的值; z l 的高度和宽度分别为 H l , W ^ l ( )

b) W l 1 , b l 1 代表连接第 l 1 层和第 l 层的卷积核权重和偏置; 卷积核的维度为 ( k 1 l 1 , k 2 l 1 )

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

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

(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 ]

其中: H l = H l 1 k 1 l 1 + 1 ;           W ^ l = W ^ l 1 k 2 l 1 + 1

误差反向传播

权重梯度

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

(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 1 层权重 W l 1 的梯度就是以 δ l 为卷积核在 z l 1 上做卷积的结果(这里没有偏置项)。多么简介对称呀!!!。

b) 同理可得

(6) L b l 1 = i j δ i , j l

l-1层梯度

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

(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 ]

​ 约束条件: i i [ 0 , k 1 l 1 1 ] , j j [ 0 , k 2 l 1 1 ]

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

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

(10) i [ 0 , H l 1 ] , j [ 0 , W ^ l 1 ]

​ 因此有
(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 的卷积层,卷积核 3 × 3 , 则输出的l层卷积大小为5-3-1=3,也就是 3 × 3 , 此时有:
{ i [ max ( 0 , i 2 ) , min ( 2 , i ) ] j [ max ( 0 , j 2 , min ( 2 , j ) ]

根据公式(7)及其约束条件有:
(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 ]

​ 等价于以下的卷积

δ 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 )

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

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

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

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

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

(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

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

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

(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) 卷积前向计算公式如下:

(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 1 层权重 W l 1 的梯度,是以损失函数 L 关于第 l 层梯度 δ l 为卷积核在 z l 1 上做卷积的结果
(5) L W m , n l 1 = i j δ i , j l z i + m , j + n l 1

c) 损失函数 L 关于第 l 1 层偏置 b l 1 的梯度,是 δ l 元素之和
(6) L b l 1 = i j δ i , j l

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

(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. 矩阵乘法

猜你喜欢

转载自blog.csdn.net/csuyzt/article/details/81952377