知行编程网知行编程网  2022-05-22 20:00 知行编程网 隐藏边栏 |   抢沙发  33 
文章评分 0 次,平均分 0.0

如何评价何恺明团队的最新工作RegNet?

来自 | 知乎

链接 | https://www.zhihu.com/question/384255803

编辑 | 深度学习这件小事

本文仅作学术交流,如有侵权,请联系删除

如何评价何恺明团队的最新工作RegNet?

   提问

如何评价FAIR团队最新推出的RegNet?

RegNet不仅网络设计范式与当前主流“背道而驰”:简单、易理解的模型,也可以hold住高计算量。在类似的条件下,性能还要优于EfficientNet,在GPU上的速度还提高了5倍。

论文链接:https://arxiv.org/abs/2003.13678


   高质量回答

雨宫夏一
厦门大学计算机科学与技术博士在读
https://www.zhihu.com/question/384255803/answer/1122828283

首先纠正一下大家,这个其实是Ilija Radosavovic 一系列的工作,Ilija Radosavovic 在这个系列上出了两篇工作第一篇评价搜索空间,挂没挂kaiming he 我忘记了,第二篇,也就是这篇,在第一篇的基础上,不断的 shrink 搜索空间来获取insight辅助设计网络。

首先看到这个文章第一个想法是作者土豪啊,大家现在NAS的做法是某点突破,首先在一个搜索空间上,怎么想着拼命节约时间,怎么节省怎么来,很多NAS文章都透露着穷酸相,这篇文章直接开始 农村包围城市了,直接对search space 指手画脚了。

如何评价何恺明团队的最新工作RegNet?

例如上图,从A走到B大概需要在Imagenet上训练 500x10 epoch吧。

现在可以把NAS文章按照卡的等级分为这么几类:

1. 穷逼高校研究组,特点是基本上就搞cifar10,实在不行cifar100。

什么,搜索imagenet?搜索imagenet是不会搜索的,这辈子都不可能的,又没有卡,就是在cifar10上搜索这样子,然后加上autoaugmentation ,调试调试参数,刷刷performance这样子,在cifar10上搜索呢,感觉比imagenet上好多了,实验又容易做,每次随便搜索性能又好,超喜欢cifar10上搜索。然后搜索完成结构随便迁移到Imagenet训练一下这样子,才能稍微维持一点水文章的速度。

2. 中产高校研究组/start up 公司 

这些单位有条件直接在ImageNet上搜索了,开始定点突破了,大家都在疯狂的刷 600FLOPS下最优的网络结构,主要就是在MobilenetV2/V3上面疯狂的搜索+调试参数。紧跟Google步伐,google公布一个架构backbone,大家疯狂的跟上,搜索一波,然后再PR,我beat 了 efficientNet!牛逼不牛逼???当然,请忽略我仅仅beat 了 efficientB0这个事实。但是其实讲道理,我挺喜欢这些工作的,也推荐大家使用这些结构,因为确实不错,里面真心推荐once for all,虽然代码复杂了点,但是目前 600M flops下我目前没看到谁超越。

3. 来到了我们的主角了,土豪研究组,众星捧月,一出文章大家疯狂follow,比如Facebook的 fair,或者 google quoc le团队。

每次Quoc Le 一发文章,所有人就follow,有的叫道“Quoc Le,你又发文章了!”Quoc Le也不回答,对Google集群说,提交1000个模型,每个模型设置不一样的参数,精确到小数点后两位,“你又调参数来涨点了”他便涨红了脸,额上的青筋条条绽出,争辩道,“修改参数不叫调参,又没有用hyperband,”接着便是一些难听的话,“为了获取更好的insight”引得众人都哄笑起来:店内外充满了快活的空气。讲道理,对于这两个公司,我感觉更喜欢Quoc le 吧,每次发的文章都很有insight,也确实看到他们在自己有很多卡的基础上,做了很多探索性质的工作,而且都很solid,文章一出实验上让人无话可说。比如NASbench 101,比如 efficientNet,mobilenetV3,Facebook显然后劲不足,当然,比我们是强多了,我指的是和Google相比。

回到这篇文章上来讲吧,做几个客观事实描述:

这篇文章有没有insight?有,而且还挺多,确实很不错,至少做了很多实验,让大家看到诚意。比如高赞回答的那些点都回答的很好了,主要就是这些优点。这些点都在设计网络上可以作为参考。

