深度学习笔记(七)–ResNet(残差网络)

深度学习笔记(七)–ResNet(残差网络)内容来自吴恩达老师视频,网易云课堂有哦ResNets非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。ResNets是由残差块(Residualblock)构建的,首先解释一下什么是残差块。这是一个两层神经网络,在层进行激活,得到,再次进行激活,两层之后得到。计算过程是从开始,首先进行线性激活,根据这个公式:,通过算出,即乘以权重矩阵,再加上偏差因…

大家好,又见面了,我是你们的朋友全栈君。

内容来自吴恩达老师视频,网易云课堂有哦

ResNets

非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。ResNets是由残差块(Residual block)构建的,首先解释一下什么是残差块。

深度学习笔记(七)--ResNet(残差网络)

这是一个两层神经网络,在深度学习笔记(七)--ResNet(残差网络) 层进行激活,得到深度学习笔记(七)--ResNet(残差网络) ,再次进行激活,两层之后得到深度学习笔记(七)--ResNet(残差网络) 。计算过程是从深度学习笔记(七)--ResNet(残差网络) 开始,首先进行线性激活,根据这个公式:深度学习笔记(七)--ResNet(残差网络) ,通过深度学习笔记(七)--ResNet(残差网络) 算出深度学习笔记(七)--ResNet(残差网络) ,即深度学习笔记(七)--ResNet(残差网络) 乘以权重矩阵,再加上偏差因子。然后通过ReLU非线性激活函数得到深度学习笔记(七)--ResNet(残差网络) ,深度学习笔记(七)--ResNet(残差网络) 计算得出。接着再次进行线性激活,依据等式深度学习笔记(七)--ResNet(残差网络) ,最后根据这个等式再次进行ReLu非线性激活,即深度学习笔记(七)--ResNet(残差网络) ,这里的深度学习笔记(七)--ResNet(残差网络) 是指ReLU非线性函数,得到的结果就是深度学习笔记(七)--ResNet(残差网络) 。换句话说,信息流从深度学习笔记(七)--ResNet(残差网络) 到深度学习笔记(七)--ResNet(残差网络) 需要经过以上所有步骤,即这组网络层的主路径。 

深度学习笔记(七)--ResNet(残差网络)

在残差网络中有一点变化,我们将深度学习笔记(七)--ResNet(残差网络) 直接向后,拷贝到神经网络的深层,在ReLU非线性激活函数前加上深度学习笔记(七)--ResNet(残差网络) ,这是一条捷径。]深度学习笔记(七)--ResNet(残差网络) 的信息直接到达神经网络的深层,不再沿着主路径传递,这就意味着最后这个等式深度学习笔记(七)--ResNet(残差网络) )去掉了,取而代之的是另一个ReLU非线性函数,仍然对深度学习笔记(七)--ResNet(残差网络) 进行深度学习笔记(七)--ResNet(残差网络) 函数处理,但这次要加上深度学习笔记(七)--ResNet(残差网络) ,即: 深度学习笔记(七)--ResNet(残差网络) ,也就是加上的这个深度学习笔记(七)--ResNet(残差网络) 产生了一个残差块。 

深度学习笔记(七)--ResNet(残差网络)

在上面这个图中,我们也可以画一条捷径,直达第二层。实际上这条捷径是在进行ReLU非线性激活函数之前加上的,而这里的每一个节点都执行了线性函数和ReLU激活函数。所以深度学习笔记(七)--ResNet(残差网络) 插入的时机是在线性激活之后,ReLU激活之前。除了捷径,你还会听到另一个术语“跳跃连接”,就是指深度学习笔记(七)--ResNet(残差网络) 跳过一层或者好几层,从而将信息传递到神经网络的更深层。

ResNet的发明者是何恺明(Kaiming He)、张翔宇(Xiangyu Zhang)、任少卿(Shaoqing Ren)和孙剑(Jiangxi Sun),他们发现使用残差块能够训练更深的神经网络。所以构建一个ResNet网络就是通过将很多这样的残差块堆积在一起,形成一个很深神经网络,我们来看看这个网络。

深度学习笔记(七)--ResNet(残差网络)

这并不是一个残差网络,而是一个普通网络(Plain network),这个术语来自ResNet论文。

深度学习笔记(七)--ResNet(残差网络)

 把它变成ResNet的方法是加上所有跳跃连接,每两层增加一个捷径,构成一个残差块。如图所示,5个残差块连接在一起构成一个残差网络。

 深度学习笔记(七)--ResNet(残差网络)

       如果我们使用标准优化算法训练一个普通网络,比如说梯度下降法,或者其它热门的优化算法。如果没有残差,没有这些捷径或者跳跃连接,凭经验你会发现随着网络深度的加深,训练错误会先减少,然后增多。而理论上,随着网络深度的加深,应该训练得越来越好才对。也就是说,理论上网络深度越深越好。但实际上,如果没有残差网络,对于一个普通网络来说,深度越深意味着用优化算法越难训练。实际上,随着网络深度的加深,训练错误会越来越多。

        但有了ResNets就不一样了,即使网络再深,训练的表现却不错,比如说训练误差减少,就算是训练深达100层的网络也不例外。有人甚至在1000多层的神经网络中做过实验,尽管目前我还没有看到太多实际应用。但是对深度学习笔记(七)--ResNet(残差网络) 的激活,或者这些中间的激活能够到达网络的更深层。这种方式确实有助于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能。也许从另外一个角度来看,随着网络越来深,网络连接会变得臃肿,但是ResNet确实在训练深度网络方面非常有效。 

微信公众号:任冬学编程
tx工作的后端开发仔,分享后端技术、机器学习、数据结构与算法、计算机基础、程序员面试等话题。欢迎关注。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148983.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个—员工管理源代码分享

    使用Jquery+EasyUI进行框架项目开发案例解说之中的一个—员工管理源代码分享

    2021年11月13日
  • 彻底理解js中的闭包

    彻底理解js中的闭包闭包是js的一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么用呢?我们都知道,js的作用域分两种,全局和局部,基于我们所熟悉的作用域链相关知识,我们知道在js作用域环境中访问变量的权利是由内向外的,内部作用域可以获得当前作用域下的变量并且可以获得当前包含当前作用域的外层作用域下的变量,反之则不能,也就是说在外层作用域下无法获取内层作用域下的变量,同样在不同的…

    2022年6月24日
  • linux终端定时器实验报告,定时器实验报告.doc

    linux终端定时器实验报告,定时器实验报告.doc定时器实验报告实验六 定时器/计数器一、实验目的⒈ 学会8253芯片和微机接口的原理和方法。掌握8253定时器/计数器的工作方式和编程原理。二、实验内容用8253的0通道工作在方式3,产生方波。三、实验接线图四、编程指南⒈ 8253芯片介绍8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。8253的功能用途:延时中断 实时时钟可编程频率发…

    2022年7月26日
  • 推荐:移动端前端UI库—Frozen UI、WeUI、SUI Mobile

    推荐:移动端前端UI库—Frozen UI、WeUI、SUI Mobile

    2021年9月13日
  • C语言中volatile关键字的作用

    C语言中volatile关键字的作用一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变

    2022年6月1日
  • java常量类「建议收藏」

    java常量类「建议收藏」接口实现java常量类

    2022年10月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号