卷积 导数 反向传播

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

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

宽卷积:给定一个二维图像X\epsilon R^{M*N}和一个二维卷积核W\epsilon R^{U*V},对图像X进行零填充,两端各补U-1V-1个零,得到全填充的图像\widetilde{X}\epsilon R^{(M+2U-2)*(N+2V-2)}.图像X和卷积核W的宽卷积定义为W\widetilde{\otimes }X=W\otimes \widetilde{X}。  其中,\widetilde{\bigotimes }表示宽卷积运算。

在宽卷积中,卷积核的宽度大于输入数据的宽度。如果我们将输入数据表示为1维向量,卷积核的宽度通常是小于或等于输入数据的长度。但在宽卷积中,卷积核的宽度可以超过输入数据的长度。

宽卷积可以带来以下好处:

  1. 更大的感受野: 宽卷积可以捕获输入数据的更大局部特征,因为卷积核跨越了更广泛的区域。这有助于网络学习全局性的模式和关系。

  2. 参数共享: 宽卷积仍然采用参数共享的思想,即卷积核的权重在整个输入上是共享的。这有助于减少模型的参数数量,提高训练效率。

  3. 计算复杂性: 宽卷积的计算复杂性相对较高,因为涉及到更多的输入数据点。在一些场景下,可以通过适当的设置卷积核的步幅(stride)来降低计算复杂性。

证明:

                              

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

X进行两端各补u-1,v-1个零,得到  \widetilde{X} ,

W进行两端各补m-1,n-1个零,得到 \widetilde{W},

要证明原公式成立,只需要证明:rot180(W)\bigotimes \widetilde{X}=rot180(X)\bigotimes \widetilde{W},

以下我来个例子

卷积 导数 反向传播_第1张图片

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

对于第一个情况,输入特征映射组的大小是100 × 100 × 256,使用3 × 3的卷积核,输出特征映射组的大小也是100 × 100 × 256。

时间复杂度: 假设输入特征映射组的大小为H1 × W1 × C1,卷积核大小为K × K,其中K表示卷积核的边长,C1表示输入特征映射组的通道数。 计算每个位置上的卷积操作需要进行K × K × C1次乘法和加法运算。由于输出特征映射组的大小与输入特征映射组相同,所以总共需要进行H1 × W1 × C1 × K × K次乘法和加法运算。

空间复杂度: 在进行卷积操作时,除了存储输入特征映射组和卷积核的数据外,还需要存储输出特征映射组的数据。因此,空间复杂度与输出特征映射组的大小相同,即100 × 100 × 256。

对于第二个情况,先使用1 × 1的卷积核将输入特征映射组的通道数降低为64,得到100 × 100 × 64的特征映射组,然后再使用3 × 3的卷积核将其扩展为100 × 100 × 256的特征映射组。

时间复杂度:

  1. 1 × 1卷积核:计算每个位置上的卷积操作需要进行1 × 1 × 256次乘法和加法运算,得到100 × 100 × 64的特征映射组。
  2. 3 × 3卷积核:计算每个位置上的卷积操作需要进行3 × 3 × 64次乘法和加法运算,得到100 × 100 × 256的特征映射组。 所以总共需要进行100 × 100 × 64 × 1 × 1次乘法和加法运算,以及100 × 100 × 256 × 3 × 3次乘法和加法运算。

空间复杂度: 在进行卷积操作时,除了存储输入特征映射组和卷积核的数据外,还需要存储中间结果与输出特征映射组的数据。因此,空间复杂度与输出特征映射组的大小相同,即100 × 100 × 256。

卷积 导数 反向传播_第2张图片

习题5-5 对于一个二维卷积, 输入为3 × 3, 卷积核大小为2 × 2, 试将卷积操作重写为仿射变换的形式. 参见公式(5.45) . 

卷积 导数 反向传播_第3张图片

卷积 导数 反向传播_第4张图片

