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

news2024/11/27 10:44:31

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

图像X和卷积核W的宽卷积定义如下:

要证明:当图像X和卷积核W有固定长度时,他们的宽卷积具有满足交换性,如下:

设二维图像为:X\in R^{M*N},也就是:

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

对应卷积核为:W\in R^{U*V},也就是:

W=\begin{pmatrix}w_{11} &w_{12} &... &w_{1v} \\ w_{21} & w_{22} & ... &w_{2v} \\ \vdots & \vdots & \ddots & \vdots \\ w_{u1} & w_{u2} & ... & w_{uv} \end{pmatrix}

可知,rot(X)为:

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

rot(W)为:

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

对X进行零填充,填充后的全填充图像为\widetilde{X}\in R^{(M+2*U-2)*(N+2*V-2)}

对W进行零填充,填充后的全填充图像为\widetilde{W}\in R^{(U+2*U=M-2)*(V+2*N-2)}

由于这俩图太难画,所以比照着3*3的X矩阵和2*2的W矩阵画在纸上:

\widetilde{W}如下图所示【W矩阵填充后】:

计算rot(X)\bigotimes \widetilde{W},如下图所示:

可以比较rot(X)和\widetilde{W}图像,可以看到,第一个相乘的元素是x11和w11,为了方便,我计算了四个角的值,可以推算出rot(X)\bigotimes \widetilde{W}为:

rot(X)\bigotimes \widetilde{W}=\begin{pmatrix}x_{11} *w_{11} &... &x_{1n} *w_{1v} \\ \vdots & \ddots & \vdots \\ x_{m1} *w_{u1} & ... & x_{mn}* *w_{uv} \end{pmatrix}

\widetilde{X}如下:

【上图最上边红线范围错了,是0_{11}-0_{1,v-1}】 

同理,得到:

rot(W)\bigotimes \widetilde{X}=\begin{pmatrix}x_{11} *w_{11} &... &x_{1n} *w_{1v} \\ \vdots & \ddots & \vdots \\ x_{m1} *w_{u1} & ... & x_{mn}* *w_{uv} \end{pmatrix}

故此证明交换性。

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

习题5-4

(1)对于一个输入为100 × 100 × 256的特征映射组, 使用3 × 3的卷积核, 输出为100 × 100 × 256的特征映射组的卷积层, 求其时间和空间复杂度.

参考【一维卷积与一维平均池化的时间复杂度_池化层的时间复杂度-CSDN博客】

得到单个卷积层的时间复杂度Time~O(M^2 * K^2 * Cin * Cout)

M:输出特征图(Feature Map)的尺寸。
K:卷积核(Kernel)的尺寸。
Cin:输入通道数。
Cout:输出通道数。

参考【NNDL 作业7:第五章课后题(1×1 卷积核 | CNN BP)_卷积核运算例题-CSDN博客】

得到单个卷积的空间复杂度Space~O(K^2 * Cin * Cout+M^2*Cout)


 可知,M=100,K=3,Cin=256,Cout=256


可以求解:

时间复杂度=100*100*3*3*256*256=5898,240,000

空间复杂度=3*3*256*256+100*100*256=3,149,824

(2)如果引入一个1 × 1卷积核, 先得到100 × 100 × 64的特征映射, 再进行3 × 3的卷积, 得到100 × 100 × 256的特征映射组, 求其时间和空间复杂度.


可知,M1=100,K1=1,Cin1=256,Cout1=64;M2=100,K2=3,Cin2=64,Cout2=256


 可以求解:

时间复杂度=100*100*1*1*256*64+100*100*3*3*64*256=1638,400,000

空间复杂度=3*3*64*256+100*100*256=2,707,456

关于我自己的理解是空间复杂度至于最后一次卷积所占空间有关,后来参考【卷积神经网络的复杂度分析 - 超杰 (spytensor.com)】发现不对,他的解释如下:

其中提到层数,我理解这里的卷积层数指的是卷了几次,在本题中卷了两次,所以:

 空间复杂度=1×1×256×64+100×100×64+3×3×64×256+100×100×256=3363840

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

由题意得,二维卷积输入大小为:3*3,故将3×3输入展开成9维的。卷积核大小为2×2,共需要做四次卷积操作。

原来:

如下表所示:

输入3*3展开9维:

x_{0}
x_{1}
x_{2}
x_{3}
x_{4}
x_{5}
x_{6}
x_{7 }
x_{8}

卷积核:

