0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ResNet本质上就干了一件事:降低数据中信息的冗余度。

DPVg_AI_era 来源:lp 2019-04-19 11:48 次阅读

本文作者重新审视了ResNet之所以工作的原因,得出结论:ResNet本质上就干了一件事:降低数据中信息的冗余度。

最近在总结完成语义分割任务的轻量级神经网络时,看到了MobileNetV2中对于ReLU层的思考,于是我也回过头重新审视ResNet之所以work的本质原因。以下是一些个人的见解,如有错误,还望及时指正。

在谈及ResNet之前,我们先聊聊故事的背景。

我们知道,在神经网络中,非线性激活层可以为模型引入了非线性,让模型具有更强的拟合能力。如果只是单纯的线性操作层的叠加,则完全可以等价为一个线性层,这就浪费了深度神经网络的一身好本领。

所谓针无两头尖,那么非线性激活层会带来一些什么问题呢?我们以ReLU为例来进行说明,其他非线性激活层亦同理。

首先,最直观的,从实验中我们可以注意到一个事实:ReLU 会造成的低维数据的坍塌(collapse)。顾名思义,即是说,低维度的feature在通过ReLU的时候,这个feature会像塌方了一样,有一部分被毁掉了,或者说失去了。能恢复吗?能,但是基本无法百分百还原了。

具体表现出来就是:若是我们对一个feature,先通过一个给定的变换规则T,将它映射到它的embeddingspace中,再在该embeddingspace中,利用一个ReLU去处理该feature,最后再把这个feature以同样的变换规则(逆方向)给映射回原始空间,我们会发现,这时,这个feature已经变得连亲妈都不认得了。如图↓

图片来自《MobileNetV2:InvertedResidualsandLinearBottlenecks》

