NAS 学习笔记(十四)- GDBT-NAS

  |     |   本文总阅读量:

版权声明:本文原创,转载请留意文尾,如有侵权请留言, 谢谢

引言

  本文分享一篇MSRA 2020 年关于 NAS 的论文 [1],文中提出了 GDBT-NAS 算法,它主要用 GBDT 作为 NAS 算法中预测 candidate architecture 的 predictor,同时它还将 GBDT 作为 search space 的 pruner ,思想还是比较简单的,本文对它做简单记录。

Motivation

   这篇文章要优化的问题其实很容易理解,就是在 NAS 搜索过程中,我们需要评估一些 candidate architecuture 的性能,这通常是一个开销非常大的过程。因为 train from scratch 的开销很大,即使在 weight sharing 的基础上 fine tuning 也有比较大的开销,所以有些研究者采取一些简单的 predcitor 去直接预测 candidate architecuture 的性能,然后根据预测的结果挑选出 top-k 的 architecuture 去用真实数据去训练,生成 architecture-accuracy pairs 的样本去继续训练 predictor。
   这是一个很好的思路,之前的研究者使用过 MLP,LSTM 和 GCN 等等来作为 predictor,而本文使用了 GBDT。为什么使用 GBDT 呢,因为 GBDT 更适合于 tabular 的数据,而 architecuture 往往可用通过 discrete 的方式来表示,因为它只可以包含有限的 operation,文中作者就将 architecuture 用 one-hot 的形式表示了,还是很简单的。
   除了 predict 外,作者还将 GBDT 作为 search space 的 pruner 来减小 search space 的大小并且能搜索出更好的 architecture,作者代码中使用的 GBDT 是 LightGBM。

GBDT-NAS

  作者提出了 GBDT-NAS,它在每次 iteration 时执行下面三个步骤:

  1. Train predictor:采样 \(N\) 个 architecture-accuracy pairs 去训练 GBDT predictor。
  2. Predict:predict 随机采样的 \(M\) 个 architecture
  3. Validation:挑选有着 top-k accuracy 的 architecture,生成 architecture-accuracy pairs 加入下次 iteration 训练 predictor 的训练集里。

GBDT-NAS-3S

  用 GBDT 来给 search space 剪枝是很直观的,因为 GBDT 本来就有计算 feature importance 的功能,而 search space 用 one-hot 表示后,每个 op 是否使用其实就可以看作一个特征,通常 feature importance 有两种常见的计算方法:

  • weight:权重,某特征在整个树群节点中出现的次数,出现越多,价值就越高
  • gain:某特征在整个树群作为分裂节点的信息增益之和再除以某特征出现的频次

  然而作者没有简单的使用这两种,而是使用了 SHapley Additive exPlanation (SHAP),可以衡量 GBDT 预测中某个 feature 对结果(在我们的场景下就是 architecture accuracy)的有正贡献或负贡献,然后选取很低 SHAP 值的 feature 进行剪枝。例如 layer_1_is_conv1x1=1 产生了很大的负贡献(例如 -0.2),我们就可以在 search space 里将 layer_1_is_conv1x1=0,这样便达到了剪枝的作用。

SHAP是用 Python 开发的一个“模型解释”包,可以解释任何机器学习模型的输出。在合作博弈论的启发下 SHAP 构建一个加性的解释模型,所有的特征都视为“贡献者”。对于每个预测样本,模型都产生一个预测值,SHAP 值就是该样本中每个特征所分配到的数值。相关介绍可以看这里源码

作者:孙佳伟 链接:https://zhuanlan.zhihu.com/p/83412330 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  我们上面说的是 first-order pruning,它的算法伪代码如下:

  first-order pruning 它每次只针对一个 feature 计算 SHAP 值判断是否剪枝,然而有时两个 op 间可能存在关联,计算两个 feature 关联的 SHAP 值可能更具有说服力,所以作者 second-order pruning,它计算任意两个 feature 之间的 interaction SHAP 值,算法伪代码如下:

  作者将带剪枝的算法命名为 GBDT-NAS-3S(GBDT-NAS enhanced with search space search,算法伪代码如下:

Experiments

  主要展示两个实验,第一个和同类方法比较 predictor 性能,用的是 NASBench-101 这个数据集,采用 pairwise accuracy \(\frac{\sum_{x_{1} \in X, x_{2} \in X} \mathbb{1}_{f\left(x_{1}\right) \geq f\left(x_{2}\right)} \mathbb{1}_{y_{1} \geq y_{2}}}{|X|(|X|-1) / 2}\)

  第二个是比较 NAS 性能, 主要在ImageNet比较, 搜出来的性能不错但是参数量不少

Conclusion

  之前的工作使用基于 NN 的预测器,但它无法很好地利用 architecture 类似 tabular 数据格式。因此作者提出利用 GBDT 作为 NAS 的预测指标,并且可以通过 GBDT 根据 SHAP 值来对 search space 进行剪枝。

Refer

  • [1] R. Luo, X. Tan, R. Wang, T. Qin, E. Chen, and T.-Y. Liu, “Neural Architecture Search with GBDT,” 2020.

坚持原创技术分享,您的支持将鼓励我继续创作,π(3.14)元就够啦!



文章目录
  1. 1. 引言
  2. 2. Motivation
  3. 3. GBDT-NAS
  4. 4. GBDT-NAS-3S
  5. 5. Experiments
  6. 6. Conclusion
  7. 7. Refer
您是第 位小伙伴 | 本站总访问量 | 已经写了 680.3k 字啦

载入天数...载入时分秒...