『AI科技大本营』低耗时、高精度,微软提基于半监督学习的神经网络结构搜索算法( 二 )


为了利用大量的无标签的网络结构 , 先在少量的有标签的网络结构上进行学习 , 然后对无标签的网络结构进行标注(预测它们的准确率) , 然后把它们加入到原始训练数据中进行学习 。 具体而言 , 我们构建了一个性能预测器 f_p 来预测一个网络结构的准确率,它通过最小化 MSE 损失来训练 , 如公式1所示 , 其中 L_p 是损失:

『AI科技大本营』低耗时、高精度,微软提基于半监督学习的神经网络结构搜索算法
本文插图
公式1
我们在有限的监督数据集上训练 f_p , 待其收敛后 , 用其对无标签的神经网络结构 x' 进行预测 , 得到准确率 y'=f_p (x') 。 我们将预测得到的数据和原始的监督数据混合在一起进一步训练性能预测器 f_p 以达到更高的精度 。
训练好的性能预测器 f_p 可以与多种 NAS 算法结合 , 为其预测网络结构的准确率以供其学习 。 比如对于基于强化学习的算法(如 NASNet [3] , ENAS [6] 等)和基于进化算法的算法(如 AmoebaNet [4] , Single Path One-Shot NAS [7] 等) , f_p 可以用于为生成的候选网络结构预测准确率 。 对于基于梯度的算法(如 DARTS [5] 和NAO [1]) , 可以直接用 f_p 预测的网络结构的准确率对网络结构求导 , 更新网络结构 。
本文中 , 我们基于之前的工作 NAO(Neural Architecture Optimization)[1] , 实现了 SemiNAS 搜索算法 。 NAO 主要包含一个编码器-性能预测器-解码器框架 , 编码器将离散的神经网络结构映射到连续空间中的向量表示 , 性能预测器用于预测其准确率 , 解码器负责将连续向量表示解码成离散的神经网络结构表示 。 在训练时 , 三者进行联合训练 , 性能预测器通过回归任务进行训练 , 解码器通过重建任务进行训练 。 在生成新网络结构时 , 我们输入一个网络结构 , 计算性能预测器对输入网络结构的梯度 , 通过梯度上升来获得一个更好的神经网络结构 。 更多关于 NAO 的介绍可参见原始论文 。
结合本文提出的学习方法 , 在 SemiNAS 中 , 我们首先用少量有标签的数据训练整体框架 , 然后从搜索空间中采样获得大量无标签的神经网络结构 , 利用训练好的框架对这些网络结构预测准确率 。 然后使用原始的有标签的数据和自标注好的无标签数据一起充分训练整个框架 。 之后按照 NAO 中的方法进行优化 , 生成更好的网络结构 。
实验结果
我们在多个任务和数据集上验证了 SemiNAS 方法 , 包括图像分类(NASBench-101 [2]、ImageNet)和文本到语音合成。 值得一提的是 , NAS 首次被应用于语音合成任务 , 并取得了不错的结果 。
NASBench-101
首先 , 我们在 NASBench-101 [2] 数据集上进行了实验 。 NASBench-101 是一个开源的用于验证 NAS 算法效果的数据集 , 包含了 423k 个不同的网络结构和其在 CIFAR-10 分类任务上的准确率 , 即提供了一个开箱即用的评估器 , 方便研究者快速验证其搜索算法本身 , 并和其它工作进行公平对比(消除了不同训练技巧、随机种子及数据集本身带来的差异) 。 实验结果如表1所示 。
『AI科技大本营』低耗时、高精度,微软提基于半监督学习的神经网络结构搜索算法
本文插图
表1:不同方法在 NASBench-101 上的表现
在 NASBench-101 上 , 随机搜索方法(Random Search)、基于进化算法的方法(Regularized Evolution, RE)以及 NAO 在采样了2000个网络结构后分别取得了93.66% , 93.97%和93.87%的平均测试准确率 。 而 SemiNAS 在仅采样了300个网络结构后就取得了93.98%的平均测试准确率 , 在取得和 RE 和 NAO 一样性能的同时 , 大大减少了所需资源 。 进一步地 , 当采样几乎差不多的网络结构(2100个)时 , SemiNAS 取得94.09%的平均测试准确率 , 超过了其他的搜索方法 。


推荐阅读