卷积神经网络CNN的前向和后向传播

  • 卷积运算与相关的区别
  • 卷积运算的正向和反向传播

原文 Forward And Backpropagation in Convolutional Neural Network地址: https://medium.com/@2017csm1006/forward-and-backpropagation-in-convolutional-neural-network-4dfa96d7b37e 在墙外,在这写是为了方便大家参考。

下面的文章演示了卷积运算在CNN中进行反向传播的过程。

卷积运算与相关的区别

让我们考虑卷积层中的输入和卷积核(也称之为滤波器)。简单起见,channelchannelchannel=1,输入矩阵XXX为3x3,卷积核FFF为2x2,padding=0,stride=1padding=0,stride=1padding=0,stride=1。前向传播为卷积过程。


而滤波器矩阵FFF与输入矩阵XXX的相关矩阵OOO如下图所示:

卷积核与输入图像的卷积相当于将卷积核旋转180度(先水平翻转再垂直翻转),然后与输入矩阵进行相关操作:

由此可见,卷积运算与相关运算是一样的,只不过是和旋转后的卷积核进行相关运算。

卷积运算的正向和反向传播

注意: 为了方便推导出卷积核的值和输入矩阵值的梯度方程,我们将考虑卷积运算和相关运算看作是一样的,这只是为了处理上简单的考虑。
因此,卷积操作可以用下图来表示:

注意此处为了方便,FFF没有进行180度翻转,因此这里卷积和相关是一样的。
可以用下面的图来进行可视化。

现在,我们要计算卷积核 FFF 相对于误差 EEE 的梯度,要解以下的方程。

∂EF11=∂EO11⋅∂O11F11+∂EO12⋅∂O12F11+∂EO21⋅∂O21F11+∂EO22⋅∂O22F11\frac{\partial E}{F_{11}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{11}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{11}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{11}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{11}}F11​∂E​=O11​∂E​⋅F11​∂O11​​+O12​∂E​⋅F11​∂O12​​+O21​∂E​⋅F11​∂O21​​+O22​∂E​⋅F11​∂O22​​

∂EF12=∂EO11⋅∂O11F12+∂EO12⋅∂O12F12+∂EO21⋅∂O21F12+∂EO22⋅∂O22F12\frac{\partial E}{F_{12}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{12}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{12}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{12}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{12}}F12​∂E​=O11​∂E​⋅F12​∂O11​​+O12​∂E​⋅F12​∂O12​​+O21​∂E​⋅F12​∂O21​​+O22​∂E​⋅F12​∂O22​​

∂EF21=∂EO11⋅∂O11F21+∂EO12⋅∂O12F21+∂EO21⋅∂O21F21+∂EO22⋅∂O22F21\frac{\partial E}{F_{21}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{21}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{21}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{21}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{21}}F21​∂E​=O11​∂E​⋅F21​∂O11​​+O12​∂E​⋅F21​∂O12​​+O21​∂E​⋅F21​∂O21​​+O22​∂E​⋅F21​∂O22​​

∂EF22=∂EO11⋅∂O11F22+∂EO12⋅∂O12F22+∂EO21⋅∂O21F22+∂EO22⋅∂O22F22\frac{\partial E}{F_{22}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{22}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{22}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{22}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{22}}F22​∂E​=O11​∂E​⋅F22​∂O11​​+O12​∂E​⋅F22​∂O12​​+O21​∂E​⋅F22​∂O21​​+O22​∂E​⋅F22​∂O22​​

这一些等式也等同于
∂EF11=∂EO11⋅X11+∂EO12⋅X11+∂EO21⋅X11+∂EO22⋅X11\frac{\partial E}{F_{11}}=\frac{\partial E}{O_{11}}·X_{11}+\frac{\partial E}{O_{12}}·X_{11}+\frac{\partial E}{O_{21}}·X_{11}+\frac{\partial E}{O_{22}}·X_{11}F11​∂E​=O11​∂E​⋅X11​+O12​∂E​⋅X11​+O21​∂E​⋅X11​+O22​∂E​⋅X11​

∂EF12=∂EO11⋅X12+∂EO12⋅X12+∂EO21⋅X12+∂EO22⋅X12\frac{\partial E}{F_{12}}=\frac{\partial E}{O_{11}}·X_{12}+\frac{\partial E}{O_{12}}·X_{12}+\frac{\partial E}{O_{21}}·X_{12}+\frac{\partial E}{O_{22}}·X_{12}F12​∂E​=O11​∂E​⋅X12​+O12​∂E​⋅X12​+O21​∂E​⋅X12​+O22​∂E​⋅X12​

