[DeeplearningAI笔记]卷积神经网络2.3-2.4深度残差网络
4.2深度卷积网络
觉得有用的话,欢迎一起讨论相互学习~Follow Me
参考文献
[残差网络]--He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[J]. 2015:770-778.
2.3残差网络Residual Networks(ResNets)
- 非常非常深的网络是很难训练的,因为存在梯度消失和梯度爆炸的问题。使用跳远连接(skip connections)
它可以从某一网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层,可以利用跳远连接构建能够训练深度网络的ResNets
Residual block
- Residual Networks残差网络由残差块构成,对于一个“普通的神经网络层的结构”而言,神经层\(a^{[l]}\)到\(a^{[l+1]}\)再到\(a^{[l+2]}\)
网络的主路径"Main Path"可表示为:
- 但是对于残差网络,\(a^{[l]}\)可以拷贝到网络的深层,可以直接在ReLU非线性激活函数前加上\(a^{[l]}\)。这被称为是"Short cut",不再沿着主路径传递。即原始公式中的\(a^{[l+2]}=g(z^{[l+2]})\)被替代为\(a^{[l+2]}=g(z^{[l+2]}+a^{[l]})\),也就是说加上的这个\(a^{[l]}\)产生了一个残差块。
- "跳远连接(skip connection)"就是指\(a^{[l]}\)跳过一层或者好几层,从而将信息传递给神经网络的更深层。
- ResNet的发明者认为使用残差块能够训练更深的神经网络,所以构建一个ResNet网络就是通过将很多这样的残差块堆积在一起,形成一个深度神经网络。
Residual Networks(ResNets)残差网络构造方法与优势
对于一个"Plain Network普通网络",把它变为ResNet的方法是加上所有的跳远连接(skip connections).每两层增加一个跳远连接构成一个残差块。如图所示,五个残差块连接在一起构成一个残差网络。
- 理论上说越深的神经网络应该会取得更好的结果,但是实际上对于普通网络随着神经网络网络层数的增加,训练的误差会先下降再上升。因为随着网络层数的增加,优化算法会更加难以训练网络。
- 但是ResNets不一样,即使网络再深,训练的表现却不错,错误会更少。就算网络的深度达到了1000层也会取得不错的结果。这证明ResNet在训练深度网络方面非常有效。
2.4残差网络Residual Networks(ResNets)为什么有用
残差网络在训练集上的效果
- 通常情况下,一个网络深度越深,它在训练集上训练集上训练网络的效率有所减弱。
- 假设网络结构如下图所示,其中BigNN表示一个很大很深的神经网络模型,并且使用ReLU函数作为激活函数,且所有ReLU函数的输入值都是非负值。
有如下计算式:
\[a^{[l+2]}=g(z^{[l+2]}+a^{[l]})\\
=g(w^{[l+2]}*a^{[l+1]}+b^{[l+2]}+a^{[l]})\] - 注意,如果我们使用了L2正则化,则会使公式中的w权值相应的减少。
- 这里设w和b均为零值,因为使用ReLU函数作为激活函数,并且激活函数的输入值是非负值则\(a^{[l+2]}=g(a^{[l]})=a^{[l]}\)。
NG认为残差网络起作用的主要原因是:这些残差块学习恒等函数非常容易,你能确定网络性能不会受到影响,很多时候甚至可以提高效率,至少效率不会降低。
残差块维度
- 对于残差块的跳跃连接的维度大小,因为残差块的设计中使用了相当多的“SAME”模式的卷积方式所以可以实现\[z^{[l+2]}+a^{[l]}的跳跃连接的操作\]即"SAME"卷积模式保持了维度。
但是如果\(a^{[l+2]}和a^{[l]}\)的维度不一样,例如\(a^{[l+2]}\)为256,\(a^{[l]}\)的维度为128,则在\(a^{[l]}\)前乘上一个可学习的变量\(W_{s}\),其中\(W_{s}\)维度为\(256*128\)以保持维度的一致。
Plain网络(普通网络)加上ResNet单元
其中卷积层使用“SAME”卷积模式,保持特征图的维度信息即特征图的长和宽,但是对于残差块中有池化层的情况,则需要使用\(W_s\)调整维度,使跳跃连接的前后层可以保持一致的维度使其可以相加。
[DeeplearningAI笔记]卷积神经网络2.3-2.4深度残差网络的更多相关文章
- [DeeplearningAI笔记]卷积神经网络4.6-4.10神经网络风格迁移
4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.6什么是神经网络风格转换neural style transfer 将原图片作为内容图片Cont ...
- [DeeplearningAI笔记]卷积神经网络4.1-4.5 人脸识别/one-shot learning/Siamase网络/Triplet损失/将面部识别转化为二分类问题
4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.1什么是人脸识别 Face verification人脸验证 VS face recogniti ...
- [DeeplearningAI笔记]卷积神经网络3.10候选区域region proposals与R-CNN
4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.10 region proposals候选区域与R-CNN 基于滑动窗口的目标检测算法将原始图片分割成小的样本图片,并传入分 ...
- [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法
4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...
- [DeeplearningAI笔记]卷积神经网络1.9-1.11池化层/卷积神经网络示例/优点
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9池化层 优点 池化层可以缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性. 池化层操作 池化操作与卷积操作类似 ...
- [DeeplearningAI笔记]卷积神经网络1.6-1.7构造多通道卷积神经网络
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.6多通道卷积 原理 对于一个多通道的卷积操作,可以将卷积核设置为一个立方体,则其从左上角开始向右移动然后向下移动,这里设 ...
- [DeeplearningAI笔记]卷积神经网络1.4-1.5Padding与卷积步长
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4Padding 一张\(6*6\)大小的图片,使用\(3*3\)的卷积核设定步长为1,经过卷积操作后得到一个\(4*4 ...
- [DeeplearningAI笔记]卷积神经网络1.2-1.3边缘检测
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.2边缘检测示例 边缘检测可以视为横向边缘检测和纵向边缘检测如下图所示: 边缘检测的原理是通过一个特定构造的卷积核对原始图 ...
- [DeeplearningAI笔记]卷积神经网络4.11一维和三维卷积
4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.11一维和三维卷积 二维和一维卷积 对于2D卷积来说,假设原始图像为\(14*14*3\)的三通 ...
随机推荐
- 在PHP中,是以分好结束一条语句的吗
在PHP中,是以分号结束一条语句的,这个和C语言类似. 但是,有一条例外,对于PHP结束tag之前的语句,是可以不写分号的: <?php if ($a == $b) { echo "R ...
- 欢迎来怼---作业要求 20171015 beta冲刺贡献分分配规则
一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 基础分 每人占个人总分的百分之40% leangoo里面的得分 每人占个人总分里 ...
- 学习调用第三方的WebService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的应用中显示,下面就以查询国内手机号码归属地为例进行说明. 首先安利一 ...
- Java Web文件上传原理分析(不借助开源fileupload上传jar包)
Java Web文件上传原理分析(不借助开源fileupload上传jar包) 博客分类: Java Web 最近在面试IBM时,面试官突然问到:如果让你自己实现一个文件上传,你的代码要如何写,不 ...
- Strust2: 工作流程
以下为Struts2的体系结构图: Struts2框架处理用户请求,大体分为以下几个过程: (1)用户发出一个HttpServletRequest请求 (2)请求经过一系列过滤器,最后达到Filter ...
- DB2 UDB V8.1 管理
在DB2中有关实例(Instance), 数据库(Database),表空间(TableSpace),容器(Container)等概念: 在一个操作系统中,DB2数据服务可以同时运行多个实例(有别于O ...
- QList和QVector使用
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QList和QVector使用 本文地址:http://techieliang.com ...
- selenium webdriver 表格的定位方法练习
selenium webdriver 表格的定位方法 html 数据准备 <html> <body> <div id="div1"> <i ...
- linux php 访问sql server设置
1.安装freeTDS wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz 1.1.进入到你下载的目录然后解压.tar - ...
- pixi.js 微信小游戏 入手
pixi是什么?一款h5游戏引擎 优点:简单简洁性能第一 缺点:大多数用的国产三大引擎,pixi资料少,工具少, 为什么学,装逼 用pixi开发小游戏行吗? 行.但要简单处理下 下载官网上的 weap ...