寸先生的AI道路 2018-03-29
开源地址(TensorFlow):https://www.tensorflow.org/api_docs/python/tf/contrib/opt
深度学习模型已在谷歌的众多产品中部署,如搜索、翻译和图片。优化方法的选择在深度学习模型的训练中发挥着重要作用。例如,尽管随机梯度下降在许多情况下都能良好运转,但更加高级的优化器速度会更快,尤其是在深度非常大的网络的训练中。然而,由于优化问题的非凸性,开发新的神经网络优化器颇具挑战。Google Brain 团队希望用类似于 AutoML 发现新的有竞争力的神经网络架构的方法,探索是否可能自动发现新的优化器。
在《Neural Optimizer Search with Reinforcement Learning》中,谷歌提出了一种发现优化方法的方法,其优化重点是深度学习架构。谷歌使用这种方法发现了两个新的优化器——PowerSign 和 AddSign,它们在各种不同的任务和架构中颇具竞争力,包括 ImageNet 分类器和谷歌的神经机器翻译系统。为了帮助其他人从这项工作中受益,谷歌已在 Tensorflow 将该优化器开源。
神经优化器搜索(Neural Optimizer Search)利用循环神经网络控制器,该控制器可以访问与优化相关的简单原语列表。这些原语包括梯度或梯度的运行平均值,并具有 1010 个以上可能组合的搜索空间。然后,控制器为该搜索空间中的候选优化器或更新规则生成计算图。
该论文利用候选更新规则 ( U ) 在 CIFAR10 上对一个子卷积神经网络执行几个 epoch 的训练,最后将验证准确率 ( R ) 作为奖励反馈给控制器。通过强化学习训练控制器,以最大化采样更新规则的验证准确率。该过程如下图所示:
神经优化器搜索的示意图,使用迭代过程来发现新的优化器。
有趣的是,我们发现的优化器是可解释的。例如,在 PowerSign 优化器中,我们将每一次更新与梯度信号和梯度的运行平均值进行对比,根据这两个值是否一致来调整步长大小。如果是,则当前的更新方向更加可靠,从而步长可以增大。谷歌还发现了一种简单的学习率衰减方案即线性余弦衰减(linear cosine decay),它可以带来更快的收敛。
线性余弦衰减、步长衰减和余弦衰减的学习率衰减函数曲线对比图。
神经优化器搜索发现了在小规模卷积网络上可超越常用优化器的多种优化器。部分优化器可以很好地迁移到其它的任务上,谷歌发现 PowerSign 和 AddSign 将最先进的 ImageNet 移动尺寸模型的 top-1 和 top-5 精度提高了 0.4 %。它们在谷歌的神经机器翻译系统中也能良好运行,在英德翻译任务中的 BLEU 值提高了 0.7。
神经优化器搜索不仅能提高机器学习模型的性能,还可能带来新的可解释优化器方程和更多发现。