高效的神经架构搜索:Efficient Neural Architecture Search via Parameter Sharing(笔记)—2018

通过参数共享实现高效的神经架构搜索

Efficient Neural Architecture Search via Parameter Sharing—2018

摘要

  1. 在ENAS中,控制器controller通过在大型计算图中搜索最佳子图来发现神经网络架构。
  2. 使用策略梯度policy gradient训练控制器,在验证集上,选择最大化预期奖励 的子图。
  3. 训练所选子图的模型,最小化规范的交叉熵损失。
  4. 在子模型间共享权重,使ENAS效果显著提升(比标准的神经网络体系结构搜索standard Neural Architecture Search便宜1000倍)

引言

  1. 循环训练RNN控制器,首先采样备选结构,如,子模型;随后训练至收敛,计算其性能;计算结果作为指导信号,多次迭代优化性能。
  2. 缺点:成本大,时间长。(用450个GPU来训练,找到一个优秀的架构也需要训练3到4天。也就是说,对于除了Google之外的普通贫民用户们,这种方法还是门槛太高、效率太低。)
  3. NAS计算瓶颈:训练每一个子模型至其收敛,只计算其准确性同时丢弃全部训练权重
  4. 主要贡献:强制子模型权重共享,避免每次从头训练模型。
  5. 方法思想基于迁移学习和多任务学习:特定任务模型参数可用于其他任务模型,几乎不需改进参数。

方法

  1. ENAS的核心思想是观察到NAS最终遍历的所有图都可以看作是更大图的子图。换句话说,我们可以使用一个有向无环图(DAG)来表示NAS的搜索空间。

  2. 设计递归单元
    (1)利用N个节点的有向无环图(DAG),其中节点表示局部计算,边界表示节点间的信息流。
    (2)ENAS’s controller is an RNN。决定:1)哪一条边被激活;2)每个节点的哪个计算被执行。
    (3)文章中的搜索空间允许ENAS设计,拓扑结构和RNN单元的运算。
    (4)搜索空间:如果有N个节点,且允许使用4个激活函数(tanh, ReLU, identity, and sigmoid),那么,搜索空间将有4N × N!个配置。N!表示N个节点的排列组合,4N表示每个节点有4种激活函数的选择。高效的神经架构搜索:Efficient Neural Architecture Search via Parameter Sharing(笔记)—2018_第1张图片

  3. 训练ENAS并派生体系结构
    (1)ENAS有2个可训练参数:controller参数θ和子模型共享参数ω。训练有两个交叉过程:1)训练共享参数ω,将训练数据集分成多个64/128的minibatch计算,梯度∇ω应用BP算法;2)训练θ,通常固定训练步骤2000。
    (2)在训练数据集的minibatch上,应用随机梯度下降SGD法最小化损失函数(标准交叉熵损失), 在这里插入图片描述等号左边为梯度的无偏估计,计算为蒙特卡洛估计。
    (3)利用adam优化器,最大化期望奖励Em∼π(m;θ) [R(m,ω)]. 奖励R(m,ω)在验证集上进行计算。
    (4)获得网络结构:首先从训练好的policy π(m,θ)中采样多个模型,在验证集的单个minibatch上计算其奖励,然后取得分最高的模型从头再训练,得到验证集上最高得分模型。

  4. 决定连接哪个点,用哪个激活方程,正是这些decision确定了卷积模型的每一层网络结构,连接点的选择使得模型存在跳跃连接。

  5. A reduction cell可理解为来自搜索空间:1)从搜索空间采样的计算图;2)以2的步长应用所有操作(这样就缩小了输入空间的2倍)。

你可能感兴趣的:(高效的神经架构搜索:Efficient Neural Architecture Search via Parameter Sharing(笔记)—2018)