神经网络结构搜索Neural Architecture Search

感谢博主神经网络结构搜索 (3/3): 可微方法 Differentiable Neural Architecture
NAS

  • 参数和超参数
    超参数:1)神经网络结构;2)优化算法(SGD或adam)
    神经网络结构搜索——集中在结构超参数
    神经网络结构搜索Neural Architecture Search_第1张图片

  • 神经网络结构搜索 定义:寻找最优的神经网络结构,使得验证集准确率最大化,同时考虑计算量和内存开销
    准确率最大化(resnet > vgg);考虑计算量和内存开销(mobilenet> resnet)
    Seacher Space:手动设置的一组候选的超参数(四种卷积核数量,三种卷积核大小,两种stride大小)
    搜索空间:一个包含所有可能的网络结构的集合(人为指定)
    搜索空间大小:(卷积核种类 x 卷积核大小种类 x stride种类)^(卷积层数)

  • NAS难点
    1)每次搜索代价大(一组超参需要训练一个网络)
    2)搜索空间太大

  1. 随机搜索(不容易找到好的结构,可以作为baseline做对照——如果在测试集上,有更高的准确率,则比随机搜索更好)
    流程:
    均匀随机选择一组超参数–> 训练以学习模型自身参数(算法收敛)–> val验证模型准确率
    重复以上过程,看哪组准确率最高(交叉验证——调超参数的最标准方法)

  2. 循环神经网络寻找神经网络结构并用强化学习训练RNN(2017,过时了,只需要思想)

  3. 可微结构搜索(DNAS/Darts, 2019)
    Darts定义的目标函数,是神经网络结构参数的可微函数,可以对目标函数关于超参数求梯度,以更新超参数(更快,更好)
    流程:
    自定义多种block(每种block内部的结构各不相同)作为候选方案;自定义层数(多少个block串联)–> Super-net,可选方案的并联网络–>训练Super-net,寻找一条输入到输出的路径(最终的神经网络结构)
    神经网络结构搜索Neural Architecture Search_第2张图片
    α为神经网络结构的超参数,w为神经网络参数
    神经网络结构搜索Neural Architecture Search_第3张图片
    最终保留一条路径,最小化CEloss(最大化训练准确率)
    神经网络结构搜索Neural Architecture Search_第4张图片
    神经网络结构搜索Neural Architecture Search_第5张图片
    神经网络结构搜索Neural Architecture Search_第6张图片
    α说明了在Super-net中哪个路径最重要,如果超网看作是一张图,则神经网络结构搜索就是选择图中的一条路径

损失优化:除了最大化准确率,考虑计算量,时间延迟(移动设备端)
措施:在神经网络结构搜索时考虑延迟,使得找到的神经网络结构有利于减小预测延迟(计算量)
实施:需要知道每种block的延迟具体有多大(候选模块重复一百次计算的平均时间)
神经网络结构搜索Neural Architecture Search_第7张图片
神经网络结构搜索Neural Architecture Search_第8张图片
将延迟放入优化函数中
神经网络结构搜索Neural Architecture Search_第9张图片
入决定牺牲多少准确率来换取更快的计算(入小,注重精度)

  • darts
    神经网络结构搜索Neural Architecture Search_第10张图片
    神经网络结构搜索Neural Architecture Search_第11张图片
    神经网络结构搜索Neural Architecture Search_第12张图片
    神经网络结构搜索Neural Architecture Search_第13张图片

神经网络结构搜索Neural Architecture Search_第14张图片

你可能感兴趣的:(NAS,神经网络,深度学习)