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

ILSVRC15夺冠神器,ResNet论文阅读

论文地址:https:arxiv.orgpdf1512.03385.pdf作为ILSVRC15年的冠军,Kaiming大神一贯落实着不发则已࿰

论文地址:https://arxiv.org/pdf/1512.03385.pdf
作为ILSVRC15年的冠军,Kaiming大神一贯落实着不发则已,一发惊人的论文生产准则。最近静下心来仔细研究一下这篇论文,个人认为Kaiming是一个很看重问题本质的学者,他发的论文都会从问题的最本质的原因入手,比如Focal loss的提出、Faster RCNN的加速点、Mask RCNN的突破性创新等等。
ResNet也不例外,今天静下心来好好读一下这篇文章,想一想究竟为什么ResNet会起作用。
从LeNet开始,深度学习网络就朝着不断加深,越来越复杂的方向前进,从AlexNet,到VGGNet,到GoogLeNet(Inception)。但是随着网络越来越深,大家发现一个问题,当达到了一定深度之后,模型开始出现训练困难,甚至不升反降的现象。
关于训练困难的问题,一定程度上可以通过归一化来解决,比如BN。这种方式通过消除层于层之间的偏移,也就是各层的输出不均衡问题来加速训练和收敛。但是仍然解决不了训练退化,也就是随着网络加深,训练效果不升反降的问题。
而这篇文章通过引入“残差模块”,来有效的解决了训练退化的问题。残差模块,简单来说,就是将希望预测的值H(x),转变为输入x加一个残差函数F(x),即H(x)=F(x)+x。比如我现在想要预测一辆车的长度,这辆车的长度是4.8m,网络某一层的输入是4.5m,传统的做法是,经过一系列的卷积、非线性变换之后,得到一个输出,这个输出就是4.8m。那么残差模块希望的是通过同样的网络结构,得到一个(4.8-4.5)=0.3m的输出,这个输出是输入与真实值之间的“残差”,或者理解为bias、offset我觉得都是没有问题的。但是可能读到这里,会有疑问,同样是卷积操作+非线性变换,为什么输出残差就要比输出最终的值要好呢?(这也是一个非常核心和关键的问题所在)
先说一下这个公式H(x)=F(x)+x,F(x)的输出,与x输入之间,是要大于等于两层的,否则文章指出就相当于是给x加了一个线性层,相当于是H(x)=Wx+x。不论隔了几层,因为并没有引入新的参数,因此也就不存在新的计算消耗。因为要加在一起,所以F(x)和x应该是同样维度的,也就是要求 channel数相同,如果不相同,给x做一个卷积操作H(x)=F(x)+Wx,将x维度变换到与F(x)相同即可。如果相同,直接相加就可以了。
文章的实验给出了18层和34层的卷积网络,分别不加和加了残差模块的结果。结果证明加入残差模块后,退化问题得到了解决,并且横向对比也可以看出残差模块可以显著加速收敛。
中间和右图分别是没有加残差模块,和加了残差模块的34层网络结构,18层的就是采用了34层结构的前18层子结构。虚线连线表示维度需要进行改变,实线则是直接把原来的输入x加到后面的输出。
文章给出的Plain结构最深的就是34层,那么如何加深网络结构呢,文章使用了“bottleneck”结构,也就是下图的结构,将Plain中的两层,替换为一个三层网络,先降维再升维。34层的结构中,除去第一层卷积和最后一层全连接,每两层都有残差结构,替换为三层的残差结构,得到一个2+(32/2)*3=50层的网络。
左边是Plain中的两层残差结构,右图是替换为三层的Bottleneck结构
在50层的基础上,在网络的后面再增加三层的Bottleneck残差结构,分别可以得到101层(增加27个三层Bottleneck)和152层(增加54个三层Bottleneck)。这些深层的网络都没有出现训练退化的现象,随着网络加深,训练效果都在提升。
加入残差结构,34层及更深的错误率对比
所以其实文章看到最后,都没有明确指出为什么残差结构能够解决退化的问题,大部分是给出的猜测。这里参考了https://www.jianshu.com/p/ca6bee9eb888的回答:
1、首先就是反向传播的过程中,残差模块对于数据的波动更加敏感。对于公式H(x)=F(x)+x,还是以车辆长度为例,假设车辆真实长度为4.6m,输入x为4m,而使用Plain结构的网络输出为4.3m,两个数相差不过(4.6-4.3)/4.6=7%左右。但是采用了残差结构,期望的输出应该是4.6-4=0.6m,而网络的输出就是4.3-4=0.3m,两个数差了100%。在计算梯度的时候,这完全是两个概念,所以说残差模块对于微小的波动更加敏感。
2、再就是论文里,和这篇文章提到的,残差模块去求解本征映射的优化难度要低很多。个人理解是,忽略掉数据之间的相同点,重点关注数据之间的不同点,可以有效降低数据冗余。


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 深入理解线程、进程、多线程、线程池
    本文以QT的方式来走进线程池的应用、线程、进程、线程池、线程锁、互斥量、信号量、线程同步等的详解,一文让你小白变大神!为什么要使用多线程、线程锁、互斥量、信号量?为什么需要线程 ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
author-avatar
来去匆匆4_362
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有