• 【FairNAS】2019-arxiv-FairNAS Rethinking Evaluation Fairness of Weight Sharing Neural Architecture Search-论文阅读


    FairNAS

    2019-arxiv-FairNAS Rethinking Evaluation Fairness of Weight Sharing Neural Architecture Search

    来源:ChenBong 博客园


    Introduction

    NAS总体上就是跑n个模型,找到最好的模型。

    一般可以分为2个stage:

    • 搜索阶段,(生成器)生成不同的模型
    • 评估阶段,(评估器)评估这些模型的性能

    NAS方法分类

    基于强化学习的方法

    • 使用controller(LSTM/RNN)生成候选模型描述,训练完将性能作为reward,更新controller,使 controller 可以生成越来越好的模型。
    • 可以看出,基于RL的方法是将 搜索阶段(生成模型) 和 评估阶段(评估模型的性能)轮流进行,目的是使得生成器(controller)的生成的模型性能越来越好。
    • 缺点:由于要完全训练很多候选模型,效率极低。

    基于梯度下降的方法(DARTS-like)

    • 将生成 和 评估 整合到一个阶段,在一个网络中给每个算子op都附加一个可微分的强度系数(α),初始的时候每个算子op的强度都是平等的,在训练过程中对网络性能提升更大的算子会被加强,即在训练中自动调整网络中算子op的强度
    • 优点:最大的贡献在于 用连续的空间来表示离散的网络结构,使得离散的结构变得连续可微分(例如)
    • 缺点:
      1. 计算开销问题:每次前向反向都要经过所有的算子,计算开销很大,因此无法直接在大数据集上进行搜索,只能使用代理(在小数据集上搜索再迁移到大数据集上)
      2. 公平性问题 - 马太效应:一个优秀的算子只是因为训练过程中分配到的资源多,而不是因为本身优秀。一开始每个算子强度相同,随机选择一些算子开始优化,这些算子在前期被优化得多,导致其强度(α)越来越大,而强度大又导致更新它对整个网络的性能提升更明显。有限的训练资源,给谁越多,谁就越强。即初始值敏感强者越强,弱者越弱,而陷入局部最优。
      3. 公平性问题 - “前期英雄”:有些算子可能是“前期英雄”,而有些算子是“后期英雄”,而DARTS倾向于去找那些“前期英雄”的算子,而陷入局部最优。
      4. 搜索阶段和推理阶段的差异问题:即搜索时使用全部算子的加权,而最后只保留最高的或top-k
      5. 理论基础问题:DARTS认为在训练过程中,根据梯度可以自动判断算子的好坏,但这是一种偏直觉的排序策略,没有数学的理论基础。

    one-shot 的基于参数共享的方法

    • Pipeline:

      • Stage 1:训练一个超网(评估器);
      • Stage 2: (生成)使用一些策略(如Random,EA)从超网中采样候选网络
      • Stage 3:评估)候选网络从超网中继承权重进行推理,推理性能即作为该候选网络的性能估计。即将超网作为不同候选网络的性能评估器
      • Stage 4:选择评估阶段Stage 3中的 top-k 进行 train from scratch
    • 优点:one-shot 可以概括为 “一次训练,多次推理Train Only Once to Evaluate All Submodels,即只要训练一个超网,就可以评估多个子网

    • 缺点:

      1. 计算开销问题:超网要包含足够的搜索空间,导致网络太大,计算开销大(改进:SPOS中每次选择single path进行训练,而不是每次训练整个网络)
      2. 相关性问题:或者叫一致性问题,即超网中子网性能(One-shot acc)和retrain后的性能(stand-along acc)相关性不强(而且往往比较低),即搜出来的优秀子网并不一定是最优秀的子网,甚至可能还比较差,而相关性正是 one-shot 方法的基础,如果没有这个基础假设,one-shot 这个方法就没有意义了。

      对于每次 uniform sample 一两条路径进行训练的one-shot(如SPOS等),还有以下问题:

      1. 公平性问题 - 马太效应: 对于某一个优秀的op,我们不知道它是真的天生优秀(适合位于网络的这个位置),还是被训练的次数多被优化的好,尽管是 uniform 采样,但是实际过程中肯定是会存在该问题的,FairNAS里的证明就说了这个事,即每个op都均等采样是基本不存在的。
      2. 公平性问题 - 顺序问题: ** 就算假设某一层有4个op,然后4次采样也很幸运,每个都采样了一遍,但是因为每采样一次会更新一次超网,所以后来的采样一定会受到之前更新的影响,即所谓采样顺序不同**也会带来公平性的问题。(ABCD不等于DBCA)。

    Kendall Tau(τ) (Kendall相关系数)

    one-shot acc 高的模型,stand-alone acc 不一定是最高的,甚至可能表现很差。 因此一种用的比较多的就是Kendall Tau (τ) metric,它会评估两个阶段模型性能的相关性,相关性越高则表示算法越有效。τ 的范围在-1到1之间:

    • τ= 1:one-shot acc 的排序 和 stand-alone acc 的排序完全一致
    • τ= -1:one-shot acc 的排序 和 stand-alone acc 的排序完全反序
    • τ = 0:one-shot acc 的排序 和 stand-alone acc 的排序完全没有关系

    可以看出,我们希望 τ 的值越大越好。

    e.g.

    • A method based on time-consuming incomplete training only reaches an average τ of 0.474. 【2019-ICCV-Multinomial Distribution Learning for Effective Neural Architecture Search, X Zheng】
    • SPOS(Single Paht One-Shot),τ = 0.6153
    • FairNAS(ours), τ = 0.9487

    FairNAS 介绍

    FairNAS 可以总结为:

    不放回的子网采样,多子网梯度统一更新。


    Motivation

    作者从one-shot方法中存在的 两阶段性能(one-shot acc VS stand-alone acc) **存在很大的gap (30%-90% vs. 92%-94.5%) **,还有 两阶段性能 相关性不强 的现象出发,发现当前NAS方法(包括DARTS和one-shot)中普遍存在的 unfair training 导致的 unfair evaluation 的问题,提出了一种称为 Strict Fairness(FairNAS) 的公平训练方法,使得两阶段性能强正相关,达到了SOTA的 Kendall Tau(τ) of 0.9487


    Contribution

    • 提出了 Strict Fairness(FairNAS) 的公平训练方法使得两阶段性能呈现强烈的正相关,τ = 0.9487
    • 证明了 在 uniform sample 下,采样次数趋于无穷时,每个算子op被采样的次数 Y 不可能都相同
    • Single-Path supernet training 有效性的原因:同一层的不同choice block学到了相似的特征
    • 实验说明 在 fairness condition 下对超网中的子网进行评估时,无需重新计算BN层(与 EagleEye 的结论相反)

    Method

    Formally, we discuss fairness in a common supernet that consists of L layers, each with several choice blocks.

    Without loss of generality, we suppose each layer has an equal number of choices, say m.

    The weights are updated for n times in total.

    Therefore, we can describe the training process as P(m, n, L).

    L = 19 layers, m = 6 ops(不同的层有相同的op数m)

    sample / update n​ times

    image-20200920161842149


    Define2. Expectation Fairness(EF约束)

    L = 19 layers, m = 6 ops(不同的层有相同的op数m)

    sample / update (n) times


    Define 2. Expectation Fairness (EF)

    a natural way is to guarantee all choices blocks have equal expectations after n steps

    Definition 2. Expectation Fairness.

    (Ω) be the sampling space containing m basic events ({l_1, l_2, ..., l_m}),

    Let (Y_{l_i}) be the number of times that outcome (l_i) is observed(updated) over n trails.

    Then the expectation fairness is that for (P(m, n, L), E(Y_{l_1}) = E(Y_{l_2}) =...= E(Y_{l_m}) holds, ∀l∈L)

    即 同一层的不同算子op要选中(更新)同样的次数


    An EF Example: Uniform Sampling(SPOS)

    (egin{aligned} Eleft(Y_{l_{i}} ight) &=n * p_{l_{i}}=n / m \ operatorname{Var}left(Y_{l_{i}} ight) &=n * p_{l_{i}}left(1-p_{l_{i}} ight)=frac{n(m-1)}{m^{2}} end{aligned} qquad (1))

    即所有的算子op被选中的次数Y的期望和方差都相同。

    但存在一个ordering issue:即子网的选择顺序会影响最后的结果,(M1,M2,M3)和(M1,M3,M2)不同


    Lemma 1.

    image-20200920172213073

    均匀采样的条件下,当训练次数n趋于无穷时,同一层的不同算子被选择的次数都相同的概率为0

    证明如下:

    image-20200920173212656

    image-20200920173227641


    Definition 3. Strict Fairness(SF约束)

    image-20200920172429967

    即当训练次数n是每层op数量m的整数倍时,同一层的m个算子op被采样(更新)的次数都相同。

    SF约束比EF约束更加严格,EF约束只要求每个op被选中的次数的期望相等,而SF约束要求次数严格相等。


    几种NAS方法的约束对比

    image-20200920172900513


    FairNAS

    Stage One: Train Supernet with Strict Fairness

    不放回的子网采样,多子网梯度统一更新。

    每个step包含m次采样,即采样m个相互独立的子网,即可采样完所有op,一个子网反向传播计算完子网中ops的梯度以后,不是马上更新,而是等到所有子网采样完以后再一起更新到 supernet 中(其实应该也可以每个子网自己更新,不放回的采样已经保证了不同子网是独立的,不会互相影响)。

    所以可以并行计算更新m个子网,加快计算速度。

    image-20200920161842149

    这样做可以满足:

    (egin{aligned} Eleft(Y_{l_{i}}^{prime} ight) &=n / m \ operatorname{Var}left(Y_{l_{i}}^{prime} ight) &=0 end{aligned} qquad (2))

    即同一层每个op采样次数Y的期望都相同,且方差为0(即次数Y完全相同)


    具体的 training superner 算法如下:

    image-20200920192552611


    Stage Two: Searching with Supernet as an Evaluator

    为了搜索满足多个目标(latency,FLOPs...)的子网,我们使用我们之前的工作中的搜索算法 MoreMNAS [7],使用 Proximal Policy Optimization 作为强化算法,不太了解这个方法,这里先不介绍。


    Ablation Study

    Model Ranking Capacity

    image-20200920183928680


    Why Does Single-Path Training Work?

    第1层6个 choice blocks 的 feature map 通道可视化

    && 这个可视化方法是什么?

    && 使用第1层进行可视化说服力不够,可能是因为低层学习的东西都类似,不知道后面的层是否依然有这样的特性?

    image-20200920184136996


    第1层不同的 block 之间余弦相似度很高:

    image-20200920185751316

    第1层 6个 choice blocks 对应通道的余弦相似度:

    image-20200920184157759

    第1层不同blcok的不同通道 feature map 的相似度block之间的相似度都说明,第1层的不同block(op)学到了类似的东西

    && 不同的block应该是不同的op,那是不是说明不同的op实际上是可以等价转换的?(即对inpu产生的作用相同/相近?比如3×3, 5×5卷积,使用各自特定的参数,可以实现相同/相近的效果?那是不是保留一种op就可以了?)

    && 图3右 中不同的block(不同的op)是如何计算余弦相似度的?


    Fairness Closes Supernet Accuracy gap

    FairNAS 提高了 one-shot acc,即减少了one-shot acc 和 stand-alone之间的gap

    image-20200920184912510

    Experiments

    Setup

    Search Space:

    • conv kernel size {3,5,7},expansion rate {3,6},m=6

    • based on MobileNetV2,L=19

    DataSet:ImageNet

    Train Supernet:

    • Epochs:150
    • Batch Size:256
    • Optimizer:SGD
    • Momentum:0.9
    • Learning Rate:initial 0.045,cosine
    • Weight Decay:L2 ((4×10^{-5}))
    • GPU:V100,10 GPU days

    Sub-model:/


    Architecture of FairNas-A,B,C

    image-20200920183327552


    ImageNet

    image-20200920183349455


    transfer to CIFAR10/100

    image-20200920183427908


    Conclusion


    Summary

    • 方法其实很简单,只是使用不放回的采样
    • 发现了公平采样对相关性的显著提高,这点很有意思
    • 同一层不同的blcok可以学习到相近的东西,但是文中只可视化了第一层,并不确定更深的层是否依然有该现象

    FairNAS存在的一些问题:

    • 采样m个子网就要把所有的op全部采样一遍,不能有遗漏,这就导致每层的op个数必须相同,无法推广到更复杂的搜索空间
    • 只是在每个step公平采样每个子网(每个step之内的训练是解耦/公平的),不同step之间的训练依然会相互影响(不同step之间的训练依然是耦合/不公平的)

    ToRead

    2019-ICCV-Multinomial Distribution Learning for Effective Neural Architecture Search


    Reference

    NAS 学习笔记(九)- FairNAS

    小米三部曲NAS

    深度解读:小米AI实验室AutoML团队最新成果FairNAS

    超越MnasNet、Proxyless:小米开源全新神经架构搜索算法FairNAS

    如何评价小米AutoML团队的NAS三部曲工作?

    NAS论文小结

    One-Shot 神经网络搜索(NAS)的searching阶段到底在做什么?

  • 相关阅读:
    在python中使用正则表达式(二)
    在python中使用正则表达式(一)
    利用cookies进行登录并封装请求方法
    fiddler学习笔记&&基本使用
    理解css相邻兄弟选择器
    selenium+Page Objects(第三话)
    selenium+Page Objects(第二话)
    selenium+Page Objects(第一话)
    python+selenium基础之XPATH轴定位(第二篇)
    关于类、方法、对象(实例):静态方法
  • 原文地址:https://www.cnblogs.com/chenbong/p/13702037.html
Copyright © 2020-2023  润新知