w_{11}w_{12}0w_{21}w_{22}0000
0w_{11}w_{12}0w_{21}w_{22}000
000w_{11}w_{12}0w_{21}w_{22}0
0000w_{11}w_{12}0w_{21}w_{22}

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

1.池化层反向传播

由于池化层没有激活函数,所以不需要求导计算,所以𝜎(𝑧) = 𝑧,则𝜎(𝑧) = 1

但是池化层对输入进行了压缩【以最大池化层Max Pooling为例】,我们需要做的是通过已知池化层的\delta _{l},推导出上一隐藏层的\delta _{l-1}

已知池化层:

那么上一层情况可以还原为:

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

 其中使用upsample函数完成池化误差矩阵放大与误差重新分配的逻辑,得到\delta _{l-1}公式如下:

2.卷积层反向传播

假设卷积层为\delta^{l}

先看看卷积层的正向计算:【图来自Convolutional Neural Networks backpropagation: from intuition to derivation – Grzegorz Gwardys (wordpress.com)】

 根据习题5-7,可知卷积层的前向计算和反向传播是转置关系【证明看习题5-7】

也就是说上一层卷积层\delta ^{l-1}与本层\delta ^{l}的关系为:

\delta ^{l-1}=W^{l^{T}}*\delta ^{l}=rot180(W^{l})*\delta ^{l}

 3.已知卷积层\delta ^{l},求解本层W和b

而池化层并没有W,b,也不用求W,b的梯度。只有卷积层的W,b需要求解:

卷积层z和W,b的关系为:

则对W求导:

 对b进行求导【将\delta ^{l}的各个子矩阵的项分别求和,得到一个误差向量,即为b的梯度】

进行反向传播计算时:

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

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

以习题5-5为例,其中:

X=\begin{pmatrix}x_{1} &x_{2} &x_{3} \\ x_{4} & x_{5} & x_{6}\\ x_{7} & x_{8} & x_{9} \end{pmatrix}

C=\begin{pmatrix}w_{11} &w_{12} \\ w_{21} & w_{22} \end{pmatrix}

卷积:Y=C\bigotimes X以后,得到Y:

Y=\begin{pmatrix}y_{1} &y_{2} \\ y_{3} & y_{4} \end{pmatrix}

在5-3中也知道了W和X的展开情况,从展开情况可以看出,y的4个值是展开4*9的卷积核【一行9个】通过展开9维的X【一列9个】相乘得到的,那么可以推出:

y_{i}=\sum_{i=1,j=1}^{9}W_{ij}*x_{j}

上式即为前向计算。

反向计算,也就是求loss关于x的导得到一个x关于y的关系式;

\frac{\partial Loss}{\partial x}=\frac{\partial Loss}{\partial y}*\frac{\partial y}{\partial x}

由于反向求解是使用4个y得到每个x,所以:

\frac{\partial Loss}{\partial xj}=\sum_{i=1}^{4}\frac{\partial Loss}{\partial y_{i}}*\frac{\partial y_{i}}{\partial x_{j}}

已知y和x的关系,所以:

\frac{\partial Loss}{\partial xj}=\sum_{i=1}^{4}\frac{\partial Loss}{\partial y_{i}}*W_{ij}

所以:

\frac{\partial Loss}{\partial x}=W^{T}*\frac{\partial Loss}{\partial y}

可以看到,y_{i}=\sum_{i=1,j=1}^{9}W_{ij}*x_{j}\frac{\partial Loss}{\partial x}=W^{T}*\frac{\partial Loss}{\partial y},前向计算和反向传播是转置关系。

也就是:

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

【神经网络与深度学习[邱锡鹏] 第五章习题解析 - whyaza - 博客园 (cnblogs.com)】

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

1.空洞卷积的概念

空洞卷积引入了一个称为 “扩张率(dilation rate)”的超参数(hyper-parameter),该参数定义了卷积核处理数据时各值的间距。扩张率中文也叫空洞数(Hole Size)。

 其中

  • a是普通的卷积过程(dilation rate = 1),卷积后的感受野为3

  • b是dilation rate = 2的空洞卷积,卷积后的感受野为5

  • c是dilation rate = 3的空洞卷积,卷积后的感受野为8

 计算方式为:𝐾’ = 𝐾 + (𝐾 − 1) × (𝐷 − 1)【D是膨胀率,D-1是每两个插入的空洞数,K是原来的感受野/卷积核大小】

以上参考【深入理解空洞卷积 (qq.com)

 2.等宽卷积的概念

 假设卷积层的输入神经元个数为 𝑀 ,卷积大小为 𝐾 ,步长为 𝑆 ,在输入两端各填补 𝑃 个 0