我来主要说一下缺点吧,

1. 在这个问题下面也有人描述,其实imagenet上训练10 epoch,显然不够的,其实epoch会对结果影响很大,没有大量的实验作为参考,莫名其妙就把epoch设定为10显然不合理,因为epoch改变对于结构的rank影响非常大,所以对于后面的结论都要有一点疑问。我作为搞nas的来讲,cifar10上10epoch都会极大地降低 相关度,更别提imagenet了。

2. Anynet search space 太overclaim了,很多参数明明就是按照现有的网络结构先验设定好的,比如开始卷积层,比如stage的设置,比如一些block的设置。

3. 搜索空间的跃迁太快了,比如一上来立马就固定/share一些超参数,但是现在很多都是不固定的,我要吹一波 hansong 组cai han的proxylessNAS 还有 once for all了,在他们搜索的时候很明显不share 获得更好的网络结构。

4. 最后的Flops指标的问题,这个其实很不错,FLOPS和GPU 下不是线性其实很多人都注意到了,其实FLOPS更能反应的是CPU上的运算速度。

总的来说,前面三个地方需要略微修改,特别是第一个,为什么正好是10epoch,比如在一个imagenet 的子集上证明了10 epoch, 100 epoch带来的变化不大,那就可以解释得通。其他其实都是小问题。相比于FAIR组之前的一些文章,纯粹的个人观点,工程可用性上不如FBnet,在insight上不如 random wired Net。不过这篇文章的实验已经足够solid,虽然不如之前的文章,当然大部分人已经都要好很多了,值得是一篇oral。


江山如画
士不可不弘毅
https://www.zhihu.com/question/384255803/answer/1129276903

CVPR的影响力还是比较大的,何恺明团队的另外一篇关于自监督的NAS(UnNAS)文章暂时还未见在知乎上广泛的讨论。

神经网络的自动化设计,作为一个新兴的学科,必然有着从幼稚走向成熟的过程。
以古时候的战争为例:
1、手动设计神经网络相当于小股势力之间的战争,一个将军根据学习到的兵法和实战经验,一点点的摸索出排兵布阵方法,称为一个优秀的将领;
2、大多数的NAS讲的是大规模的战争,一个势力派出很多个军团,每个军团都有自己的打法,最后谁打的好就加官进爵,最终得到优秀的将领;
3、RegNet则是在选拔将军之前进行一轮考试,只有考试合格的才能够到战场参与实战,最终从这些人中在选拔优秀的将领。
4、那么何凯明团队的另外一篇UnNAS则讲的是,将军不用去战场实战了,通过军事演习,根军演习的成绩就能够估计出实战的本领,以此来选拔将领。
UnNAS 论文解析
https://zhuanlan.zhihu.com/p/118161558

5、目前为止,这些将军选拔还都有着一个前提,就是他们有着相同的士兵库(比如只能在步兵、骑兵、弓兵中选择),而开发出新的兵种同样重要,一个新的兵种很可能带来降维的打击,比如坦克出现在古代战场,那么所有的规则都要改写。对应到深度学习中,或者具体到NAS中。目前的搜索结构均是已知的设计,比如ResNet带来的跳跃连接思想,是NAS无法自己实现的,需要在搜索空间中给出这种连接的可能。(Relu、空洞卷积、1*1卷积等同样是需要认为给定的)那么接下来NAS的发展方向会不会有这种创建新兵种的思想呢?是难点,也是能够带来显著提高的地方,让我们拭目以待。

书归正传。

Designing Network Design Spaces是怎么产生的呢?

NAS虽然可以找到更好的网络,但是太暴力了,找到了一个网络,换一种空间或者规定,又要重新开始搜。

手动设计的网络没有NAS效果好,(毕竟资源和速度上不如NAS),但是具有着通用设计规则,一个优秀的学者知道该怎么设计更好的网络出来。

取其精华去其糟粕,该文章便是结合NAS和手动设计的优点,通过对搜索空间的优化和限制,提高了搜索的速度和效果。

所以概括来,这篇文章做的就是一件事:找到优秀网络的分布规律,从而限制搜索空间的范围,提升搜索效果。

按照文章主要部分的思路:
1、用了什么工具实现?
2、设计一个不受限制的空间。
3、得出RegNet。
4、验证不同setting下,这一套结论同样奏效。

