我们可以优化优化算法吗?

人工智能 神经网络 元学习
2021-11-13 09:06:44

这个问题的答案中,优化算法是否等同于神经网络?,作者表示,理论上,有一些递归神经网络可以实现给定的优化算法。

如果是这样,那么我们可以优化优化算法吗?

3个回答

首先,您需要考虑您要“优化”的这个“优化算法”的“参数”是什么。让我们以最简单的情况为例,即没有动量的 SGD。此优化器的更新规则是:

wt+1wtawtJ(wt)=wtagt

在哪里wt是迭代时的权重t,J是成本函数,gt=wtJ(wt)是成本函数 wrt 的梯度wta是学习率。

优化算法接受权重及其梯度作为其输入并返回更新。所以我们可以把上面的等式写成:

wt+1wtSGD(wt,gt)

对于所有优化算法(例如 Adam、RMSprop 等)也是如此。现在我们最初的问题是我们想要优化的优化器的参数是什么。在 SGD 的简单情况下,优化器的唯一参数是学习率

此时出现的问题是,我们可以在训练期间优化优化器的学习率吗?或者更实际地,我们可以计算这个导数吗?

J(wt)a

本文探讨了这个想法,他们创造了这种技术“超梯度下降”。我建议你看看。

我们通常会针对某些东西进行优化。例如,您可以训练神经网络在图像中定位猫。这种在图像中定位猫的操作可以被认为是一个函数:给定一张图像,可以训练一个神经网络来返回图像中猫的位置。从这个意义上说,我们可以针对这项任务优化神经网络。

然而,如果一个神经网络代表一种优化算法,那么,如果你稍微改变它,它就不再是同一个优化算法:它可能是另一种优化算法或其他不同的算法。

例如,大多数用于训练神经网络的优化算法(如 Adam)都是梯度下降(GD)的变体。如果您认为 Adam 的性能优于 GD,那么您可以说 Adam 是 GD 的优化。因此,Adam 在某些方面的表现优于 GD。可能在其他方面,GD 也比 Adam 表现得更好。当然,这有点牵强。

将局部最小值搜索(作为 SGD)应用于另一个局部最小值搜索似乎不是很有用。现有的成功解决方案将全局最小值搜索技术与局部最小值搜索相结合。

例如,将模拟退火与 SGD 相结合以优化其学习率和/或 Nesterov 动量是有益的。在这种情况下,您甚至不需要生成大量 SGD 优化器。但是,您也可以尝试基于种群的算法,例如进化编程。

优化优化器的想法非常奇怪,但在全局优化算法上尝试它是相当有用的。