(zero padding),那么该卷积层的神输出经元数量为 :(𝑀 − 𝐾 + 2𝑃)/𝑆 + 1

卷积的结果按输出长度不同可以分为三类(𝐾表示卷积核长度):
1)窄卷积 :步长 𝑆 =1,两端不补零 𝑃 =0 ,卷积后输出长度为 𝑀 − 𝐾 + 1;
2)宽卷积 :步长 𝑆 =1,两端补零 𝑃 = 𝐾 − 1 ,卷积后输出长度 𝑀 + 𝐾 − 1;
3)等宽卷积 :步长 𝑆 =1,两端补零 𝑃 =( 𝐾 − 1)/2 ,卷积后输出长度 𝑀;
参考【深度学习之 10 卷积神经网络1_如何求等宽卷积-CSDN博客】

3.求解

已知现在的卷积核大小为K,膨胀率是D,可求出新的卷积核大小为K1=K+(K-1)*(D-1)

再根据上边等宽卷积的概念,可知:P=(K1-1)/2,也就是P=[K+(K-1)*(D-1)-1]/2

化简后为:P=D*(K-1)/2

总结

目前感觉卷积最难的地方在求解反向传播,还有证明上,感觉各种数学式子看起来比较费劲,在这里我试试不带数学式的总结一下:

1,证明宽卷积具有交换性

这个我看到的有直接以3*3输入、2*2卷积为例证明的,但是这样的证明不具有普遍性,后来我还是参考了老师的博客写的:

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

 其中想要证明交换性:首先举出一个无穷大的矩阵X:m*n,卷积W:u*v,然后分别求解他们的rot180,再进行零填充【以对X0填充为例】,要求是两边m-1,两边n-1,然后与W相乘,得到一个数;另一边反过来,得到一个数,如果相等则得证。

2,求解时间空间复杂度

记住公式直接套,其中我有疑问并修改了的是第二小问:有两个卷积核,求空间复杂度。

在【卷积神经网络的复杂度分析 - 超杰 (spytensor.com)】写的比较明白,空间复杂度要算这两次卷积的总和。

3,卷积神经网络的反向传播

这个是真的很让我难受啊,扣了半天手指,大概思路如下:

你要想求解反向传播,你必须了解正向是怎么走的:

 图来自【卷积神经网络与迁移学习 卷积神经网络推导_mob6454cc692b0f的技术博客_51CTO博客】

其中有两个关键层【卷积层和池化层】,这时候我还想到了批量规范化层,但是没搜到相关资料,就没求这部分。

对于池化层,使用一个函数就可以推导出池化前的矩阵【upsample

对于卷积层,求解上一层可以根据上一层与本层关系【转置】来求解

求解卷积层的W和b,和前边学过的前馈神经反向传播有点类似,使用损失求解,b有点不同,b的梯度是各个子矩阵的项分别求和,得到一个误差向量。

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

证明转置关系关键的一环是:求解X关于loss的导,可以得到X与Y的一个反向关系。这样就能证明了。

5,设置零填充𝑃的值以使得卷积为等宽卷积

考察概念:什么是等宽、什么是空洞卷积、什么是膨胀率,然后记住公式就可求解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1254727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为OD】B\C卷真题 100%通过:找城市 多叉树实现 python源码

【华为OD】B\C卷真题 100%通过:找城市 多叉树实现 python源码 目录 题目描述: 示例1 示例2 解题思路: 代码实现: 题目描述: 一张地图上有n个城市,城市和城市之间有且只有一条道路相连:要么直接相连&…

Android设计模式--桥接模式

闻正言,行正道,左右前后皆正人 一,定义 将抽象部分与实现部分分离,使它们都可以独立地进行变化 二,使用场景 从模式的定义中,我们大致可以了解到,这里的桥接的作用其实就是连接抽象部分与实现…

如何提高API性能

下图给出了提高API性能的5个常用技巧 分页 当结果很大时,这是一种常见的优化。结果会流回客户端以提高服务响应能力。 异步日志记录 同步日志记录每次调用都会处理磁盘,并且会降低系统速度。异步日志记录首先将日志发送到无锁缓冲区并立即返回。日志将…

肾合胶囊 | 冬不养肾春易病,若出现了这六大表现,小心是肾虚!

冬季作为一年中最寒冷的季节,自然万物皆静谧闭藏,而肾具有潜藏、封藏、闭藏精气的特点,是封藏之本,肾的脏腑特性与冬季相通应,所以在冬季更应该重视养肾。 而现在正值初冬,正是开始养肾的最佳时间。此时培…

