【神经网络搜索】Single Path One Shot

【GiantPandaCV导读】Single Path One Shot(SPOS)是旷视和清华、港科大联合的工作。与之前的工作不同,SPOS可以直接在大型数据集ImageNet上搜索,并且文章还提出了一种缓和权重共享的NAS的解耦策略,让模型能有更好的排序一致性。

代码:https://github.com/megvii-model/SinglePathOneShot

论文:https://arxiv.org/abs/1904.00420

摘要

之前的One-Shot NAS训练难度很大,并且在大型数据集比如ImageNet上非常低效。SPOS就是来解决训练过程中的挑战,其核心思想构建一个简化的超网,每个结构都是单路径的,每次训练是一个单路径的子网络,通过这种方式可以缓解权重耦合的问题。训练过程中使用的是均匀路径采样,这样所有的子网的权重才能被充分且公平地得到训练。

SPOS训练方式简单并且搜索非常迅速,支持多重搜索空间比如block-wise, channel-wise,混合精度量化和资源受限情况下的搜索等,并且在ImageNet上实现了SOTA。

简介

目前的神经网络搜索方法可以分成以下几种:

  • 使用嵌套优化的方式处理权重优化和网络架构优化的问题。
  • 使用权重共享策略来降低计算量,加速搜索过程。
  • 使用基于梯度的方法,将离散空间松弛到连续空间。
  • 使用嵌套联合优化方法。

在基于梯度的方法中,存在一些问题:

  • 超网中的权重是紧密耦合的,尚不清楚子网的权重继承为何是有效的。
  • 使用同时优化的方式也给网络架构参数和超网参数引入了耦合。

基于梯度的方法在优化过程中可能会引入bias,从而误导网络的搜索,出现马太效应,算子被训练的次数越多,权重会越大,强者越强。

本文主要贡献:

  • 对现有的NAS算法进行详尽的分析,并指出了现有的使用嵌套优化方法存在的缺点。
  • 提出了均匀采样的single path one-shot方法,可以克服现有one-shot方法的缺点。其简单的形式允许更大的搜索空间,包括通道搜索、比特宽度搜索等。采用进化算法来进行搜索,可以满足低延迟等约束。

回顾以往的NAS方法

早期的NAS方法采用嵌套优化的方式来实现,第一步优化是优化子网络的权重,优化目标是降低在训练集上的loss;第二步优化是网络架构优化,所有子网中验证集上准确率最高的那个网络。这种方式最大的缺点是训练代价太大,很多工作只能在Cifar10这样的小数据集或者小的搜索空间中完成。

近来的NAS方法通常会采用权重共享的训练策略,在这种策略中,所有子网会继承超网的权重,这样就可以不从头开始训练,降低搜索代价。这样的策略可以在ImageNet这类大型数据集上进行快速搜索。

大多数权重共享方法将离散的搜索空间转化为连续的搜索空间,这样就可以使用梯度优化的方式来建模神经网络搜索问题。权重和架构参数是同时优化的,或者使用两级优化方法来处理。

基于权重共享方法的NAS有两个缺点:

  • 超网中各个子网耦合度高,尚不清楚为何从超网继承权重的方式是有效的。
  • 同时优化网络权重参数W和架构参数θ会不可避免对架构引入某些偏好,这样在优化过程中会偏向于训练某些权重,造成不公平训练。

Single Path One-Shot

架构参数和权重的耦合是基于权重共享的NAS方法不得不面对的问题,这是由于同时对两者进行优化导致的。为了缓解耦合问题,很自然的想法就是将超网的训练和网络搜索解耦合。

one-shot方法分为两步,具体描述如下:

第一步,超网优化方式为:

W A = argmin ⁡ W L train  ( N ( A , W ) ) . W_{\mathcal{A}}=\underset{W}{\operatorname{argmin}} \mathcal{L}_{\text {train }}(\mathcal{N}(\mathcal{A}, W)) . WA

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*pprp*

如果有帮助可以打赏一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值