文章目录

  • 1. 动机
  • 2. 方法
    • 2.1 网络基本结构
    • 2.2 从AnyNetA到AnyNetE
    • 2.3 RegNet
  • 3. 总结
  • 4. 没有理解透的点

1. 动机

  当前设计网络结构的方法大部分是基于手工的,即通过做实验来确定相对最优的网结构。如果网络结构比较复杂,需要调整的超参数较多,手工的方式就很难找到最优的网络结构。所以大佬们设计了NAS(Network Architecture Search)及其拓展的方法,让网络自己去搜索最优的结构。其发展历程可以参考知乎CLAY的回答。本文表示NAS的搜索结果只是针对单一的网络实例,不具有一般性,无法直接迁移到其他的网络或者任务上。这篇文章不仅提出了一个新的网络结构,还从构建这个网络结构的流程上,总结出了一些可以通用的网络结构设计原则,相当于半自动化的NAS。

2. 方法

2.1 网络基本结构

  其中整个网络分成三个部分:stem->body->head,其中输入图片是224x224x3,stem部分是一个卷积层,卷积核为3x3,卷积核数量为32,strides=2。head则是全连接层,用于输出n个类别。
  而body部分由4个stage组成,从stage1到stage4,分辨率逐次减半,但是每一个stage输出的特征图的数量w1,w2,w3,w4则作为超参数需要用到本文所提到的方法去搜寻;
  每一个stage又是由did_idi​个相同的block构成,本文大部分实验所使用的block都是residual bottleneck block,如上图中最右边的图所示。其中block的数量did_idi​也作为超参数需要搜寻确定。
  在residual bottleneck block中,存在3个参数:block最终输出的特征图数量(width)wiw_iwi​;bottleneck ratio bib_ibi​(用于确定block内部的特征图数量);group width gig_igi​(与Inception结构类似,block横向重复的数量,如下如所示):

  综上所述,网络有4个stage,每个stage中需要搜寻确定的参数有block的数量did_idi​;block width wiw_iwi​;bottleneck ratio bib_ibi​;group width gig_igi​;共计16个参数(文章中称为16个自由度)。找到这16个参数的最优设置,就是本文所完成的工作。

2.2 从AnyNetA到AnyNetE

  文章首先确定了参数的取值范围:

Type Abbrev Range
width wiw_iwi​ ≤\leq≤ 1024 (可以被8整除)
depth did_idi​ ≤\leq≤ 16
bottleneck ratio bib_ibi​ {1, 2, 4}
group width gig_igi​ {1,2,…,32}

这就是初始的Design Space,也就是AnyNetA的解空间。如果采用穷举的方式,那么将会有(6x128x3x6)4(6x128x3x6)^4(6x128x3x6)4,大约101810^{18}1018这么多种可能。所以作者采用了一种抽样的方式,有放回的从Design Space中取出500个模型(每个模型的flops在360MF-400MF之间),每个模型只训练10 epochs。所谓抽取模型,其实就是通过对数均匀采样(log-uniform)【尚未理解其原理】的方式从上述的取值范围中提取出网络关键参数。最后根据误差经验分布公式error Empirical Distribution Function(EDF)来判断该设计空间的质量:
F(e)=1n∑i=1nl[ei<e]F(e) = \frac{1}{n}\sum_{i=1}^{n}l[e_i < e] F(e)=n1​i=1∑n​l[ei​<e]
即抽样模型中满足误差要求的模型所占的比例。

  固定所有stage中bottleneck ratio bib_ibi​ 为一个定值,这样得到的Design Space称为AnyNetB。【结果表明,共享bottleneck ratio时,模型的精度没有损失】。

  于是在B的基础上,进一步的共享group width gig_igi​ 为一个定值,得到Design Space称为AnyNetC。【结果表明,共享参数group width时,模型的精度没有损失】。

  在C的基础上发现那些当前最优的模型所具有的一个共性是其网络结构具有递增的通道数(widths)。所以添加规则 wi+1>=wiw_{i+1} >= w_iwi+1​>=wi​, 得到Design Space称为AnyNetD。【结果表明递增widths,性能提升】。

  在D的基础上发现当网络性能随着stage width的增加而增加时,depth也有同样的趋势,于是添加规则 di+1>=did_{i+1} >= d_idi+1​>=di​, 得到Design Space称为AnyNetE。【结果表明递增depths,性能提升】。

2.3 RegNet

  在AnyNetD和AnyNetE的基础上,作者发现block输出特征图数量(width)与block的index呈线性关系,所以引进了一个block width计算公式:

uj=w0+wa∗j(0≤j<d)u_j = w_0 + w_a* j \ \ (0 \leq j < d) uj​=w0​+wa​∗j  (0≤j<d)

其中w0w_0w0​是初始width,waw_awa​是斜率,uju_juj​是计算后得到的block j的width。

然后根据下面的式子为每个block j计算sjs_jsj​ :

uj=w0∗wmsju_j = w_0 * w_{m}^{s_j} uj​=w0​∗wmsj​​

sj=logwmujw0s_j = log_{w_m} \frac{u_j}{w_0} sj​=logwm​​w0​uj​​

为了量化 uju_juj​ ,将上述计算得到的 sjs_jsj​ 进行简单的四舍五入,利用下面的式子就可以得到每个block的量化(quantized)width wjw_jwj​ :

wj=w0∗wm⌊sj⌉w_j = w_0 * w_{m}^{\left\lfloor {s_j} \right\rceil} wj​=w0​∗wm⌊sj​⌉​

因此,这里又多了3个参数:w0w_0w0​ , waw_awa​, wmw_mwm​ ; 给定一个模型,固定网络深度depth参数d,然后采用网格搜索的方式最小化预测与实际的每个block width的平均对率比,这里写作 efite_{fit}efit​,没有具体公式,可以大胆推测一下为:

efit=1n∑j=1nlogw^jwje_{fit} = \frac{1}{n} \sum_{j=1}^{n}log\frac{\hat w_j}{w_j} efit​=n1​j=1∑n​logwj​w^j​​

这种线性参数化(linear parametrization)自然的给wiw_iwi​ 和 did_idi​ 添加了一种递增的约束,符合AnyNetE中的观测结果的。

  通过上面的分析,进一步的将设计空间限制到6个维度:d, w0w_0w0​ , waw_awa​, wmw_mwm​ , b, g,把从这种Design Space中找到的网络结构称为RegNet ,其参数限制为:

Type Abbrev Range
depth ddd < 64
initial width w0w_0w0​ < 256
slope waw_awa​ < 256
- wmw_mwm​ [1.5, 3]
bottleneck ratio bbb {1, 2, 4}
group width ggg {1,2,…,32}

其中b,g基于AnyNetXE上的$e_{fit} $来确定范围。

  综上所述,从AnyNetA到RegNet实际上是通过抽样、统计的方式,找到能使模型性能提升的规则,然后添加这些规则并逐步缩小Design Space的过程。从下面的表也能看出:

  文章在RegNetX的基础上添加了Squeeze-and-Excitation(SE)操作,得到的设计空间称为RegNetY。SE操作类似于gate操作,加权:

  当然文章也探讨更多的情况,比如3stages或者5stages,使用不同的block等,基于这些原则都能搜寻到更好的network。

3. 总结

  本文提出了一种半自动化的最优网络结构搜寻方法,通过不断添加规则缩小Design Space,从而找到较优的网络结构。文章中所发现的一些网络结构构造的原则,有的符合我们的经验,有的与我们经验正好相反,还有一些我们之前没有关注到的一些方面。
一致的经验:

  1. good network have increasing widths.

相反的经验:

  1. 网络并不是越深越好,实验表明最佳的模型大约20个blocks(60层左右)。
  2. bottleneck并没有对性能提示没有太大帮助(文中观点,实验表示b=1时最好,b<1(inverse bottleneck)则更糟)。
  3. width并没有随着stage的增加而增加两倍,大约是2.5倍时最好(文中实验证明)。

没有关注到的点:

  1. stage width wiw_iwi​ 和stage depth did_idi​ 都随着i的增加而增加,最后一个stage可能不满足此规律(对于4个stage的模型来说,一般stage3 block最多,stage4 block最少)。
  2. 想要获取较好的runtime,建模的时候activations和flops最好基于平方根和线性关系。

此外,文中还提及到两个激活函数relu和swish,其中swish表达式为:

f(x)=x∗sigmoid(βx)f(x) = x * sigmoid(\beta x) f(x)=x∗sigmoid(βx)

根据实验,relu适用与high-flops的模型,swish适用于low-flops的模型。个人认为是在high-flops的模型中,计算swish比计算relu要慢很多。

4. 没有理解透的点

1.对数均匀采样(log-uniform sampling)的原理是什么?怎么采?
2.width量化那块的公式(3)来的太突兀,不是很理解。