∂EF21=∂EO11⋅X21+∂EO12⋅X21+∂EO21⋅X21+∂EO22⋅X21\frac{\partial E}{F_{21}}=\frac{\partial E}{O_{11}}·X_{21}+\frac{\partial E}{O_{12}}·X_{21}+\frac{\partial E}{O_{21}}·X_{21}+\frac{\partial E}{O_{22}}·X_{21}F21​∂E​=O11​∂E​⋅X21​+O12​∂E​⋅X21​+O21​∂E​⋅X21​+O22​∂E​⋅X21​

∂EF22=∂EO11⋅X22+∂EO12⋅X22+∂EO21⋅X22+∂EO22⋅X22\frac{\partial E}{F_{22}}=\frac{\partial E}{O_{11}}·X_{22}+\frac{\partial E}{O_{12}}·X_{22}+\frac{\partial E}{O_{21}}·X_{22}+\frac{\partial E}{O_{22}}·X_{22}F22​∂E​=O11​∂E​⋅X22​+O12​∂E​⋅X22​+O21​∂E​⋅X22​+O22​∂E​⋅X22​

如果我们仔细看,这个等式可以写成卷积操作的形式:

类似地,我们可以得到输入矩阵 XXX 相对于误差 EEE 的梯度值:

为了得到输入矩阵的梯度∂E/∂X\left. \partial E \middle/ \partial X \right.∂E/∂X,我们需要将卷积核旋转180度,通过输出的误差梯度∂E/∂O\left. \partial E \middle/ \partial O \right.∂E/∂O计算旋转卷积核 FFF 的全卷积,如下图所示。

全卷积可以想象为执行如下图所示的过程。

因此,卷积运算就可以实现卷积层的正向传播和反向传播。

要计算池化层和Relu层的梯度,可以通过使用导数的链式法则来计算。

卷积神经网络CNN的前向和后向传播(一)相关推荐

  1. 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。

    在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...

  2. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  3. 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)

    目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...

  4. 卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)

    卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习) 分享一些公式计算张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算. 以AlexNet网络为例,以下是该网络的参数结构图. A ...

  5. 卷积神经网络(CNN,ConvNet)

    卷积神经网络(CNN,ConvNet) 卷积神经网络(CNN,有时被称为 ConvNet)是很吸引人的.在短时间内,变成了一种颠覆性的技术,打破了从文本.视频到语音等多个领域所有最先进的算法,远远超出 ...

  6. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...

  7. 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld.  技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献 ...

  8. 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用

    正文共3758张图,4张图,预计阅读时间18分钟. 1.简介 原先写过两篇文章,分别介绍了传统机器学习方法在文本分类上的应用以及CNN原理,然后本篇文章结合两篇论文展开,主要讲述下CNN在文本分类上的 ...

  9. 深度学习之卷积神经网络CNN

    转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...

最新文章

  1. C++ primer记录
  2. live555 源码分析: SETUP 的处理
  3. 用shell编写一个三角形图案
  4. 【计算机就业-算法工程师】校招想去互联网公司担任算法工程师该怎么准备
  5. 紫书搜索 习题7-4 UVA - 818 Cutting Chains 暴力+dfs判环+位运算
  6. mysqldump mysql.sock_mysqldump原理及实战
  7. 关于Pulsar与Kafka的对比
  8. 用USRP-LW N210搭建软件雷达系统
  9. WIN10 删除文件 找不到该项目
  10. 电子元器件的识别与换算
  11. 数据库设计规范(详细)
  12. 江苏大学计算机学院换届,关于计算机学院各支部选举结果的批复
  13. 书中自有黄金屋系列2:读《穷爸爸富爸爸》
  14. dsp28335 Ecap总结
  15. 2023年全国最新二级建造师精选真题及答案25
  16. python批量关键字百度搜索结果url解码
  17. Idea构建异常---Could not parse metadata xx/xx/maven-metadata-local.xml-删除文件解决不掉---SpringCloud工作笔记176
  18. java 锁降级 知乎_锁降级
  19. 盛世昊通微达国际联合出品《天下无拐》,还孩子们一片蓝天
  20. 让wordpress首页和分类列表页只显示文章标题列表

热门文章

  1. Flink——有界流VS无界流
  2. 【电子科学系保研】-- 南方科技大学保研之旅
  3. 诺基亚 Belle 发布
  4. 老域名无限挖掘工具(带外链,未注册)
  5. collector是什么意思中文翻译_collector是什么意思_collector的翻译_音标_读音_用法_例句_爱词霸在线词典...
  6. win8手动添加linux启动项,Win8下添加开机启动项的简单办法
  7. reverse(一)——apk逆向
  8. 微信小程序 实时音视频开发
  9. NVIDIA 显卡在 Ubuntu 下限制其功率的方法
  10. 深入理解JUC——AQS 及 ReentrantLock