NNDL 作业7:第五章课后题(1×1 卷积核 | CNN BP)

习题5-2 证明宽卷积具有交换性,即公式(5.12)

证明:
不失一般性,设:

X= \begin{pmatrix} x_{11} &x_{12} & \cdots &x_{1n} \\ x_{21} &x_{22} & \cdots &x_{2n} \\ \vdots &\vdots & \ddots & \vdots \\ x_{m1} &x_{m2} &\cdots& x_{mn} \end{pmatrix} 

则:

rot(W)= \begin{pmatrix} w_{uv} &w_{u,v-1} & \cdots &w_{u1} \\ w_{u-1,v} &w_{u-1,v-1} & \cdots &w_{u-1,1} \\ \vdots &\vdots & \ddots & \vdots \\ w_{1v} &w_{1,v-1} &\cdots& w_{11} \end{pmatrix}

rot(X)= \begin{pmatrix} x_{mn} &x_{m,n-1} & \cdots &x_{m1} \\ x_{m-1,n} &x_{m-1,n-1} & \cdots &x_{m-1,1} \\ \vdots &\vdots & \ddots & \vdots \\ x_{1n} &x_{1,n-1} &\cdots& x_{11} \end{pmatrix} 

 

两端各补m-1和n-1个零,得到:

\widetilde{W}= \begin{pmatrix} 0_{11} &0_{12} &\cdots &0_{1,n-1} &0_{1,n} &0_{1,n+1} &\cdots &0_{1,v+n-1} &0_{1,v+n} &0_{1,v+n+1} &\cdots &0_{1,v+2n-2} \\ 0_{21} &0_{22} &\cdots &0_{2,n-1} &0_{2,n} & & & & & & & \vdots\\ \vdots &\vdots &\ddots &\vdots &\vdots & & & & &\ddots & & \vdots\\ 0_{m-1,1} &0_{m-1,1} &\cdots &0_{m-1,n-1} &0_{m-1,n} & & &0_{m-1,v+n-1} & & & & \vdots\\ 0_{m,1} & & & &w_{11} &w_{12} &\cdots &w_{1v} & & & & \vdots \\ \vdots & & & &w_{21} &w_{22} &\cdots &w_{2v} & & & & \vdots \\ \vdots & &\ddots & &\vdots &\vdots &\ddots &\vdots & &\ddots & & \vdots \\ 0_{u+m-1,1} & & & &w_{u1} &w_{u2} &\cdots &w_{uv} & & & & \vdots \\ 0_{u+m-1,1} & & & & & & & & & & \vdots \\ \vdots& &\ddots & & & & & & &\ddots & & \vdots \\ \vdots& & & & & & & & & & & \vdots \\ 0_{u+2m-2,1}& & & & & & & & & & & 0_{u+2m-2,v+2n-2} \end{pmatrix}
  
两端各补u-1和v-1个零,得到:

 \widetilde{X}= \begin{pmatrix} 0_{11} &0_{12} &\cdots &0_{1,v-1} &0_{1,v} &0_{1,v+1} &\cdots &0_{1,v+n-1} &0_{1,v+n} &0_{1,v+n+1} &\cdots &0_{1,n+2v-2} \\ 0_{21} &0_{22} &\cdots &0_{2,v-1} &0_{2,v} & & & & & & & \vdots\\ \vdots &\vdots &\ddots &\vdots &\vdots & & & & &\ddots & & \vdots\\ 0_{u-1,1} &0_{u-1,1} &\cdots &0_{u-1,v-1} &0_{u-1,n} & & &0_{u-1,v+n-1} & & & & \vdots\\ 0_{u,1} & & & &x_{11} &x_{12} &\cdots &x_{1n} & & & & \vdots \\ \vdots & & & &x_{21} &x_{22} &\cdots &x_{2n} & & & & \vdots \\ \vdots & &\ddots & &\vdots &\vdots &\ddots &\vdots & &\ddots & & \vdots \\ 0_{u+m-1,1} & & & &x_{m1} &x_{m2} &\cdots &x_{mn} & & & & \vdots \\ 0_{u+m-1,1} & & & & & & & & & & \vdots \\ \vdots& &\ddots & & & & & & &\ddots & & \vdots \\ \vdots& & & & & & & & & & & \vdots \\ 0_{m+2u-2,1}& & & & & & & & & & & 0_{m+2u-2,n+2v-2} \end{pmatrix}

 由定义:

rot180(W) \widetilde{\otimes }X = rot180(W) \otimes\widetilde{X} 

将代入,计算可得:

rot180(W)\otimes \widetilde{X}=\begin{pmatrix} w_{11}x_{11}&w_{11}x_{12}+w_{12}x_{11} &\cdots &w_{1v} x_{1n}\\ w_{21}x_{11}+w_{11}x_{21} &w_{22}x_{11}+w_{21}x_{12}+w_{12}x_{21}+w_{11} x_{22}&\cdots &w_{2v}x_{1n}+w_{1v}x_{2n} \\ \vdots&\vdots &\ddots &\vdots \\ w_{u1}x_{m1}&w_{u2}x_{m1}+w_{u1}x_{m2} &\cdots &w_{un} x_{mn}\end{pmatrix} 