1、用了什么工具——工欲善其事,必先利其器。

EDF以及 empirical bootstrap。

如何评价何恺明团队的最新工作RegNet?

上图中left就是EDF,横坐标表示error,具体数值根据实际数据会有变化。纵坐标表示累计样本所占的比例,具体数值只能是0-1。如果对这个曲线不理解,可以参考累计直方图。或者说,不想去理解的话,直接参考ROC曲线,曲线越靠近左上角,越好。

middle以及right均是empirical bootstrap。这个我解释不好,直接说他的作用,属于一种解决小样本问题的统计方法,相较于直接看均值方差,更有意义。想深入了解的同学可以参考。如果没兴趣深入了解也没关系,知道一点就行了,蓝色背景内对应的横坐标比外面的好,黑色线对应的横坐标最好。

Stata:Bootstrap 简介https://blog.csdn.net/arlionn/article/details/100777004

2、设计一个不受限的空间——天高地迥,觉宇宙之无穷。

既然文章强调的是对搜索空间的设计,那么相较于对单个网络的设计而言,搜索空间要足够的大,从一个足够大的空间开始,逐步的缩小空间,提高效果。所以文章给出的最初始化的网络,叫AnyNet,可以说,在相同的setting下,凡是搜索的网络(或者空间)都是该网络的子网络(子空间)。

如何评价何恺明团队的最新工作RegNet?

对于最初始的AnyNet,所有参数都是不定的,总共有近1e18个可能的网络存在,直接用NAS方法去搜索,是一件浩大的工程,所以作者设计了搜索原则:
a、简化设计空间的结构;
b、提高设计空间的解释性;
c、提高设计空间的质量(至少保持不变);
d、保持设计空间模型的多样性。

以此通过EDF以及 empirical bootstrap方法一步一步的证明:

a、共享(这个参数全局一样)bottleneck ratio对效果无影响,AnyNet XA->AnyNet XB。
b、共享group width对效果无影响,AnyNet XB->AnyNet XC。
c、逐步增大网络宽度能够提升效果,AnyNet XC->AnyNet XD。
d、逐步增大网络深度能够提升效果,AnyNet XD->AnyNet XE。

基于以上,搜索空间变逐被限制到一个小范围。或者说NAS在设计搜索空间的时间,可以参考以上原则。

3、得出RegNet——水落石出、拨云见日。

上一步是通过实验逐步确定了一个小的搜索空间范围,或者说高效搜索空间的设计准则。那么接下来的RegNet则是更加具体的子空间。

主要介绍宽度设计,随着深度增加而线性增长是最佳选择。

如何评价何恺明团队的最新工作RegNet?

图中是对数坐标,这里涉及到几个公式推到,都很简单,就不列举了。结论就是
wm>=2, w0=wa是做好的情况。

4、验证不同setting下,这一套结论同样奏效——千磨万击还坚劲,任尔东西南北风 。

这部分就是一些实验的结论了。

bottleneck ratio=1最好。wm在2.5附近最好。其他参数随着复杂度增加而增加。计算时间与activation相关度要大于flops,等等。这些结论已经有人分析过了,而且我认为文章的要做的事和分析问题的思路的意思相对于结论是更重要的,所以便不一一列举了。

最后看一下效果。

如何评价何恺明团队的最新工作RegNet?
如何评价何恺明团队的最新工作RegNet?

相较于 EFFICIENTNET以及ResNet均是有着较大的提高。

如何评价何恺明团队的最新工作RegNet?

而在Mobile Regime上则不是效果最好的,这里文章给出的解释为,只使用了100epoch而且没使用除了weight decay之外的正则化处理。不像其他网络一样various enhancements, such as deep supervision, Cutout,DropPath,AutoAugment等等。这点上我是相信作者团队的,大家可以参考一下MoCo以及MoCo-V2与SimCLR的比较就知道了,作者团队团队是针对于这个框架方法,并没有去细化处理。

最后的最后,两点:
1、10epoch是否能够具有说服力呢,我认为是有的,可以参考UnNAS这篇文章的实验分析,也是同样采用10epoch,同时也进行了充分的训练,足够多的实验证明了10epoch是能够挑选出网络的好坏的。
2、另外我也有质疑的一点,比如果文章证明了共享group width等于不共享的EDF接近,但是这并不能够证明group width的设计方式无影响,可能存在某一种设计方式具有较好的表现,只是全部的方式分布接近共享的方式,简单说就是共享的方式恰在落在这个点上。


