Learning to learn by gradient descent by gradient descent

Learning to learn by gradient descent by gradient descent

简介

昨天DeepMind开源了基于TensorFlow的深度学习库——Sonnet。DeepMind之前发布的learning to learn的代码实际上就是基于Sonnet实现的。

本文解决的是优化算法的学习问题。具体来说,机器学习中我们经常可以把优化目标表示成:

优化目标

标准的优化过程是更新如下过程:

经典的参数更新过程

这样的做法只考虑了一阶导数而不考虑二阶导数,显然会损失性能。典型的方法是通过Hessian matrix等方法来弥补。而现代的更多的方法则是针对具体类问题,比如深度学习领域经常使用的方法有:momentum、Rprop、Adagrad、RMSprop、ADAM。使用这些方法的一个最大问题是:在不同的问题上需要选择不同的优化方法。

本文试图寻找一个大一统的方案:采用RNN来学习参数更新过程,而不是手动去选择不同的优化方法。如下式:

本文的参数更新过程

这样问题变成如何去学习函数g。作者把该问题称为:Learning to learn。

Learning to learn

作者采用RNN来做Learning to learn,即学习每次迭代的参数更新。显然,采用RNN这种带记忆功能的网络来学习更符合这里的需求(克服传统方法只考虑一阶导数的缺点)。理想的优化目标为:

理想优化目标

即希望这样的参数更新更有利于f的下降。

对于RNN,假设选择记忆的长度为T,则优化目标为:

Learning to learn by gradient descent by gradient descent_第1张图片

其中m表示RNN,h表示其隐状态。本文的实验中,所有的权重w均取1。

考虑到如果同时学习所有参数,会导致RNN的参数量过大,所以采用了Coordinatewise的方法。可以认为是把参数划分成不同的等分,然后共享参数,但是不共享隐状态。如下图:

Learning to learn by gradient descent by gradient descent_第2张图片

实验

作者做了四个实验:

  • Quadratic functions
  • Training a small neural network on MNIST
  • Training a convolutional network on CIFAR-10
  • Neural Art

均证明了该方法比其他优化方法更好:收敛快且loss更低,泛华性能也很好。

例如,Neural Art实验,loss变化曲线:

Learning to learn by gradient descent by gradient descent_第3张图片

效果:

Learning to learn by gradient descent by gradient descent_第4张图片

结论

用Learning to learn的方法来作为优化算法,比其他手工选择的优化算法都要好!

你可能感兴趣的:(深度学习)