欢迎大家讨论~

【论文阅读】RegNet-Designing Network Design Space相关推荐

  1. RegNet: Designing Network Design Spaces

    Designing network design spaces是何凯明团队最近推出的一篇论文,目的是在探索网络搜索空间的设计.本论文和EfficientNet一样,也是假定网络的基本模块是不变的,不会 ...

  2. Paper:2020年3月30日何恺明团队最新算法RegNet—来自Facebook AI研究院《Designing Network Design Spaces》的翻译与解读

    Paper:2020年3月30日何恺明团队最新算法RegNet-来自Facebook AI研究院<Designing Network Design Spaces>的翻译与解读 导读: 卧槽 ...

  3. Paper之RegNet:《Designing Network Design Spaces》的翻译与解读—2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet

    Paper之RegNet:<Designing Network Design Spaces>的翻译与解读-2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet ...

  4. 【RegNet】《Designing Network Design Spaces》

    CVPR-2020 文章目录 1 Background and Motivation 2 Related Work 3 Advantages / Contributions 4 Design Spac ...

  5. 何恺明组《Designing Network Design Spaces》的整体解读(一篇更比六篇强)

    本文原载自知乎,已获原作者授权转载,请勿二次转载. https://zhuanlan.zhihu.com/p/122557226 statistics 大法好,DL不是statistics,因为DL不 ...

  6. Designing Network Design Spaces,译读

    Designing Network Design Spaces,CVPR 2020 ,RegNet,, Ilija Radosavovic, Raj Prateek Kosaraju, Ross Gi ...

  7. [论文阅读] Action Semantics Network: Considering the Effects of Actions in Multiagent System

    [论文阅读] Action Semantics Network: Considering the Effects of Actions in Multiagent System 原文链接:https: ...

  8. 阅读Designing Network Design Spaces(CVPR2020)

    [CVPR2020]网络设计空间,论文地址:https://arxiv.org/pdf/2003.13678.pdf 目录 Abstract 1.Introduction 2. Related Wor ...

  9. 【网络设计_RegNet】Designing Network Design Spaces_2020

    文章目录 Abstract 1.introduction 2.Related work 3.Design Space Design 3.1 Tools for Design Space Design ...

  10. 【CVPR2020】Designing Network Design Spaces

    论文地址:https://arxiv.org/pdf/2003.13678.pdf Abstract 在这项工作中,我们提出了一个新的网络设计范例.我们的目标是帮助提高对网络设计的理解,并发现跨领域( ...

最新文章

  1. List和ObservableCollection的相互转化
  2. 5.matlab 中的sort
  3. JavaScript内存泄漏
  4. (转载)为什么Linux不需要碎片整理?
  5. C#基础(Day08)
  6. 从实验现象详细分析BGP的路由策略与选路原则
  7. MySQL中的字符集涵义及使用方法总结(二)
  8. php 实时查看公众号加粉数据,公众号实时涨粉数据怎么查看
  9. Python开发者必知的 11 个 Python GUI 库,你用过几个?
  10. oracle 学习之:建视图时报ora-01031
  11. oracle 建立一个游戏库,Power Designer怎么新建Oracle数据?建立Oracle数据教程分享
  12. ios之JavaScript
  13. 高仿维信安卓(读博客)
  14. 编码风格之变量的命名规则
  15. RTMP推流摄像机联合EasyCVR安防视频云服务平台助力智能楼宇的建设
  16. lol服务器维护 胜率,说下这游戏服务器控制胜率怎么来的。
  17. JavaScript级联链表
  18. 2023年股票开户哪家手续费最低?融资融券利息率最低多少?万1融5!支持量化交易的券商
  19. 自我解读MVC三层架构原理
  20. 9、RH850 SPI(CSIH) 通讯功能和配置

热门文章

  1. 基于canoe 新建一个lin工程_详细步骤讲解如何在CANoe中创建一个LIN通讯工程(多图+详解)...
  2. 华为路由器时区以及时间配置
  3. linux学习资料(转帖收藏)
  4. 计算机安全中采用的用户身份验证技术主要有,探究用户身份认证技术在信息安全中运用的意义...
  5. 搜索及代码在GitHub上查重小技巧
  6. cousera-usable security
  7. 强驴分享北京最好玩儿的隐秘旅游地
  8. 动手学深度学习 - 11.1. 数学符号 (notation)
  9. 2021-08-17:资产波动之贝塔系数的比喻
  10. 关联规则挖掘(Apriori算法)