丶favor
厦门大学计算机技术硕士在读
https://www.zhihu.com/question/384255803/answer/1121375506

仔细读了一下文章,太牛逼了,好顶啊kaiming!

statistics 大法好,DL不是statistics,因为DL不如statistics。基本全文从统计学的角度解释了怎么设计网络搜索空间好,哪些要素是有用的,其深度广度以及坚若磐石的实验都令人瞠目结舌,绝对的2020年巅峰大作!这里就放结论,下面每个结论中的小点随便都能发一篇论文。

1. 实验中发现的几个关于性能的打脸结论:

  • 无论模型多大,20个block的深度是最合适的。大网络越深越好是不对的。

  • bottleneck ratio设置成1是最好的。

  • width multiplier设置成2.5是最优质的。

  • 剩下的初始网络宽度,group数量,宽度随深度的增长关系,这些随着模型增大而增加会是最佳选择。(大碗宽面2.0,你看我这面,就这么长,但是那么那么那么宽。)


2. 然后是几个关于复杂度(速度)的打脸结论,首先这里定义了一个所有卷积层输出tensor的大小叫做activations(这玩意你不管用啥卷积,出来tensor一样大这个值就不变):

  • flpos跟速度之间的关系明显没activations好,啪啪啪。具体见图:


如何评价何恺明团队的最新工作RegNet?

  • 以后不要只用flops建模速度了,这玩意最好用根号flops以及线性的activations一起来建模。


3. 再是几个关于非常常见的一些设计比如inverted bottleneck以及depthwise conv的结论。首先前者稍微降低了点EDF(评价指标)(说白了就不好使),后者就还不如group conv。但是scaling the input image resolution是依然有用的。再说SE module,这玩意也有用。

------

小小地更新一下,发现10epoch 这个点争议很大。。其实从我粗浅地理解来看,文章的核心是population(总体估计),这个其实是我当时觉得有意思的一个点。。如果从NAS的individual视角来看,单个模型训10 epoch 你就评价它的好坏,那几乎没人信。但是即便是10 epoch的模型也能反应出最后的ranking结果,只不过它是带噪的,而且噪声还挺大。然而,在大量的采样下,核心规律是不会变的,只要它是有规律的而不是完全随机的,这就是大数定理大家应该都喜闻乐见。尤其是在imagenet这个量级的benchmark,如果不加trick的话,在我过往的体验里,一般刚开始好的模型大概率最后都会好。而且,文章就用了三个参数来拟合一个线性模型,这样的线性模型拟合不了任何复杂的分布,它只能反应出整体的趋势和规律。即便换成200epoch,它仍然是个线性模型。所以第一 10 epoch反映出的这个规律还是有一点的,第二采样量其实也不小(换句话说,训200epoch可能只需要采样50个模型就够了),第三模型又足够简单,这三者合一来发现一些核心规律其实是可以理解的。所以这个population的思想我觉得挺有意思的,真的非常statistics。


<pre style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;min-height: 1em;letter-spacing: 0.544px;white-space: normal;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;line-height: 1.75em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong>完<strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong></span></strong></span></strong></section><section style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-bottom: 15px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;color: rgb(127, 127, 127);font-size: 12px;font-family: sans-serif;line-height: 25.5938px;letter-spacing: 3px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;font-size: 16px;font-family: 微软雅黑;caret-color: red;box-sizing: border-box !important;overflow-wrap: break-word !important;">为您推荐</span></strong></span></section><section style="margin: 5px 32px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;">我,斯坦福AI读博,李飞飞是师娘,5年5篇顶会论文,依然一度抑郁怀疑人生<br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"  /></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(87, 107, 149);font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;">MIT最新深度学习入门课,安排起来!</span></section><section style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(87, 107, 149);-webkit-tap-highlight-color: rgba(0, 0, 0, 0);cursor: pointer;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;">有了这个神器,轻松用 Python 写个 App</span></section><section style="margin: 5px 32px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;">Manning大神牵头,斯坦福开源Python版NLP库Stanza:涵盖66种语言<br  /></section></section></section></section></section></section></section></section></section>
如何评价何恺明团队的最新工作RegNet?

本篇文章来源于: 深度学习这件小事

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享