ReLU这个东西,其实就是一个滤波器,只不过这个滤波器的作用域不是信号处理中的频域,而是特征域。那么滤波器又有什么作用呢?维度压缩,俗话说就是降维啦:如果我们有m个feature被送入ReLU层,过滤剩下n个(n

那么,为什么低维数据流经非线性激活层会发生坍塌(信息丢失),而高维数据就不会呢?

打个简单但不严谨的比方:大家都有过年抢高铁票的经验吧?几个人(维度低)帮你抢一张票,肯定没有一群人(维度高)帮你抢一张票,成功的概率高啊。几个人里面,大概率全军覆没,没一个能帮上你忙的。而一群人里面,大概率总有那么一个手速惊人的单身青年,帮你抢到你心心念念的回家票。

在数据上也是一个道理,维度低的feature,分布到ReLU的激活带上的概率小,因此经过后信息丢失严重,甚至可能完全丢失。而维度高的feature,分布到ReLU的激活带上的概率大,虽然可能也会有信息的部分丢失,但是无伤大雅,大部分的信息仍然得以保留。所谓留得青山在,不愁没柴烧嘛。更何况被ReLU截杀的信息,可能只是一些无用游民(冗余信息)。

那么数据的坍塌,是个很严重的事吗?

那事儿可大了。如果把神经网络比作一个人的话,你这就是给它的某个部位的血管里,丢了个血栓。

当信息无法流过ReLU时,该神经元的输出就会变为0。而在反向传播的过程中,ReLU对0值的梯度为0,即发生了梯度消失,这将导致神经元的权重无法再通过梯度下降法进行更新,这种现象被称为特征退化。所以这个神经元相当于死掉了,丧失了学习能力。我们说,一旦神经元的输出陷入0值,就无法恢复了。

那么,我们应该怎么去规避数据的坍塌呢?非线性激活层到底是个什么样的东西?

其实,对于一个数据,利用非线性激活层对其进行激活,其实是从该数据的信息中提取出其潜在的稀疏性,但是这种提取的结果是否正确,就要分情况讨论了。

对于一个M维的数据,我们可以将其看成是在M维空间中的一个M维流形(manifold)。而其中的有用信息,就是在该M维空间中的一个子空间(子空间的维度记为N维,N<=M)中的一个 N 维流形。非线性激活层相当于压缩了这个 M 维空间的维度(还记得前面提过的维度压缩吗?)。若是该 M 维空间中的 M 维流形本来就不含有冗余信息(M=N),那么再对其进行维度压缩,必然导致信息的丢失。

而维度低的数据其实就是这么一种情况:其信息的冗余度高的可能性本来就低,如果强行对其进行非线性激活(维度压缩),则很有可能丢失掉有用信息,甚至丢失掉全部信息(输出为全0)。

与非线性激活层不同的是,线性激活层并不压缩特征空间的维度。于是,我们得到了一条使用激活层的原则:

对含有冗余信息的数据使用非线性激活(如ReLU),对不含冗余信息的数据使用线性激活(如一些线性变换)。

两种类型的激活交替灵活使用,以同时兼顾非线性和信息的完整性。

由于冗余信息和非冗余信息所携带的有用信息是一样多的,因此在设计网络时,对内存消耗大的结构最好是用在非冗余信息上。

根据以上的原则设计出来的结构,聪明的你想到了什么?ResNet。不得不赞叹KaimingHe的天才,ResNet这东西,描述起来固然简单,但是对它的理解每深一层,就会愈发发现它的精妙及优雅,从数学上解释起来非常简洁,非常令人信服,而且直切传统痛点。

ResNet本质上就干了一件事:降低数据中信息的冗余度。

具体说来,就是对非冗余信息采用了线性激活(通过skipconnection获得无冗余的identity部分),然后对冗余信息采用了非线性激活(通过ReLU对identity之外的其余部分进行信息提取/过滤,提取出的有用信息即是残差)。

其中,提取 identity 这一步,就是 ResNet 思想的核心。

从本文的观点来看,因为从数据中拿掉了非冗余信息的identity部分,会导致余下部分的信息冗余度变高。这就像从接近饱和的溶液中移走了一部分溶质,会使得剩下的溶液的饱和度降低,一个道理。

在这里也引用一下其他的一些观点,方便大家可以从一个更全面的角度去看这个问题:

从特征复用的观点来看,提取identity部分,可以让网络不用再去学习一个identitymapping(虽然是一样的东西,但是毕竟又要从头学起,讲真,换你来试试,这其实真的不容易学到),而是直接学习residual。这就轻松愉快多了:站在巨人的肩膀上,做一点微小的工作什么的...

既然说了ResNet解决的痛点,也顺便多说几句它带来的好处:

由于identity之外的其余部分的信息冗余度较高,因此在对其使用ReLU进行非线性激活时,丢失的有用信息也会较少,ReLU层输出为0的可能性也会较低。这就降低了在反向传播时ReLU的梯度消失的概率,从而便于网络的加深,以大大地发挥深度网络的潜能。

特征复用能加快模型的学习速度,因为参数的优化收敛得快(从identity的基础上直接学习残差,总比从头学习全部来得快)。

最后是两个小tips:

如果一个信息可以完整地流过一个非线性激活层,则这个非线性激活层对于这个信息而言,相当于仅仅作了一个线性激活。

解决由非线性激活导致的反向传播梯度消失的窍门,就是要提高进行非线性激活的信息的冗余度。

如果您觉得本文对您有所帮助,请高抬贵手点个赞~

接下来会填之前语义软分割的坑和图神经网络的坑,还有一些杂七杂八的:如姿态估计网络啦、deepSLAM啦、视觉跟踪网络啦、VQA啦...最近光忙着看paper和写笔记了,有空再整理后发上来。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4762

    浏览量

    100517
  • 冗余
    +关注

    关注

    1

    文章

    109

    浏览量

    20177
  • resnet
    +关注

    关注

    0

    文章

    12

    浏览量

    3156

原文标题:对 ResNet 本质的一些思考

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    为什么做一件事或者学习FPGA每隔段时间就会感觉遇到瓶颈呢?

    一件事或者学习每隔段时间就会感觉遇到瓶颈
    发表于 07-30 08:59

    [原创]每天做好一件事

    每天做好一件事位画家,举办过十几次个人画展。开始无论参观者多少,脸上总是挂着微笑。有次,我问他:"你为什么每天都这么开心呢?"他给我讲一件事情:小时后,我兴趣非常广泛,也很
    发表于 05-31 11:55

    什么叫做“每天6件事”,如何落实“每天6件事

    如何有效率地一一完成工作,而不是面对六难事。现在把这六件事照顺序解决。从第项开始。尽量避免干扰,若无法避免,要赶快解决,然后回到第一件事,迅速完成,做完以后就从表上划掉,继续做第二
    发表于 04-21 13:40

    学习C2000,大学里最值得干的一件事

    经常看到有网友发帖问相关DSP入门的问题,这里针对C2000入门来总结下: 从个人经验来看,在大学选择学习C2000是最值得干的一件事。 总体来说C2000的门槛比较高,只要你入门并深入学习了
    发表于 09-25 14:09

    干货-背钻工艺,超高速信号电路板必须要做的一件事

    干货-背钻工艺,超高速信号电路板必须要做的一件事!https://bbs.elecfans.com/forum.php?mod=viewthread&tid=1417189&extra=更多知识,专注电子技术,请关注电子发烧友小组:卧龙会IT技术。打开文章点击右上角加入小组。
    发表于 01-12 17:02

    提高电源冗余度的结构分析

    为了提高冗余度,不少使用"或"运算二极管的电源都可接入同个负载。在维护期间,当你拆去任何个电源时,希望负载的电源骚动尽可能最小。为了补偿"或"运算二极管两端的电
    发表于 07-14 10:34 850次阅读
    提高电源<b class='flag-5'>冗余度</b>的结构分析

    小米神话被华为OV联手打败,只因为雷军常做这三件事

    曾经的小米,多么传奇的神话?结果却被华为OV联手打败。越来越多的米粉转成了米黑,只因为雷军做了三件事。第一件事是饥饿营销,第二件事是售后不给力,第三件事是经常吹牛。
    发表于 02-06 08:46 1569次阅读

    冗余度桁架机械臂的容错逆运动学仿真_赵普

    冗余度桁架机械臂的容错逆运动学仿真_赵普
    发表于 03-19 11:41 0次下载

    10年专注一件事,OPPO品牌获年轻用户认可

    适应新的消费特点,满足用户需求,能坚持创新的品牌。其中,手机行业里的OPPO在品牌表现就尤为出色,从2008年开始OPPO就正式进军手机领域,此后10年,OPPO专注于做好手机这一件事,不断创造爆款
    发表于 05-11 09:46 809次阅读

    什么叫冗余度

    冗余度,就是从安全角度考虑多余的个量,这个量就是为了保障仪器、设备或某项工作在非正常情况下也能正常运转。网络传输的冗余数据传输中,由于衰减或干扰会使
    发表于 11-21 10:21 4.8w次阅读

    马云从企业家到师者的决然转身,教会给了人们的第一件事

    敢于直面改变,马云从企业家到师者的决然转身,教会给了人们的第一件事。马云在采访中拿比尔·盖茨举例子时说:“我永远都无法和他样富有,但是我能比他更早地退休。”54岁,对个企业家来是风华正茂的年纪,掌控
    的头像 发表于 09-13 11:59 2514次阅读

    希捷就只做了一件事儿,对此,你怎么看?

    希捷就只做了一件事儿,对此,你怎么看? 都是做事情,想法不样,或者说态度不样,结果不样,对吗? 把事情当事儿做,想的是尽快把事儿做完,交代就可以了; 把事情 当事业做 ,并视为人
    发表于 10-21 00:01 255次阅读

    如何正确看待人工智能时代的发展

     对AI抱有期待和对AI恐惧的两类人,可能都没有意识到,他们的期待和害怕本质上都是同一件事:AI太智能了。
    发表于 09-29 14:29 6687次阅读

    为ADAS构建时需要考虑的6件事说明

    为ADAS构建时需要考虑的6件事说明。
    发表于 09-22 17:06 1次下载

    江波龙电子丨商业往事第69话:每一件事都可以有策略

    商业往事每月分享几则有趣的商业小故事(中英双语),邀请大家和我们起透过历史故事,看存储商业。每一件事都可以有策略本文总计2696字预计阅读9分钟(英文文章在中文文章之后)你渴望的任何东西,你几乎
    的头像 发表于 06-13 10:08 613次阅读
    江波龙电子丨商业往事第69话:每<b class='flag-5'>一件事</b>都可以有策略