前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >干货 | 深度学习之CNN反向传播算法详解

干货 | 深度学习之CNN反向传播算法详解

作者头像
昱良
发布于 2018-04-08 10:08:36
发布于 2018-04-08 10:08:36
4.2K0
举报

微信公众号

关键字全网搜索最新排名

机器学习算法】:排名第一

【机器学习】:排名第一

Python】:排名第三

【算法】:排名第四

前言

卷积神经网络(CNN)前向传播算法(干货 | 深度学习之卷积神经网络(CNN)的前向传播算法详解)中对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,下面就对CNN的反向传播算法做一个总结。在阅读本文前,建议先研究DNN的反向传播算法:深度神经网络(DNN)反向传播算法(BP)(深度学习之DNN与反向传播算法)

DNN反向传播

首先回顾DNN的反向传播算法。在DNN中,首先计算出输出层的δL:

利用数学归纳法,用δl+1的值一步步的向前求出第l层的δl,表达式为:

有了δl的表达式,从而求出W,b的梯度表达式:

有了W,b梯度表达式,就可以用梯度下降法来优化W,b,求出最终的所有W,b的值。现在想把同样的思想用到CNN中,很明显,CNN有些不同的地方,不能直接去套用DNN的反向传播算法的公式。

CNN反向传播思想

要套用DNN的反向传播算法到CNN,有几个问题需要解决:

1)池化层没有激活函数,这个问题倒比较好解决,我们可以令池化层的激活函数为σ(z)=z,即激活后就是自己本身。这样池化层激活函数的导数为1.

2)池化层在前向传播的时候,对输入进行了压缩,那么我们现在需要向前反向推导δl−1,这个推导方法和DNN完全不同。

3) 卷积层是通过张量卷积,或者说若干个矩阵卷积求和而得的当前层的输出,这和DNN很不相同,DNN的全连接层是直接进行矩阵乘法得到当前层的输出。这样在卷积层反向传播的时候,上一层的δl−1递推计算方法肯定有所不同。

4)对于卷积层,由于W使用的运算是卷积,那么从δl推导出该层的所有卷积核的W,b的方式也不同。

从上面可以看出,问题1比较好解决,而问题2,3,4也是解决CNN反向传播算法的关键所在。另外要注意到的是DNN中的al,zl都只是一个向量,而我们CNN中的al,zl都是一个三维的张量,即由若干个输入的子矩阵组成。

下面我们就针对问题2,3,4来一步步研究CNN的反向传播算法。在研究过程中,需要注意的是,由于卷积层可以有多个卷积核,各个卷积核的处理方法是完全相同且独立的,为了简化算法公式的复杂度,我们下面提到卷积核都是卷积层中若干卷积核中的一个。

已知池化层δl,求上一隐藏层δl−1

首先解决上面的问题2,如果已知池化层的δl,推导出上一隐藏层的δl−1。在前向传播算法时,池化层一般我们会用MAX或者Average对输入进行池化,池化的区域大小已知。现在我们反过来,要从缩小后的误差δl,还原前一次较大区域对应的误差。

在反向传播时,首先会把δl的所有子矩阵矩阵大小还原成池化之前的大小,然后如果是MAX,则把δl的所有子矩阵的各个池化局域的值放在之前做前向传播算法得到最大值的位置。如果是Average,则把δl的所有子矩阵的各个池化局域的值取平均后放在还原后的子矩阵位置。这个过程一般叫做upsample。

用一个例子可以很方便的表示

假设池化区域大小是2x2。δl的第k个子矩阵为:

由于池化区域为2x2,我们先讲δkl做还原,即变成:

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

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

进而

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

已知卷积层δl,求上一隐藏层δl−1

对于卷积层的反向传播,首先回忆下卷积层的前向传播公式:

在DNN中,我们知道δl−1和δl的递推关系为:

这里的式子其实和DNN的类似,区别在于对于含有卷积的式子求导时,卷积核被旋转了180度。即式子中的rot180(),翻转180度的意思是上下翻转一次,接着左右翻转一次。在DNN中这里只是矩阵的转置。那么为什么呢?由于这里都是张量,直接推演参数太多了。以一个简单的例子说明这里求导后卷积核要翻转。

