[TOC]
a) 了解神经网络的基础知识,熟悉卷积网络
b) 熟悉导数的链式法则及常见函数的导数
c) 熟悉常见的优化方法,梯度下降,随机梯度下降等
d) 熟悉矩阵和向量的乘加运算
e) 熟悉全连接层、损失函数的反向传播
对于输入图像$I$ , 使用维度为$k_1 \times k_2$ 的滤波器$K$ ,卷积的定义如下:
$$ \begin{align} (I * K){ij} &= \sum{m = 0}^{k_1 - 1} \sum_{n = 0}^{k_2 - 1} I(i+m, j+n)K(m,n) \tag {1} \end{align} $$
注意:这里的卷积跟数学中定义的卷积不是完全一致的,数学中这叫协相关; 卷积和协相关的区别详见deep learning 第九章282页。神经网络中一般都把公式(1)的定义当做卷积。
卷积网络包含一系列的卷积层,每层由输入特征图$I$,一堆滤波器$K$ 和偏置$b$ . 假设输入的高度、宽度、通道数分别为$H,W,C$; 则$I \in \Bbb R^{H \times W \times C}$ , 输出$D$ 个通道的卷积层,则有卷积核$K \in \Bbb R^{k_1 \times k_2 \times C \times D}$ ,偏置$b \in \Bbb R^D$ ,每个输出通道一个偏置。则其中一个输出通道的可以如下表示: $$ \begin{align} (I \ast K){ij} &= \sum{m = 0}^{k_1 - 1} \sum_{n = 0}^{k_2 - 1} \sum_{c = 1}^{C} K_{m,n,c} \cdot I_{i+m, j+n, c} + b \tag {2} \end{align} $$
有心读者肯定会疑惑公式(2),没有体现padding和卷积核的步长。由于卷积相对复杂,没有办法一次性说明的非常清楚,计划分几次来逐步说明;本文接下来将推导最简单的卷积反向传播公式。假定输入输出通道都为1,即$C=D=1$, 且卷积核的padding=0,步长为1。
a)
b)
c) 记损失函数L关于第$l$ 层卷积的输出$z^l$ 的偏导为$\delta^l = \frac {\partial L} {\partial z^l} \ \ \ (3)$
根据以上约定第$l$ 层卷积输出为: $$ \begin{align} &z^l_{i,j} = \sum_{m=0}^{k_1^{l-1}-1} \sum_{n=0}^{k_2^{l-1}-1} W_{m,n}^{l-1} z_{i+m,j+n}^{l-1} + b^{l-1} & i \in [0,H^l-1], j\in [0,\hat W^l-1]\tag 4 \end{align} $$ 其中:$H^l = H^{l-1} - k_1^{l-1} + 1;\ \ \ \ \ \hat W^l = \hat W^{l-1} - k_2^{l-1} + 1 $
a) 首先来看损失函数$L$关于第$l-1$层权重$W^{l-1}$和偏置$b^{l-1}$的梯度 $$ \begin{align} &\frac {\partial L} {\partial W_{m,n}^{l-1}} = \sum_i \sum_j \frac {\partial L} {\partial z^l_{i,j}} * \frac {\partial z^l_{i,j}} {\partial W_{m,n}^{l-1}} &//l层的每个神经元都有梯度传给权重W^{l-1}{m,n}\ &=\sum_i \sum_j \delta^l{i,j} * \frac {\partial ( \sum_{m=0}^{k_1^{l-1}} \sum_{n=0}^{k_2^{l-1}} W_{m,n}^{l-1} z_{i+m,j+n}^{l-1} + b^{l-1})} {\partial W^{l-1}{m,n}} \ &=\sum_i \sum_j \delta^l{i,j} * z^{l-1}_{i+m,j+n} \tag 5 \end{align} \ $$
对比公式(5)和公式(4),可以发现,损失函数$L$关于第$l-1$层权重$W^{l-1}$ 的梯度就是以$\delta^l$ 为卷积核在$z^{l-1}$上做卷积的结果(这里没有偏置项)。多么简单对称呀!!!。
b) 同理可得 $$ \begin{align} \frac {\partial L} {\partial b^{l-1}} =\sum_i \sum_j \delta^l_{i,j} \tag 6 \end{align} $$
然后再来看看损失函数关于第$l-1$层输出的梯度 $$ \begin{align} &\delta^{l-1}{i^{\prime},j^{\prime}}=\frac {\partial L} {\partial z{i^{\prime},j^{\prime}}^{l-1}} = \sum_i \sum_j \frac {\partial L} {\partial z^l_{i,j}} * \frac {\partial z^l_{i,j}} {\partial z_{i^{\prime},j^{\prime}}^{l-1}} \ &=\sum_i \sum_j \delta^l_{i,j} * \frac {\partial ( \sum_{m=0}^{k_1^{l-1}} \sum_{n=0}^{k_2^{l-1}} W_{m,n}^{l-1} z_{i+m,j+n}^{l-1} + b^{l-1})} {\partial z_{i^{\prime},j^{\prime}}^{l-1}} &//当i=i^{\prime}-m, j=j^{\prime}-n时有梯度W^{l-1}{m,n}\ &=\sum_i \sum_j \delta^l{i,j} W^{l-1}{m,n} &//此时m=i^{\prime}-i ,n=j^{\prime}-j\ &=\sum_m \sum_n \delta^l{i^{\prime}-m,j^{\prime}-n}W^{l-1}{m,n} \ \ \ \ \ \ \ (7) &//此时i=i^{\prime}-m \in[0,H^l-1],j=j^{\prime}-n \in [0,\hat W^l-1] \ &=\sum_i \sum_j \delta^l{i,j} W^{l-1}_{i^{\prime}-i,j^{\prime}-j} \ \ \ \ \ \ \ (8) &//需要满足i^{\prime}-i \in [0,k_1^{l-1}-1],j^{\prime}-j \in [0,k_2^{l-1}-1] \end{align} $$
约束条件:$i^{\prime}-i \in [0,k_1^{l-1}-1],j^{\prime}-j \in [0,k_2^{l-1}-1] $
变换一下就是:$ i \in [i^{\prime}+1-k_1^{l-1},i^{\prime}],j \in [j^{\prime}+1-k_2^{l-1},j^{\prime}] \tag 9$
同时$i,j$ 需要满足公式(4)的约束条件:
$$
i\in [0,H^l-1], j\in [0,\hat W^l-1] \tag {10}
$$
因此有
$$
\begin{cases}
i \in [\max(0,i^{\prime}+1-k_1^{l-1}),\min(H^l-1,i^{\prime})] \
j \in [\max(0,j^{\prime}+1-k_2^{l-1}),\min(\hat W^l-1,j^{\prime})] \tag {11}
\end{cases}
$$
下面来看一个例子,对于l-1层
\end{cases}
$$
根据公式(7)及其约束条件有:
$$
\begin{align}
&\delta^{l-1}{0,0} =\delta^{l}{0,0}W^{l-1}{0,0} &i \in [0,0],j \in [0,0] \
&\delta^{l-1}{0,1} =\delta^{l}{0,1}W^{l-1}{0,0} + \delta^{l}{0,0}W^{l-1}{0,1} &i \in [0,0],j \in [0,1] \
&\delta^{l-1}{0,2} =\delta^{l}{0,2}W^{l-1}{0,0} + \delta^{l}{0,1}W^{l-1}{0,1} +\delta^{l}{0,0}W^{l-1}{0,2} &i \in [0,0],j \in [0,2] \
&\delta^{l-1}{1,0} =\delta^{l}{1,0}W^{l-1}{0,0} + \delta^{l}{0,0}W^{l-1}{1,0} &i \in [0,1],j \in [0,0] \
&\delta^{l-1}{1,1} =\delta^{l}{1,1}W^{l-1}{0,0} + \delta^{l}{0,1}W^{l-1}{1,0} +\delta^{l}{1,0}W^{l-1}{0,1} + \delta^{l}{0,0}W^{l-1}{1,1} &i \in [0,1],j \in [0,1] \
&\delta^{l-1}{1,2} = \sum_i \sum_j \delta^l_{i,j} W^{l-1}{i^{\prime}-i,j^{\prime}-j} & i \in [0,1],j \in [0,2] \
&... ... \
&\delta^{l-1}{2,2} = \sum_i \sum_j \delta^l_{i,j} W^{l-1}_{i^{\prime}-i,j^{\prime}-j} & i \in [0,2],j \in [0,2] \
\end{align}
$$
等价于以下的卷积
$$ \delta^{l-1}=\left( \begin{align} &0, &&0,&&0,&&0,&&0,&&0,&&0 \ &0, &&0,&&0,&&0,&&0,&&0,&&0 \ &0,&&0,&&\delta^{l}{0,0},&&\delta^{l}{0,1},&&\delta^{l}{0,2},&&0,&&0\ &0,&&0,&&\delta^{l}{1,0},&&\delta^{l}{1,1},&&\delta^{l}{1,2},&&0,&&0\ &0,&&0,&&\delta^{l}{2,0},&&\delta^{l}{2,1},&&\delta^{l}{2,2},&&0,&&0\ &0,&&0, &&0,&&0,&&0,&&0,&&0 \ &0,&&0, &&0,&&0,&&0,&&0,&&0 \end{align} \right) * \left( \begin{array} aW^{l-1}{2,2},& W^{l-1}{2,1},& W^{l-1}{2,0}\ W^{l-1}{1,2},& W^{l-1}{11},& W^{l-1}{1,0}\ W^{l-1}{0,2},& W^{l-1}{01},& W^{l-1}{0,0}\ \end{array} \right) $$ 即以$W^{l-1}$ 翻转$180^\circ$ 的矩阵为卷积核在$\delta^l$ 加上padding=2的矩阵上做卷积的结果。
a) 设$rot_{180^\circ}W^{l-1}$ 为以$W^{l-1}$ 翻转$180^\circ$ 的矩阵后的矩阵
b) 设$p\delta^l$ 为$\delta^l$ 加上padding高宽为卷积核高宽减1即$(k_1^{l-1}-1,k_2^{l-1}-1)$后的梯度矩阵,可知其高度为$H^l+2k_1^{l-1} -2 = H^{l-1} +k_1^{l-1} -1$ ;相应的宽度为$\hat W^{l-1} +k_2^{l-1} -1$
c) 卷积核$rot_{180^\circ}W^{l-1}$ 的大小为$(k_1^{l-1},k_1^{l-1})$,在上做完卷积后的长宽刚好与$\delta^{l-1}$ 的高度和宽度一样,即$(H^{l-1},\hat W^{l-1})$ 。
d)
接下来将证明这个卷积就是$\delta^{l-1}$
根据公式(4) 卷积后的$(i,j)$ 位置的值为: $$ \begin{align} &\sum_{m=0}^{k_1^{l-1}-1} \sum_{n=0}^{k_2^{l-1}-1}rot_{180^\circ} W^{l-1}{m,n}p\delta^{l}{i+m,j+n} \ &=\sum_{m=0}^{k_1^{l-1}-1} \sum_{n=0}^{k_2^{l-1}-1}W_{k^{l-1}1-1-m,k_2^{l-1}-1-n}\ p\delta^{l}{i+m,j+n} \ \ \ \ \ \ //将翻转180^\circ改回来 \ &=\sum_{m^{\prime}=0}^{k_1^{l-1}-1} \sum_{n^{\prime}=0}^{k_2^{l-1}-1}W_{m^{\prime},n^{\prime}}\ p\delta^{l}{i+k^{l-1}1-1-m^{\prime},j+k_2^{l-1}-1-n^{\prime}} \ \ \ \ \ //m^{\prime} +m =k_1^{l-1} -1,n^{\prime}+n=k_2^{l-1}-1 \ &=\sum{m=0}^{k_1^{l-1}-1} \sum{n=0}^{k_2^{l-1}-1}W_{m,n}\ p\delta^{l}{i+k^{l-1}1-1-m,j+k_2^{l-1}-1-n} \ \ \ \ \ //将下标改回来 \ &= \sum{m=0}^{k_1^{l-1}-1} \sum{n=0}^{k_2^{l-1}-1}W_{m,n}\ \begin{cases} \delta^{l}_{i-m,j-n} &//i-m \in [0,H^l-1] 且j-n \in[0,\hat W^l-1] \ 0 &//i-m \notin [0,H^l-1] 或j-n \notin[0,\hat W^l-1] \tag {15} \end{cases} \end{align} $$ 可以看出公式(15)与公式(7)完全一致。
a) 卷积前向计算公式如下:
$$
\begin{align}
&z^l_{i,j} = \sum_{m=0}^{k_1^{l-1}-1} \sum_{n=0}^{k_2^{l-1}-1} W_{m,n}^{l-1} z_{i+m,j+n}^{l-1} + b^{l-1} & i \in [0,H^l-1], j\in [0,\hat W^l-1]\tag 4
\end{align}
$$
b) 损失函数$L$关于第$l-1$层权重$W^{l-1}$ 的梯度,是以损失函数$L$关于第$l$层梯度
d) 以损失函数$L$关于第$l-1$层梯度