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

目录

1.证明宽卷积具有交换性, 即公式(5.13).

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

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

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

5. 在空洞卷积中, 当卷积核大小为𝐾, 膨胀率为𝐷时, 如何设置零填充𝑃的值以使得卷积为等宽卷积 .

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

在卷积神经网络的反向传播算法,需要特别注意的点:

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

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

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

详细流程:

总结:


 1.证明宽卷积具有交换性, 即公式(5.13).

 证明:

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

由于是宽卷积,所以可以转化为:

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

W,X的通式为:

 旋转180度:

给W行列两段各填充:m-1,n-1 ,得到填充后的\widetilde{W}

 给X行列两段各填充:u-1,v-1 ,得到填充后的\widetilde{X}

根据前面的处理后的通式,计算得到:

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

由计算结果可得: 两式相等,只是x,w的顺序颠倒结果不变。

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

所以:宽卷积具有交换性。

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

在这个证明过程中,主要是使用具有一般性的通式,进行计算,走一遍计算的流程,得到根据通式计算的结果交换后是一样的,从而宽卷积的交换性。

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

 第一种情况:

C_{in}=256, C_{out}=256 ,K=3,M=100  

O_{t1}=M^{2}\cdot K^{2}\cdot C_{in}\cdot C_{out}=5898240000
O_{s1}=K^{2}\cdot C_{in}\cdot C_{out}+M^{2}\cdot C_{out}=3149824

第二种情况:

 C_{in1}=256, C_{out1}=64,C_{in2}=64, C_{out2}=256

K_{1}=1,K_{2}=3,M=100

O_{t2}=M^{2}\cdot K_{1}^{2}\cdot C_{in1}\cdot C_{out1}+M^{2}\cdot K_{2}^{2}\cdot C_{in2}\cdot C_{out2}=1638400000
O_{s1}=K_{1}^{2}\cdot C_{in1}\cdot C_{out1}+K_{2}^{2}\cdot C_{in2}\cdot C_{out2}+M^{2}\cdot C_{out1}+M^{2}\cdot C_{out2}=3363840

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

输入和卷积核初始形式为:

将卷积操作重新写为仿射变换的形式,即:

z=w\otimes x=Cx

C为卷积核变形的稀疏矩阵,因为x为3\times 3的输入,将其拉为一个九维的向量,和C相乘结果和卷积的一样,所以w的稀疏矩阵为4\times 9。再根据卷积的过程推出稀疏矩阵,得到仿射变换的形式如图所示:

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

卷积层的前向传播:z=w\otimes x,写为仿射变换的形式z=w\otimes x=Cx,以上一题为例,输入3\times 3,卷积核大小2\times 2,经过卷积操作,实现了9维到4维的映射。

而反向传播过程:实现的是四维到九维的映射,x=C^{T}z

其形式正如:

z=w\otimes x,x=rot180(w)\widetilde{\otimes }z 

所以:卷积网络中卷积层的前向计算和反向传播是一种转置关系.

5. 在空洞卷积中, 当卷积核大小为𝐾, 膨胀率为𝐷时, 如何设置零填充𝑃的值以使得卷积为等宽卷积 .

 空洞卷积即为:在卷积核的每两个元素之间插入D − 1个空洞,以此来增加卷积核的大小,从而增加输出单元的感受野。如图所示:卷积核的有效大小为K{}'=K+(K-1)(D-1)

膨胀率D=2的空洞卷积

 等宽卷积即为:卷积输入和输出的宽度相同。

所以:要设置零填充𝑃的值以使得卷积为等宽卷积,应该满足:

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

K{}'=K+(K-1)(D-1)

所以:P=(K-1)D/2

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

在卷积神经网络的反向传播算法,需要特别注意的点:
  • 已知池化层的误差,反向推导上一隐藏层的误差
假设池化层大小为: 2\times 2
池化层没有激活函数  : \sigma (z)=z,\sigma{}' (z)=1
在池化层的反向传播过程中:先对池化后的数据做上采样。假设池化区域大小是2x2。的第k个子矩阵为:

在这里插入图片描述

先将它还原为池化前的大小:

在这里插入图片描述

