回放地址
主要内容
概述
鬲融教授(Duke University)结合当前Learning-to-learn方法面临的挑战,在quadratic objective分析了一些optimizer(GD和SGD),通过分析,得出了1,小心地选择meta-objective也许能缓解explosion/vanishing 问题;处理反向传播问题要小心; 2,当只有很少的样本和很多噪音时,需要在单独的验证集上定义meta-objective。
主要内容
当我们训练一个神经网络的时候,通常会有很多tricks。比如训练SGD,就会遇到怎么设置Step size,momentum,weight decay,batch normalization 等,所以往往不是听上去那么简单。也许你想自动地训练这些过程,或者你还想进一步自动地发现新的tricks。人们已经考虑到了这个问题,并且提出了Learning to learn。
关于Learning to Learn 方法:
- idea是使用meta-learning 方法来学习一个新的optimizer;
- Goal是对一些任务优化目标函数;
- 比较高层次(high-level)的idea不是使用定义好的SGD或者adam,事实上是把优化算法抽象成一个箱子,我们通过改变参数θ,这个箱子接收一些信息,比如当前的点w,目标函数在当前点的值 f ( w ) f(w) f(w)以及目标函数梯度在当前点的值 ∇ f ( w ) \nabla{f(w)} ∇f(w)等等,然后输出一个当前的点应该移动的方向。所以一旦你有了这样的一个带有参数θ的abstract optimizer,你可以为这些任务来优化参数θ。
- Optimizer可以很简单,但是也可以是一个神经网络。
所以你需要怎样来训练你的optimizer? 步骤如下:
- 将optimizer展开为t步
- 在trajectory上定义一个meta-objective (具体定义方法我们会在后面介绍)
- 在参数θ上做(meta-)gradient descent
- 某种程度上和recurrent neural network/policy gradient很像,因为你需要分享θ
你也许希望上手就能解决问题,但是事情并没有那么简单。在目前的研究中存在着一些问题(见下图)。
本次的工作:为简单的quadratic objective分析简单的optimizer(GD和SGD),learning-rate是唯一我们要tune的参数。实际上,即使是这些简单问题,也需要花费努力去解决。
我们的结果。
-
对于Quadratic Objective的Gradient explosion/vanishing
- 即使是非常naive的meta-objective在所有的step size中也会有meta-gradient explosion/vanishing 。
- 我们可以设计一个更好的meta-objective使得它的meta-gradient保持多项式有界的。
- 即使是对于新的objective,使用反向传播来计算meta-gradient也会导致一些数值问题。
-
最小二乘训练优化器的一般化
- 在样本数量小时,需要在单独的验证集(separate validation set)上定义meta-objective。
- 当样本数量大时,可以仅仅在训练集(training set)上定义meta-objective。
所以首先来看看我们的第一个结果(对于Quadratic Objective的Gradient explosion/vanishing),我们定义了一个简单的Objective 函数,固定步长的梯度下降,同时定义了一个Naive meta-object。
通过一些简单的计算,我们能够证明对于几乎所有的值η,meta-gradient
F
′
(
η
)
F'(η)
F′(η)在T上要么非常大,要么非常小。
所以怎么来解决这个问题?
Idea:meta-gradeint很大是因为objective在T上很大或者很小。
所以我们可以对原来的objective取对数。我们可以证明对于新的objective,它的meta-gradient
G
′
(
η
)
G'(η)
G′(η)在相关参数中总是多项式的,此外拥有meta-step大小为
1
/
k
1/\sqrt{k}
1/k的meta-gradient收敛。
然而,如果使用backpropagtion计算
G
′
(
η
)
G'(η)
G′(η),会出现项极大或极小的情况。
我们也进行的了实证验证。
现在我们来讨论我们第二个result(最小二乘训练优化器的一般化)。
首先我们来设置一下我们的问题,我们要解决的是最小二乘问题,目标是要恢复
w
∗
w_{*}
w∗,使用图中的Ojbective和Algorithm,所以我们怎样定义一个meta-objective?
有两种idea来定义meta-objective。
- Train-by-train(旧)
- Train-by-validation(新)
我们可以证明,当σ是一个足够大的常数时,并且样本数量n是维度d的常数分数,那么train-by-validation会更好一些;当样本数量n远大于维度d时,两种方案都能work。
对于神经网络,通常是第一种情况发生。
我们这里给出一些high-level proof idea。
进行实证验证。
最后进行总结。
- 小心地选择meta-objective也许能缓解explosion/vanishing 问题;处理反向传播问题要小心。
- 当只有很少的样本和很多噪音时,需要在单独的验证集上定义meta-objective
还有一些开放的问题
- 我们可以缓解neural network optimizer的gradient explosion/vanishing 问题和数值问题吗?
- 我们可以在可证明地在更复杂的objectives上的更复杂的optimizers上调优参数吗?