热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【深度学习】ResNet模型

DeepResidualLearningforImageRecognitionResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名(V

Deep Residual Learning for Image Recognition

ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名(VGG是ImageNet2014年)在之前的VGG介绍中说过网络的深度对模型识别的准确度有很大的影响,但是在实际训练过程中,如果网络深度过深的话会引起在训练过程中发生退化的问题。为此我们的ResNet克服了这个困难
【深度学习】ResNet模型

深度影响

随着网络的深度增加学习能力增强,但是如果单纯的增加网络的深度就发生梯度消失或者梯度爆炸。在另一方面退化问题上,更深的模型不应当产生比它更浅的模型更高的错误率。而这个“退化”是因为在模型变复杂时,随机梯度下降的优化变得更加困难,导致了模型达不到好的学习效果。为此论文中提出了Block结构

Block结构

【深度学习】ResNet模型
上图就是block结构,在深层网络添加了一个恒等映射,将原始所需要学的函数H(x)转换成F(x)+x,那么模型就退化为一个浅层网络。可以明显的看出直接拟合一个潜在的H(x) = x,比较困难,这可能就是深层网络难以训练的原因。为此使用H(x) = F(x) + x就可以将其转换为学习一个残差函数F(x) = H(x) - x. 只要F(x)=0,就构成了一个恒等映射H(x) = x,所以优化F(x)肯定要比H(x)要容易。

对于block中的shortcut需要注意
A. 使用恒等映射,如果residual block的输入输出维度不一致,对增加的维度用0来填充;
B. 在block输入输出维度一致时使用恒等映射,不一致时使用线性投影以保证维度一致;
C. 对于所有的block均使用线性投影。

这个Residual block通过shortcut将这个block的输入和输出进行加叠,这个简单的加法并不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果。这样就保证了我在增加网络深度的时候模型的效果起码不会变差

实验

论文中先建立了一个18层和一个34层的普通罗列的CNN,随后又分别建立了同样大小的残差网络,在原来的plain长加入了shortcut,在这两个网络参数完全相同的情况下与之前的vgg19 模型比计算量要少了许多。
【深度学习】ResNet模型
在观察实验结果后发现在不使用残差结构的时候观测到模型曾深层次明显出现的退化,反观ResNet没有出现退化而且效果比18层的更好,同时收敛速也更快。
【深度学习】ResNet模型

总结

1、plain-18和plain-34的实验证明了退化问题不是因为梯度弥散,因为加入了BN。而且单纯的增加迭代次数要同样会导致模型退化。

2、实验了ResNet-18和ResNet-34,ResNet-34效果远远优于ResNet-18和plain-34,证明了残差结构解决了退化的问题。 而且同等深度的plain-18和ResNet-18,残差网络收敛更快。

3、对于同等映射维度不匹配时有两种匹配维度的方法
零填充和线性投影。作者比较了这两种方法的优劣。实验证明,投影法会比zero padding表现稍好一些。因为zero padding的部分没有参与残差学习。实验表明,将维度匹配或不匹配的同等映射全用投影法会取得更稍好的结果。

4、更深的瓶颈结构:
将原来的block(残差学习结构)改为瓶颈结构。首端和末端的1x1卷积用来削减和恢复维度,只剩下中间3x3作为瓶颈部分。这两种结构的时间复杂度相似。但是此时投影法的参数出现了输入维度增加,所以要使用zero padding的同等映射。为此网络深度可以继续增加,性能不断提升,最后在1202层的时候,发现网络过深,出现了过拟合


推荐阅读
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 深入理解线程、进程、多线程、线程池
    本文以QT的方式来走进线程池的应用、线程、进程、线程池、线程锁、互斥量、信号量、线程同步等的详解,一文让你小白变大神!为什么要使用多线程、线程锁、互斥量、信号量?为什么需要线程 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
lucifer
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有