如果是前向传播过程中使用的是最大池化MAX,则根据在前向传播时记录的最大值位置,例如:分别是左上,右下,右上,左下,则转换后的矩阵为:

在这里插入图片描述

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

在这里插入图片描述

这样,upsample函数完成了池化误差矩阵放大与误差重新分配的逻辑。

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

卷积层的反向传播:过程和之前DNN的误差反向传播差不多,只是将W旋转了180度,进行转置。在误差矩阵周围填充了一圈0,此时将卷积核翻转后和反向传播的梯度误差进行卷积,就得到了前一次的梯度误差。详细流程如图所示:

公式如下: 

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

 (1)对于卷积层W:公式如下,此时是层内的求导,而不是反向传播到上一层的求导 ,所以无需再反转卷积核。

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

(2)池化层没有W,b,不用 计算w,b。

(3)对于全连接层:

详细流程:

1. 对神经网络进行初始化,定义好网络结构,设定好激活函数,对卷积层的卷积核W、偏置b进行随机初试化,对全连接层的权重矩阵W和偏置b进行随机初始化。
设置好训练的最大迭代次数,每个训练batch的大小,学习率 \eta

2. 从训练数据中取出一个batch的数据

3. 从该batch数据中取出一个数据,包括输入x以及对应的正确标注y

4. 前向传播:将输入x送入神经网络的输入端,得到神经网络各层输出参数z和a

5. 根据神经网络的输出和标注值y计算神经网络的损失函数

6. 计算损失函数对输出层的误差\delta ^{L}

7. 利用相邻层之间delta误差的递推公式求得每一层的delta误差

8. 利用每一层的误差求出损失函数对该层参数的导数

  • 卷积层:

  • 全连接层:

9. 将求得的导数加到该batch数据求得的导数之和上(初始化为0),跳转到步骤3,直到该batch数据都训练完毕

10. 利用一个batch数据求得的导数之和,根据梯度下降法对参数进行更新

11. 跳转到步骤2,直到达到指定的迭代次数

总结:

这次作业主要是就卷积神经网络的反向传播过程进行了详细总结,其中主要是公式的推导,没有像大佬们一样详细的一步一步进行推导,对于我有点困难,所以就自己按照老师们的推导过程走了一遍,进行了总结梳理,尤其是其公示的推导,它们和之前全连接的区别等等,包括前面几题对公式的证明理解。使我更加深入的了解学习了卷积神经网络的反向传播过程。


【NNDL作业】 宽卷积具有交换性_卷积交换律公式证明_HBU_David的博客-CSDN博客

刘建平 卷积神经网络(CNN)反向传播算法

Stacey.933 NNDL 作业7:第五章课后题

### 回答1: nndl-book是指《自然语言处理综述》一书,它是由计算机科学领域的权威学者Christopher Manning和Hinrich Schütze共同编写的一本综述自然语言处理技术的教材。这本书首次出版于1999年,现已有第二版和第三版。nndl-book的内容广泛而深入,涵盖了自然语言处理领域的基础知识和最新进展,包括文本处理、语法分析、语义理解、信息检索、机器翻译等等方面。此外,书中还涉及了许多实用的技术和算法,比如条件随机场、最大熵模型、词向量和深度学习等。nndl-book的读者群体包括学术界和工业界的研究者、开发者和学生,也适合对自然语言处理领域感兴趣的读者学习。总之,nndl-book是自然语言处理领域的一本重要的参考书籍,它为我们深入了解自然语言处理的技术和应用提供了宝贵的指导。 ### 回答2: NNDL-Book是一个著名的Python深度学习库,它是一个开源项目,由加拿大多伦多大学教授Geoffrey Hinton和他的学生Alex Krizhevsky等人创建。NNDL-Book在计算机视觉、自然语言处理和语音识别等领域得到广泛应用,它提供了丰富的神经网络模型和算法,包括卷积神经网络(CNN)、循环神经网络(RNN)和长短时记忆网络(LSTM)等。此外,NNDL-Book还提供了多种数据处理工具和训练技巧,以帮助开发者更高效地构建和训练深度学习模型。总的来说,NNDL-Book是深度学习领域的重要工具之一,对于帮助人们在各种应用场景中实现AI自动化,提高效率和精度都有很大的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值