原论文是:One-Shot Neural Architecture Search via Novelty Driven Sampling(IJCAI 2020) 作者来自北理工,悉尼科技大学
本文探讨的就是权值共享NAS的Optimization Gap的问题并给出一种减缓的方案。权重共享NAS中的一个重要假设是,从超级网络继承权重的验证精度在重新训练后接近测试精度,或者至少具有很高的预测性。但是,由于supernet中的子网络之间的权重耦合,这一点通常很难实现。Single Path One-Shot方法给出了一种解决方案,就是分开训练supernet,每次只采样一条路径。
这个工作依然采用了基于权值共享的单路径模型,在每个步骤中,所有候选结构都共享权值,并且只对单路径权值进行优化。作者将新颖性搜索引入到NAS中,通过新颖性搜索来训练超级网络。
- 本文的contributions可以概括为:Single-Path的训练方法(Novelty Driven sampling sub-model) + random search or Evolutionary Algorithms的搜索策略。
- 对比Single Path One-Shot NAS的contributions可以概括为:Single-Path的训练方法(Uniform sampling sub-model) + random search or Evolutionary Algorithms的搜索策略。
唯一不同的地方是在train supernet的环节,Single Path One-Shot NAS是随机地采样一条路径之后训练,而这个工作是一开始的几步随机地采样一条路径之后训练,之后随机地采样一条路径之后,更新这条路径的novelty架构参数,用这个更新之后的novelty架构参数离散化出一条路径作为采样的路径进行训练。
具体的算法是:
质疑:
上述算法从大致思路上讲可以,但是细节处有许多漏洞,要彻底明白算法的思想,就要搞清楚以下2个问题:
- novelty架构参数是什么?
- novelty架构参数怎么更新?目标函数是什么?
作者在文中给出的描述并不详细。
作者在文中对于一个子结构
意思是这个子结构的k个最近邻结构到它的欧氏距离的平均值为这个子结构的novelty。
欧氏距离的平均值越大,代表这个子结构的novelty越大。
- 可是k个最近邻结构是怎么得到的?是按照欧氏距离得到的吗?
- 欧氏距离指的是
和的距离。那么,的定义是什么?原文中找不到任何信息。
- 原文中说:"The novelty search policy is defined as
- 以上问题作者给出了代码,但是代码整体结构copy from DARTS,没有找到关于以上问题的信息。
- 代码的Readme里面有关于训练的方法:
可是代码里面没有ENNAS.py文件。。。
https://github.com/MiaoZhang0525/ENNAS_MASTERgithub.com代码里面有一个.7z的文件:
或许ENNAS.py就在这里面???
可是解压需要密码。。。。。。
要更新novelty架构参数,作者想让这个子结构
目标函数,从公式上看,应该是k个novelty的期望值。
现在要对novelty架构参数
最后一步用Gradient Ascend更新架构参数:
再用argmax得到最终采样的结构,代表这个结构更新过了,更加novel了。
可是,Single Path One-Shot NAS里面的随机采样不是也可以得到novel的结构?
以上是我的一些疑问,只代表个人的观点。本人才疏学浅,一定会有理解不到的地方。或许许多疑问是我没有理解作者的意图。故若有任何疏漏,查证后我会第一时间更改,并请见谅。