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深度残差网络的更多相关文章

  1. [DeeplearningAI笔记]卷积神经网络4.6-4.10神经网络风格迁移

    4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.6什么是神经网络风格转换neural style transfer 将原图片作为内容图片Cont ...

  2. [DeeplearningAI笔记]卷积神经网络4.1-4.5 人脸识别/one-shot learning/Siamase网络/Triplet损失/将面部识别转化为二分类问题

    4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.1什么是人脸识别 Face verification人脸验证 VS face recogniti ...

  3. [DeeplearningAI笔记]卷积神经网络3.10候选区域region proposals与R-CNN

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.10 region proposals候选区域与R-CNN 基于滑动窗口的目标检测算法将原始图片分割成小的样本图片,并传入分 ...

  4. [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...

  5. [DeeplearningAI笔记]卷积神经网络1.9-1.11池化层/卷积神经网络示例/优点

    4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9池化层 优点 池化层可以缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性. 池化层操作 池化操作与卷积操作类似 ...

  6. [DeeplearningAI笔记]卷积神经网络1.6-1.7构造多通道卷积神经网络

    4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.6多通道卷积 原理 对于一个多通道的卷积操作,可以将卷积核设置为一个立方体,则其从左上角开始向右移动然后向下移动,这里设 ...

  7. [DeeplearningAI笔记]卷积神经网络1.4-1.5Padding与卷积步长

    4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4Padding 一张\(6*6\)大小的图片,使用\(3*3\)的卷积核设定步长为1,经过卷积操作后得到一个\(4*4 ...

  8. [DeeplearningAI笔记]卷积神经网络1.2-1.3边缘检测

    4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.2边缘检测示例 边缘检测可以视为横向边缘检测和纵向边缘检测如下图所示: 边缘检测的原理是通过一个特定构造的卷积核对原始图 ...

  9. [DeeplearningAI笔记]卷积神经网络4.11一维和三维卷积

    4.4特殊应用:人脸识别和神经网络风格转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.11一维和三维卷积 二维和一维卷积 对于2D卷积来说,假设原始图像为\(14*14*3\)的三通 ...

随机推荐

  1. Linux下的计算器(bc、expr、dc、echo、awk)知多少?

    linux 其他知识目录 原文链接:http://blog.chinaunix.net/uid-24673811-id-1760837.html linux下的三个命令可以用来作计算,下面一一讲解用法 ...

  2. C++ 根据图片url 批量 下载图片

    最近需要用到根据图片URL批量下载到本地的操作.查找了相关资料,记录在这儿. 1.首先在CSV文件中提取出url ifstream fin("C:\\Users\\lenovo\\Deskt ...

  3. javascript event对象操作

    js代码: $(".leads_detail").click(function(e){ e = e || event; var t = e.target || e.srcEleme ...

  4. Scrum立会报告+燃尽图 05

    此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2195] 一.小组介绍 组长:王一可 组员:范靖旋,王硕,赵佳璐,范洪达 ...

  5. 20172330 2017-2018-1 《Java程序设计》第十周学习总结

    20172330 2017-2018-1 <程序设计与数据结构>第十周学习总结 教材学习内容总结 本周的学习内容为集合 集合 对象具有定义良好的接口,从而成为一种实现集合的完善体制. 动态 ...

  6. mysql数据库工具

    1.navicat12 中文版及破解 链接:https://pan.baidu.com/s/1TH8m6lduHJybUGhmjFPIAA 提取码:kwcd 2.旧版本mysql-front(连接可选 ...

  7. Java中的网络编程-2

    Socket编程:(一般的网络编程) <1> 两个 JAVA 应用程序可通过一个双向的网络通信连接, 实现数据交换, 这个双向链路的一段称为一个 Socket. <2> Soc ...

  8. WebSphere Application Server诊断和调优

    近段时间,我们项目中用到的WebSphere应用服务器(WAS),但在客户的production环境下极不稳定,经常宕机.给客户造成非常不好的影响,同时,也给项目组很大压力.为此,我们花了近一个月时间 ...

  9. [翻译]API Guides - Service

    官方文档原文地址:http://developer.android.com/guide/components/services.html Service是应用程序组件之一,它并不提供一个用户界面,可以 ...

  10. 树形结构的数据库表Schema设计-基于左右值编码

    树形结构的数据库表Schema设计 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门.栏目结构.商品分类等等,通常而言,这些树状结构需要借助于数据库完 成持久化.然而目前的 ...