假设l−1层的输出al−1是一个3x3矩阵,第l层的卷积核Wl是一个2x2矩阵,采用1像素的步幅,则输出zl是一个2x2的矩阵。我们简化都是bl都是0,则有

列出a,W,z的矩阵表达式如下:

利用卷积的定义,很容易得出:

接着我们模拟反向求导:

为了符合梯度计算,在误差矩阵周围填充了一圈0,此时将卷积核翻转后和反向传播的梯度误差进行卷积,就得到了前一次的梯度误差。这个例子直观的介绍了为什么对含有卷积的式子求导时,卷积核要翻转180度的原因。

已知卷积层δl,推导该层W,b梯度

现在已经可以递推出每一层的梯度误差δl了,对于全连接层,可以按DNN的反向传播算法求该层W,b的梯度,而池化层并没有W,b,也不用求W,b的梯度。只有卷积层的W,b需要求出。注意到卷积层z和W,b的关系为:

因此有:

由于有上一节的基础,大家应该清楚为什么这里求导后要旋转180度了。而对于b,则稍微有些特殊,因为δl是三维张量,而b只是一个向量,不能像DNN那样直接和δl相等。通常的做法是将δl的各个子矩阵的项分别求和,得到一个误差向量,即为b的梯度:

CNN反向传播总结

现在总结下CNN的反向传播算法,以最基本的批量梯度下降法为例来描述反向传播算法。

输入:m个图片样本,CNN模型的层数L和所有隐藏层的类型,对于卷积层,要定义卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步幅S。对于池化层,要定义池化区域大小k和池化标准(MAX或Average),对于全连接层,要定义全连接层的激活函数(输出层除外)和各层的神经元个数。梯度迭代参数迭代步长α,最大迭代次数MAX与停止迭代阈值ϵ

输出:CNN模型各隐藏层与输出层的W,b

参考:

  1. 周志华《机器学习》
  2. Neural Networks and Deep Learning by By Michael Nielsen
  3. 博客园 http://www.cnblogs.com/pinard/p/6244265.html
  4. 李航《统计学习方法》
  5. Deep Learning, book by Ian Goodfellow, Yoshua Bengio, and Aaron Courville
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法与Python学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
史上最全DPU厂商大盘点(上)
DPU是以数据处理为中心的芯片,2020年NVIDIA战略中国将其称为CPU、GPU之后“第三颗主力芯片”,认为“它将成为未来计算的三大支柱之一”。头豹研究院预测,数据中心领域DPU即将放量,随智能驾驶、元宇宙等其他领域的需求被不断挖掘,DPU渗透应用领域将持续扩大,中国 DPU市场规模将有望于2026年达到1095.3亿元。 DPU市场的火热引得国内外大厂纷纷入局,也催生出了一批批创业公司。那么目前主要有哪些DPU玩家呢? 国外厂商 Nvidia Nvidia创立于1993年,总部位于美国加利福尼亚
SDNLAB
2022/06/24
3K0
史上最全DPU厂商大盘点(上)
DPU、SmartNIC、基于DPU的SmartNIC ?
编者按:如今,DPU(数据处理单元)正变得越来越普及,大家关于SmartNIC和DPU之间的疑惑也越来越多,本文将带你揭晓答案。 随着云网络、人工智能、大数据、5G边缘计算的快速发展,数据流量呈指数级增长。CPU计算能力的增长赶不上网络传输速率的提升,网络侧对专业计算的需求急剧增加,DPU应运而生。 DPU旨在卸载虚拟网络、安全、存储等各种功能,满足数据平面转发的加速需求,减轻CPU算力的负担。 我们从以下几个问题中一窥究竟。 问题1:为什么需要DPU ? 1)加速部分占比有限。 2)数据在 CPU
SDNLAB
2022/03/04
8750
【重识云原生】第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述
        网卡(Network Interface Card,简称NIC)是将电脑接入局域网的设备,网卡插在计算机主板的总 线插槽中,负责将用户要传递的数据转换为网络设备能够识别的格式,通过网络介质传输。