附加题 阅读 “5.3.1 卷积神经网络的反向传播算法”,举例说明推导过程. 

以下是一个卷积的示例图:

卷积 导数 反向传播_第5张图片

以下是一个包含一个卷积层、一个池化层和一个全连接层的卷积神经网络反向传播算法的例子:

假设我们有一个卷积层,输入是 X,卷积核是 W1​,偏置项是 b1​,激活函数是 f1​,输出是 Y1​。接下来有一个池化层,池化窗口大小是 p×p,步长是 s,输出是 Y2​。最后有一个全连接层,输入是 Y2​,权重是 W2​,偏置项是 b2​,输出是 Y3​。损失函数是 L。

正向传播:

  1. Y1​=f1​(W1​∗X+b1​)
  2. Y2​=max(0,Y1​) (假设使用最大池化)
  3. Y3​=W2​∗Y2​+b2​
  4. O=softmax(Y3​) (假设使用 softmax 激活函数)

反向传播:

  1. 首先我们需要计算损失函数 L 对输出的梯度:∂O/∂L​
  2. 然后,我们将这个梯度传递给全连接层的输出 Y3​,得到:∂O/∂L​×∂Y2​/∂Y3​​
  3. 然后我们需要计算全连接层对池化层输出的梯度:∂Y2/​∂Y3​​×W2T​×∂O/∂L​ 
  4. 然后,我们将这个梯度传递给池化层的输出 Y2​,得到:∂O/∂L​×∂Y2/​∂Y3​​×W2T​×max(0,Y1​)   (其中 ∂Y2/​∂Y3​​=W2T​)
  5. 然后我们需要计算池化层对卷积层输出的梯度:∂Y1/​∂Y2​​×max(0,Y1​)×∂O/∂L​×∂Y2​/∂Y3​​×W2T​×max(0,Y1​) (其中 ∂Y1/​∂Y2​​={0,s,​ if Y1​<0 if Y1​≥0​)
  6. 最后,我们可以更新卷积核的参数:W1​=W1​−η×∂O/∂L​×∂Y2​/∂Y3​​×W2T​×max(0,Y1​)×s×max(0,Y1​)

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

卷积 导数 反向传播_第6张图片

可以看出,卷积层的前向计算和反向传播之间存在一种转置关系。在前向计算中,输入X与卷积核W进行卷积操作得到输出Y;而在反向传播中,梯度的传播则通过对卷积核W和输入X执行相同的卷积操作(转置之后)

习题5-8 在空洞卷积中, 当卷积核大小为, 膨胀率为时, 如何设置零填充的值以使得卷积为等宽卷积 

空洞卷积,也被称为膨胀卷积或扩张卷积,是一种在卷积神经网络中使用的卷积操作方法。与传统的卷积操作相比,空洞卷积引入了一个叫做膨胀率的参数。

在传统的卷积操作中,卷积核以固定的步幅在输入特征图上滑动并进行计算。而在空洞卷积中,通过在卷积核的元素之间插入一些间隔来改变卷积核的采样方式。

具体地说,对于每个卷积核的元素,将其与输入特征图上等距离的位置进行计算。膨胀率决定了卷积核元素之间的间隔大小。例如,如果膨胀率为1,则表示没有任何间隔,等同于传统的卷积操作;如果膨胀率大于1,则会在卷积核元素之间插入一些间隔。

(M - K' + 2P)/S + 1 = M\\S=1\\ K' = K + (K-1)(D-1)

得到:

P = (K-1)D/2

总结: 

1、有一些知识课上开小差没学会,做课后作业可以看到不足,增长知识

2、推导尽量参数写好看点,要不然自己都看乱了,容易出错

卷积 导数 反向传播_第7张图片

参考链接:

【23-24 秋学期】NNDL 作业8 卷积 导数 反向传播-CSDN博客

NNDL 作业3 反向传播BP-CSDN博客

你可能感兴趣的:(深度学习,计算机视觉,cnn)