(很好的博客:残差网络ResNet笔记

主要内容:

一.深层神经网络的优点和缺陷

二.残差网络的引入

三.残差网络的可行性

四.identity block 和 convolutional block

一.深层神经网络的优点和缺陷

1.深度神经网络很大的一个优点就是能够表示一个复杂的功能。网络的层数越多,意味着能够提取到不同level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息。但其有一个巨大的缺陷,那就是:如果简单地增加深度,会导致梯度弥散或梯度爆炸。使得训练速度十分缓慢:

2.对于上述问题,解决方法是引入batch normalization,但这又会导致另一个问题,那就是“退化问题”。表现为网络层数增加,但是在训练集上的准确率却饱和甚至下降了。退化问题可能是因为深层的网络并不是那么好训练。

二.残差网络的引入

1.残差网络解决了增加深度带来的副作用(退化问题),这样就能够实现通过增加网络深度,来提高网络性能。

2.其基本思想是:在理想化的深层神经网络中,如果后面的网络层是恒等映射,那么深层神经网络就退化为浅层神经网络。所谓恒等映射就是输入等于输出(F(x) = x),放在神经网络当中,那就是把前面的值,直接穿过若干个网络层(而没有经过任何实际性的处理),最后到达输出层。但是,深层神经网络在实际中并不那么理想,因为深层的网络并不是那么好训练,特别是学习恒等映射(至于为什么这样,我也是人云亦云)。

3.但是,深层的网络学习F(x) = 0,则相对容易(此也人云亦云,可能在后面的网络层,权重衰减严重,因而引入了batch normalization)。让深层神经网络学习F(x) = 0的方法是构建:H(x) = F(x) + x,对应于神经网络的结构图如下:

对于第l+2层,其总输出就是g(H(x)),也就是a[l+2],而a[l+2] = g(a[l] + z[l+1]),又因为H(x) = F(x) + x,规定z[l+1]对应F(x),a[l]对应x。因此,就是要学习z = 0,这对于深层的网络来说是没那么难的。

三.残差网络的可行性

为何学习深层的网络学习 z = 0 会可行呢?还是看会l+2层的表达式:

在深层的网络层,权重衰减严重,原因是引入了batch normalization,导致了w[l+2]、b[l+2]都接近于0,因此z[l+2]就接近于0,证明了残差网络是可行的。

四.identity block 和 convolutional block

1.残差网络,从感性上去认识,就是将当前的输出输入到下一层的同时,还增加一条路径输入到更后面的某一层。这样构成的一个块,叫做残差块,残差块就是构成残差网络的基础。

2.一般地,是将a[l]输入到第l+k层的激活函数之前(发明者通过实验证明的高效做法),即将a[l]和z[l+k]相加,然后送到激活函数中去。a[l]能和z[l+k]相加的前提条件是:a[l]的shape等于z[l+k]的shape。当两者相等时,可以直接输入进去,此种块称为identity block;当两者不同时,则需要将a[l]通过一个卷积层以调整其shape与z[l+k]一致,此种块称为convolutional block。

吴恩达深度学习笔记(八) —— ResNets残差网络的更多相关文章

  1. 【Deeplearning.ai 】吴恩达深度学习笔记及课后作业目录

    吴恩达深度学习课程的课堂笔记以及课后作业 代码下载:https://github.com/douzujun/Deep-Learning-Coursera 吴恩达推荐笔记:https://mp.weix ...

  2. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(二)

    经典网络 LeNet-5 AlexNet VGG Ng介绍了上述三个在计算机视觉中的经典网络.网络深度逐渐增加,训练的参数数量也骤增.AlexNet大约6000万参数,VGG大约上亿参数. 从中我们可 ...

  3. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(CNN)(上)

    作者:szx_spark 1. Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十 ...

  4. 吴恩达深度学习笔记(deeplearning.ai)之循环神经网络(RNN)(三)

    1. 导读 本节内容介绍普通RNN的弊端,从而引入各种变体RNN,主要讲述GRU与LSTM的工作原理. 事先声明,本人采用ng在课堂上所使用的符号系统,与某些学术文献上的命名有所不同,不过核心思想都是 ...

  5. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(一)

    Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十分方便,便于指出过滤器的位置. ...

  6. 吴恩达深度学习笔记(十二)—— Batch Normalization

        主要内容: 一.Normalizing activations in a network 二.Fitting Batch Norm in a neural network 三.Why does ...

  7. 吴恩达深度学习笔记(七) —— Batch Normalization

    主要内容: 一.Batch Norm简介 二.归一化网络的激活函数 三.Batch Norm拟合进神经网络 四.测试时的Batch Norm 一.Batch Norm简介 1.在机器学习中,我们一般会 ...

  8. 吴恩达深度学习笔记1-神经网络的编程基础(Basics of Neural Network programming)

    一:二分类(Binary Classification) 逻辑回归是一个用于二分类(binary classification)的算法.在二分类问题中,我们的目标就是习得一个分类器,它以对象的特征向量 ...

  9. 吴恩达深度学习笔记(十一)—— dropout正则化

    主要内容: 一.dropout正则化的思想 二.dropout算法流程 三.dropout的优缺点 一.dropout正则化的思想 在神经网络中,dropout是一种“玄学”的正则化方法,以减少过拟合 ...

随机推荐

  1. PHP连接MySQL数据库操作

    (原文链接:http://www.cnblogs.com/csensix/archive/2012/05/23/2515494.html) 方法一:普通方法(面向过程) 首先,先做出如下假设(也适用与 ...

  2. MVC架构模式概述

    MVC MVC概述: Model–view–controller (MVC) is a software architectural pattern for implementing user int ...

  3. 对EasyDarwin开源项目2018的思考与2019发展的规划:继续站在巨人的肩膀引入更多巨人

    EasyDarwin@2018思考 从2012年开始接触Darwin Streaming Server,到2018年从底层开始完全重新架构.研发.完成,EasyDarwin这个项目已经发展了6年了,时 ...

  4. angularjs 复选框 单选框

    关于复选框,在做项目的时候,有一下几点心得 单选框 1.判断哪个单选框选中的情况 html代码 判断该复选框是否选中 $scope.agree.isChecked     判断这个值,如果等于1,代表 ...

  5. Server Objects Extension(SOE)开发(二)

    前言 SOE的提供了REST和Soap两种模板,只要在模板特定的方法中添加自己的业务逻辑代码即可,开发流程非常的简单便捷.那怎么知道自己的业务逻辑代码该写在模板的那个方法里面呢?这就需要很好的理解SO ...

  6. SpringMVC流程架构图

    [组件说明] 以下组件通常使用框架提供实现: 1.DisPatcherServlet:前端控制器(不需要程序员开发) 用户请求到达前端控制器,它相当于MVC模式中的C(Controller),Disp ...

  7. ThinkPHP的join方法

    两张表: 表一:pre_company_member 关联字段:comp_id 表二:pre_company  关联字段:comp_id 查询这两表中的数据. 方法一:驼峰法 $member=M('C ...

  8. MySQL错误日志提示innodb_table_stats和innodb_index_stats不存在故障处理

    查看MySQL error日志,发现有如下报错 7efbc586f700 InnoDB: Error: Table "mysql"."innodb_table_stats ...

  9. 我的Android进阶之旅------>Android使用cmd窗口进行adb logcat时出现中文乱码问题的解决办法

    今天用CMD命令进行adb logcat时显示一堆的乱码,乱码如下: C:\Users\Administrator>adb logcat -s logcat --------- beginnin ...

  10. Spring学习笔记2—AOP

    1.AOP概念 AOP(Aspect Oriented Programming):面向切面编程,AOP能够将那些与业务无关,却为业务模块所共同调用的应用(例如事务处理.日志管理.权限控制等)封装起来, ...