江中散人_Jun
2022/09/08
2.7K0
【重识云原生】第四章云网络4.9.4.1节——智能网卡SmartNIC方案综述
芯启源首次公开的“SmartNIC第四代架构”如何赋能DPU蓝海?
美国西部时间26日,为期三天的全球首届智能网卡高端行业峰会(SmartNICs Summit)在美国硅谷正式召开。芯启源(Corigine)在峰会召开当天首次对外公布 “SmartNICs第四代架构”。27日,芯启源(Corigine)在智能网卡峰会(SmartNICs Summit)中继续同英伟达(NVIDIA)、美满(Marvell)等国际头部DPU厂商共同参与智能网卡(SmartNIC)最佳架构小组讨论。 芯启源第四代智能网卡(SmartNIC) CORIGINE 智能网卡(SmartNIC) 智能
SDNLAB
2022/05/05
7840
芯启源首次公开的“SmartNIC第四代架构”如何赋能DPU蓝海?
大伙儿洗洗睡吧,俺家国产DPU芯片流片成功了!
对2022年 DPU 行业发展研究报告感兴趣的同学点赞和在看后,在公众号后台回复“tooyum27”可以获取下载地址。
用户6874558
2023/03/06
1.7K0
大伙儿洗洗睡吧,俺家国产DPU芯片流片成功了!
一文讲清楚DPU和SmartNIC(智能网卡)
现在市场端,关于DPU和DPU卡、智能网卡的描述时常有些混乱,霞姐摘录了比较权威的四家观点,和大家分享一下它们关于DPU、智能网卡是怎么看的。相信大家看完后,就知道怎么分辨了。
霞姐聊IT
2025/05/30
2410
一文讲清楚DPU和SmartNIC(智能网卡)
云豹智能、中科驭数等十一家国产DPU公司产品大盘点
云豹智能公司成立于2020年,专注于云计算和数据中心数据处理器芯片(DPU)和解决方案。
霞姐聊IT
2025/05/30
4750
云豹智能、中科驭数等十一家国产DPU公司产品大盘点
一文读懂SmartNIC
传统网卡仅实现了 L1-L2 层的逻辑,而由 Host CPU 负责处理网络协议栈中更高层的逻辑。即:CPU 按照 L3-L7 的逻辑,负责数据包的封装与解封装;网卡则负责更底层的 L2 层数据帧的封装和解封装,以及 L1 层电气信号的相应处理。
SDNLAB
2021/07/27
3.2K0
一文读懂SmartNIC
智能网卡的网络加速技术
2021年9月25日,由“科创中国”未来网络专业科技服务团指导,江苏省未来网络创新研究院、网络通信与安全紫金山实验室联合主办、SDNLAB社区承办的2021中国智能网卡研讨会中,多家机构谈到了智能网卡的网络加速实现,我们对此进行整理,以飨读者。
SDNLAB
2021/10/21
7.6K0
出大事了!DPU厂商打起来了
DPU作为新生事物,亦有江湖。本文来自于Pensando公司技术产品总监Steve McQuerry,其将分系列介绍DPU性能测试和比较方法。前怼NVIDIA,后踢Fungible。咱也不敢说,咱也不敢问,这要是放到国内估计又要闹个沸沸扬扬吧!
用户6874558
2023/02/15
1.2K0
出大事了!DPU厂商打起来了
【重识云原生】第四章云网络4.9.1节——网络卸载加速技术综述
网络offload主要是指将原本在内核网络协议栈中进行的IP分片、TCP分段、重组、checksum校验等操作,转移到网卡硬件中进行,CPU的发包路径更短,消耗更低,提高处理性能。
江中散人_Jun
2022/07/12
3.4K0
【重识云原生】第四章云网络4.9.1节——网络卸载加速技术综述
从网络虚拟化,看智能网卡发展史
5G的到来无疑将加速网络虚拟化的进程,在电信领域,网络虚拟化不仅在核心网,也在网络的边缘。但是,仅仅通过软件解决方案不能提供足够的网络可靠性和服务质量,而具有高级可编程功能智能网卡(Smart NIC),将在虚拟化网络中扮演非常重要的角色。
SDNLAB
2020/05/14
3.3K0
从网络虚拟化,看智能网卡发展史
高性能网络 — SmartNIC、DPU演进与运行原理
Physical Interface(物理链路连接器)负责将双绞线网口(电口)或光模块(光口)或连接到网卡上。一个 Physical Interface 通常具有多个 Ethernet Ports。
通信行业搬砖工
2023/09/07
1.7K0
高性能网络 — SmartNIC、DPU演进与运行原理
科普篇 |什么是网卡?相比传统网卡,智能网卡(SmartNIC)有何特点?
网卡,全称为网络接口卡(Network Interface Card,简称NIC),是计算机硬件中的一种设备,用于将计算机接入局域网(LAN)。它通过插在计算机主板的总线插槽中,负责将用户要传递的数据转换为网络设备能够识别的格式,并通过网络介质进行传输。网卡的基本功能包括数据的封装和解封、地址解析、数据校验等。
ICT系统集成阿祥
2024/12/03
9690
科普篇 |什么是网卡?相比传统网卡,智能网卡(SmartNIC)有何特点?
一文看懂什么样的网络适合部署智能网卡?
智能网卡可在网络任务方面卸载服务器CPU,提供内存扩展并执行安全操作、硬件加载等关键任务,在多个网络层为服务器提供额外的计算能力。这种可编程的算力设备本身可以高速执行必要的功能,而不是使用传统基础设施中服务器的资源。随着工作负载的日益增加,越来越多智能网卡正在加速服务器性能,以减少任务等待和时延。
星融元Asterfusion
2023/08/10
3890
一文看懂什么样的网络适合部署智能网卡?
DPU编程语言和框架介绍
2.它与 CPU(通用计算)、GPU(图形/并行计算)并列,是专注于基础设施数据处理的异构计算成员。
霞姐聊IT
2025/06/15
1340
DPU编程语言和框架介绍
中国智能网卡(SmartNIC)行业概览(2021)
智能网卡萌发的主要原因为CPU算力相对网络传输速率的差距持续扩大,激发网络侧专用计算需求,且智能网卡可搭载多元化功能如虚拟交换、存储、数据、网络加密等。
SDNLAB
2021/07/30
2.8K0
芯启源国内首次公开第四代DPU&智能网卡架构
9月2日,第二届SmartNIC&DPU技术创新峰会在北京召开。SmartNIC&DPU技术创新峰会由江苏省未来网络创新研究院和SDNLAB联合行业技术先锋力量、产业典型应用企业共同发起。此次峰会聚焦智能网卡与DPU相关的网络芯片与硬件设计、网络架构演进、网络协议与算法优化、标准进展等热点技术与难点问题。 芯启源作为DPU芯片及智能网络系统解决方案头部企业,现场展示了智能网卡SmartNIC系列产品,受到现场专家、观众及媒体广泛关注,并接受现场媒体采访。 大会表彰了在SmartNIC、DPU技术创新与产
SDNLAB
2022/09/06
6350
芯启源国内首次公开第四代DPU&智能网卡架构
DPU市场火热,未来会任由几家大厂吃独食吗?
有人说它叫DPU(dataprocessing units),也有人说它叫IPU(infrastructureprocessing units),我们不妨用“数据基础设施”一词来一个和稀泥式的命名,因为它的出现本就是数据基础设施领域近年来的一大创新。
科技云报道
2022/04/29
4850
DPU市场火热,未来会任由几家大厂吃独食吗?
【重识云原生】第四章云网络4.9.5.1节下一代智能网卡——DPU综述
        随着数据中心的高速发展,通信能力和计算能力成为数据中心基础设施的相辅相成的两个重要发展方向。若数据中心仅关注计算能力的提升,通信基础设施的提升跟不上,那么数据中心的整体系统性能依然受限,无法发挥出真正的潜力。DPU的提出背景就是应对这些数据量和复杂性的指数级增长。未来,需要将计算移至接近数据的位置,这是目前业界所公认的以数据为中心的体系结构下的创新。综上,DPU对数据中心来说,是通过更明细的分工来实现效率的提升、实现总体系统的成本最优化。
江中散人_Jun
2022/09/09
1.9K0
【重识云原生】第四章云网络4.9.5.1节下一代智能网卡——DPU综述
推荐阅读
相关推荐
史上最全DPU厂商大盘点(上)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档