2018年3月26日 Go生态洞察:Go包版本管理提案分析

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Java核心知识点整理大全16-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

4/5G互操作 EPSFB讲解

今天我们来讲一下4/5G之间之间互操作,以及5G的EPSFB是基于什么实现的~ 目录 4/5G互操作 重选 切换 基于覆盖的切换 基于业务的切换 两个面试问题 想要加快4G切换5G的速度,调哪个参数怎么调高效? 想要减慢5G切换4G的速度调哪个参数怎…

STM32 F1 串口空闲中断 + DMA实现数据发送

DMA实现数据发送 文章目录 DMA实现数据发送前言一、DMA二、代码编写1.DMA2.USART3.main 前言 当你遇到通信数据量大的时候,可以使用 空闲中断 DMA 的方案来减轻 CPU 的压力。 或者 在进行stm32开发时,有时会遇到这种情况:需要在设备间进行数…

字符串原地旋转

记录一下做的练习题 字符串原地旋转:五 三 mat [[1,2,3],[3,4,5],[4,5,6]] tag0 total 0 for i in mat:total total i[tag]tag 1 print(total) 四 X [[12,7,3],[4,5,6],[7,8,9]] Y [[5,8,1],[6,7,3],[4,5,9]] res [[0,0,0],[0,0,0],[0,0,0]] for i in rang…

2024年天津天狮学院市场营销专业《管理学》考试大纲

2024年天津天狮学院专升本市场营销专业高职升本入学考试《管理学》考试大纲 一、考试性质 《管理学》专业课程考试是天津天狮学院市场营销专业高职升本入学考试的必考科 目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《管理学》考…

STM32 默认时钟更改 +debug调试

STM32时钟 文章目录 STM32时钟前言一、修改系统时钟二、DEBUG 前言 为什么我们要改STM32的时钟呢,打个比方在做SPI驱动的时候,需要16M的时钟,但是stm32默认是72的分频分不出来,这个时候我们就要改系统时钟了,那么怎么…

人工智能基础_机器学习050_对比sigmoid函数和softmax函数的区别_两种分类器算法的区别---人工智能工作笔记0090

可以看到最上面是softmax的函数对吧,但是如果当k = 2 那么这个时候softmax的函数就可以退化为sigmoid函数,也就是 逻辑斯蒂回归了对吧 我们来看一下推导过程,可以看到上面是softmax的函数 可以看到k=2 表示,只有两个类别对吧,两个类别的分类不就是sigmoid函数嘛对吧,所以说 …

算法设计与分析(贪心法)

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

Git基础命令,一篇搞懂!(命令行模式,无IDEA)

1.概述 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库…

城市生命线丨桥梁结构健康监测系统的作用

在城市建设当中,有非常多的城市基本建设,建设当中,桥梁作为不可忽视的一环,也需要有很多桥梁建设的智能监测系统,在这个桥梁结构健康监测系统中,桥梁的各个数值都能被监测得到。 WITBEE万宾使用城市生命线智…

【记录】有关接口响应很快,但是在页面渲染的时候发现很慢的问题

请求数据返回的时候,接口响应的速度是很快的,但是数据量很大,导致返回的报文体很多兆,如果服务器的带宽不够大的话,会有些慢,我这边的例子是3m的数据平均需要大概5~10秒的时间。 思路:开启压缩…

【教学类-06-12】20231126 (二)三位数 如何让加减乘除题目从小到大排序(以0-110之间加法为例,做正序排列用)

结果展示 背景需求: 二位数:去0 三位数(需要排除很多0) 解决思路 一、把数字改成三位数 二、对数组内的题目,8种可能性进行去“0”处理 1、十位数(去百位数0)十位数(去百位数0&am…

百家号MCN是什么?百家号MCN禁止拉子账号怎么解决?

在当今数字化时代,社交媒体平台已成为人们获取信息、分享观点和创作内容的重要渠道之一。百家号作为百度旗下的自媒体平台,吸引了众多创作者和机构入驻,以分享优质内容并获得收益。在百家号上,MCN矩阵扮演着重要的角色&#xff0c…

LeetCode Hot100 543.二叉树的直径

题目: 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 方法:灵神 代码: ​…

哈希思想的应用

目录 1.位图 位图的实现 题目变形一 题目变形二 题目变形三 总结: 2.布隆过滤器 概念 布隆过滤器的实现 3.哈希切割的思想 1.位图 哈希表和位图是数据结构中常用的两种技术。哈希表是一种数据结构,通过哈希函数把数据和位置进行映射&#xff0c…