【更正】两个矩阵右下角的元素w_{un}应为

乘法交换律可知:x_{ij}w_{pq} = w_{pq}x_{ij} ,所以矩阵内的对应位置的元素均相等,即两个矩阵相等。

 因此:rot180(W) \otimes\widetilde{X} = rot180(X) \otimes\widetilde{W}

 进一步可得:rot180(W) \widetilde{\otimes }X = rot180(X) \widetilde{\otimes }W

 原式得证. 

习题5-3 分析卷积神经网络中1×1卷积核的作用

  1. 降维和升维:
    每个1×1的卷积核都试图提取基于相同像素位置的特征的融合表达。可以实现特征升维和降维的目的。
    比如,一张500 * 500且厚度depth为100 的图片在20个filter上做11的卷积,那么结果的大小为500500*20。
  2. 加入非线性:
    1*1卷积核,可以在保持feature map尺度不变的(即不损失分辨率)的前提下大幅增加非线性特性(利用后接的非线性激活函数),把网络做的很deep。

习题5-4 对于一个输入为100×100×256的特征映射组,使用3×3的卷积核,输出为100×100×256的特征映射组的卷积层,求其时间和空间复杂度.如果引入一个1×1卷积核,先得到100×100×64的特征映射,再进行3×3的卷积,得到100×100×256的特征映射组,求其时间和空间复杂度。

时间复杂度一:256×100×100×256×3×3=5898240000

空间复杂度一:256×100×100=2560000

时间复杂度二:64×100×100×256 + 256×100×100×64×3×3 = 1,638,400,000

空间复杂度二:64×100×100 + 256×100×100 = 3,200,000

习题5-7 忽略激活函数,分析卷积网络中卷积层的前向计算和反向传播(公式(5.39))是一种转置关系

CNN的反向传播

1、已知池化层的误差,反向推导上一隐藏层的误差

在前向传播时,池化层我们会用MAX或者Average对输入进行池化,池化的区域大小已知。现在我们反过来,要从缩小后区域的误差,还原前一层较大区域的误差。这个过程叫做upsample。假设我们的池化区域大小是2x2。第l层误差的第k个子矩阵\delta _{lk}为:

\delta _{lk}=\begin{pmatrix} 2 &8 \\ 4 & 6 \end{pmatrix}

如果池化区域表示为a*a大小,那么我们把上述矩阵上下左右各扩展a-1行和列进行还原:

\begin{pmatrix} 0 & 0 & 0 & 0\\ 0& 2& 8&0 \\ 0& 4& 6& 0\\ 0& 0& 0& 0 \end{pmatrix}

如果是MAX,假设我们之前在前向传播时记录的最大值位置分别是左上,右下,右上,左下,则转换后的矩阵为:

\begin{pmatrix} 2& 0& 0& 0\\ 0& 0& 0& 8\\ 0& 4& 0& 0\\ 0& 0& 6 & 0 \end{pmatrix}

如果是Average,则进行平均,转换后的矩阵为:

\begin{pmatrix} 0.5 & 0.5 & 2& 2\\ 0.5& 0.5& 2 & 2\\ 1& 1& 1.5&1.5 \\ 1& 1 & 1.5 & 1.5 \end{pmatrix}

 上边这个矩阵就是误差矩阵经过upsample之后的矩阵,那么,由后一层误差推导出前一层误差的公式为:

\delta ^{l-1}=upsample(\delta^l) \odot \sigma '(z^{l-1})

2、已知卷积层的误差,反向推导上一隐藏层的误差

公式如下:

我们再看一次普通网络的反向推导误差的公式:

可以看到区别在于,下一层的权重w的转置操作,变成了旋转180度的操作,也就是上下翻转一次,左右再翻转一次,这其实就是“卷积”一词的意义(我们可简单理解为数学上的trick),可参考下图,Q是下一层的误差,周围补0方便计算,W是180度翻转后的卷积核,P是W和Q做卷积的结果:
NNDL 作业7:第五章课后题(1×1 卷积核 | CNN BP)_第1张图片

3、已知卷积层的误差,推导该层的W,b的梯度

经过以上各步骤,我们已经算出每一层的误差了,那么:
a)对于全连接层,可以按照普通网络的反向传播算法求该层W,b的梯度。
b)对于池化层,它并没有W,b,也不用求W,b的梯度。
c)只有卷积层的W,b需要求出,先看w:

对比普通网络的求w梯度的公式,发现区别在于,对前一层的输出做翻转180度的操作:

\frac{\partial C}{\partial w_{jk}^l}=a_k^{l-1}\delta_j^l

对于b,则稍微有些特殊,因为在CNN中,误差δ是三维张量,而b只是一个向量,不能像普通网络中那样直接和误差δ相等。通常的做法是将误差δ的各个子矩阵的项分别求和,得到一个误差向量,即为b的梯度:

\frac{\partial J(W,b)}{\partial b^l}=\sum_{u,v}^{U,V}(\delta^l)_{u,v}

你可能感兴趣的:(1024程序员节)