10个梯度下降优化算法

梯度下降是一种寻找函数极小值的优化方法,在深度学习模型中常常用来在反向传播过程中更新神经网络的权值。
10个梯度下降优化算法_第1张图片

10个梯度下降优化算法_第2张图片

梯度下降法优化器对梯度部分使用的是指数移动平均值(EMA),对学习率部分使用均方根(RMS)。

为什么要对梯度取指数移动平均?

我们需要使用一些数值来更新权重。我们唯一有的数值呢就是当前梯度,所以让我们利用它来更新权重。

但仅取当前梯度值是不够好的。我们希望我们的更新是(对模型来说,是)“更好的指导”。让我们考虑(每次更新中)包括之前的梯度值。

将当前梯度值和过去梯度信息的结合起来一种方法是,我们可以对过去和现在的所有梯度进行简单的平均。但这意味着每个梯度的权重是相等的。这样做是反直觉的,因为在空间上,如果我们正在接近最小值,那么最近的梯度值可能会提供更有效的信息。
因此,最安全的方法是采用指数移动平均法,其中最近的梯度值的权重(重要性)比前面的值高。

为什么要把学习速率除以梯度的均方根呢?

这个目的是为了调整学习的速率。调整为了适应什么?答案是梯度。我们需要确保的是,当梯度较大时,我们希望更新适当缩小(否则,一个巨大的值将减去当前的权重!)
为了到达这种效果,让我们学习率α除以当前梯度得到一个调整学习速率。

请记住,学习率成分必须始终是正的(因为学习率成分,当乘以梯度成分,后者应该有相同的符号)。为了确保它总是正的,我们可以取它的绝对值或者它的平方。当我们取当前梯度的平方,可以再取平方根"取消"这个平方。

但是就像动量的思路一样,仅仅采用当前的梯度值是不够好的。我们希望我们的训练中的(每次)更新update都能更好的指导(模型)。因此,我们也需要使用之前的梯度值。正如上面所讨论的,我们取过去梯度的指数移动平均值(‘mean
square’) ,然后取其平方根(‘root’) ,也就是’均方根’(RMS)。除了 AdaGrad
(采用累积的平方梯度之和)之外,本文中所有的优化器都会对学习速率部分进行优化。

你可能感兴趣的:(算法)