卷积 导数 反向传播

5-2证明款卷积具有交换性,即:

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

乘法交换律可知x_{i,j}w_{p,q}=w_{p,q}x_{i,j},因此矩阵内对应元素均相等,即

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

进一步得出:rot180(W)\tilde{\bigotimes }X=rot180(X)\tilde{\bigotimes }W

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

1、Ot=100*100*3*3*256*256=5898240000

Os=100*100*256+3*3*256*256=3149824

2、Ot=100*100*1*1*256*64+100*100*3*3*64*256=1638400000

Os=100*100*64+100*100*256+3*3*256*64+3*3*64*256=3494912

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

z=\omega \bigotimes x=Cx

将输入输出分别展开为9×1、4×1的矩阵:

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

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

卷积核有效大小为:{K}'=K+(K-1)(D-1)

将其带入(M-{K}'+2P)/2=M得出P=(K-1)D/2

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

需要解决的问题:

  • 池化层没有激活函数,可以令池化层的激活函数为其本身,因此池化层激活函数的导数为1.
  • 一致池化层的\delta ^{l},推导上一隐藏层的\delta ^{l-1},因为池化层在前向传播过程中对输入进行了压缩,因此需要向前反向推导

举例表示:假设池化区域为2×2,则\delta ^{l}的第k个子矩阵为:

 对其还原成:

若是MAX池化,假设前向传播时记录的最大值位置为左上、右下、右上、左下,则转换后的矩阵为:

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

 由此得出:

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

  • 卷积层是通过张量卷积,或者是若干个矩阵求和而得的当前层的输出,这和DNN不同,DNN的全连接层是直接进行矩阵乘法得到当前层的输出。由此,反向传播中,上一层的\delta ^{l-1}地推计算方法肯定有所不同

这里与DNN过程相似,区别在于对于含有卷积的式子求导时,卷积核被旋转了180度,即rot180()。而DNN这里只是矩阵的转置。

  • 对于卷积层,由于W使用的运算是卷积,那么 从\delta ^{l}推导出该层的所有卷积核W,b的方式也不同。

对于全连接层,可以按DNN的反向传播算法求该层的W,b的梯度,而池化层并没有W,b,也不用求W,b的梯度。只有卷积层的W,b需要求。

W和b的关系为:

 此时卷积核并没有反转,主要是层内的求导,而不是反向传播到上一层的求导。因此有

对于b的梯度:因为\delta ^{l}是高维张量,而b只是一个向量,不能像DNN那样直接和\delta ^{l}相等。通常是将\delta ^{l}的各个子矩阵的项分别求和,得到一个误差向量,即:

参考:

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

NNDL 作业7:第五章课后题-CSDN博客

卷积神经网络(CNN)反向传播算法 - 刘建平Pinard - 博客园 (cnblogs.com)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
卷积神经网络(CNN)反向传播是指在CNN训练过程中,通过计算误差反向传播来更新网络的权重参数。具体步骤如下: 1. 前向传播:将输入数据通过卷积层、池化层、全连接层等进行处理,得到输出结果。 2. 计算误差:将输出结果与真实结果进行比较,计算误差。 3. 反向传播:将误差通过网络反向传播,计算各层的误差梯度。 4. 更新参数:根据误差梯度更新网络中的权重参数,使得网络的输出结果更加接近真实结果。 具体来说,反向传播的计算可以分为两个部分:误差反向传播和权重更新。 误差反向传播:对于每个输出节点 $i$,计算其误差 $\delta_i$,即真实输出值与预测输出值的差值。对于最后一层的输出节点,误差可以直接计算得到。而对于其他层的节点,误差需要由下一层节点的误差加权求和得到。具体来说,对于第 $l$ 层的节点 $i$,其误差 $\delta_i$ 可以通过以下公式计算: $\delta_i = f'(z_i)\sum_{j} w_{ji}\delta_j$ 其中,$f'(z_i)$ 表示第 $l$ 层节点的激活函数的导数,$w_{ji}$ 表示第 $l+1$ 层节点 $j$ 到第 $l$ 层节点 $i$ 的权重。 权重更新:根据误差梯度更新网络中的权重参数。具体来说,对于第 $l+1$ 层节点 $j$ 到第 $l$ 层节点 $i$ 的权重 $w_{ji}$,可以通过以下公式进行更新: $w_{ji} = w_{ji} - \eta \delta_j x_i$ 其中,$\eta$ 表示学习率,$x_i$ 表示第 $l$ 层节点 $i$ 的输入值。 通过不断迭代更新网络的权重参数,CNN可以逐渐学习到输入数据的特征,从而实现对图像、语音等复杂数据的分类、识别等任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值