使用归一化梯度和梯度的区别


15

在梯度下降算法的常规设置中,我们有,其中是当前点,是步长,是梯度在评估。 xn+1=xnηgradientxnxnηgradientxnxn

我已经在某种算法中看到,人们使用归一化梯度而不是gradient。我想知道使用归一化渐变和简单渐变有什么区别。


1
我能问个问题吗?如果已经获得梯度向量,如何计算归一化梯度?如果渐变向量数值较大,则需要对渐变进行归一化。您能否提供一些有关归一化梯度的直观示例?谢谢!

Answers:


12

在梯度下降算法中,该算法通过找到可以找到最佳解的方向来进行。最佳方向原来是渐变。但是,由于我们仅对方向感兴趣,而不必对沿该方向移动的距离感兴趣,因此通常对梯度的大小不感兴趣。因此,归一化梯度足以满足我们的目的,因此η决定我们要沿计算方向移动多远。但是,如果您使用非归一化的梯度下降,那么在任何点上,您在最佳方向上移动的距离都取决于梯度的大小(本质上是由目标函数的表面决定的,即陡峭表面上的点将具有高幅度,而相当平坦的表面上的一点将具有低幅度)。

从上面的内容,您可能已经意识到梯度的归一化是您获得的附加控制能力(是否有用取决于您的特定应用程序)。我上面所说的意思是:
1]如果要确保算法在每次迭代中都以固定步长移动,则可能要使用具有固定归一化梯度下降。 2]如果要确保算法按照您精确指定的步长移动,那么再次可能需要对归入步长使用归一化梯度下降和特定函数。ηη
η
3]如果要让梯度的大小决定步长,则将使用非归一化的梯度下降。还有其他几种变体,例如您可以让渐变的大小决定步长,但可以设置一个上限,依此类推。

现在,步长显然会影响收敛速度和稳定性。以上哪种步长效果最好,完全取决于您的应用程序(即目标函数)。在某些情况下,可以分析收敛速度,稳定性和步长之间的关系。然后,这种关系可能会提示您要进行归一化还是非归一化梯度下降。

总而言之,归一化和非归一化梯度下降之间没有区别(就算法背后的理论而言)。但是,它对收敛速度和稳定性有实际影响。一个选择另一个是完全基于手头的应用/目标。


例如,您可以采用一种中间方法,在该方法中,您可以根据第一个梯度进行归一化。这仍然会使相对梯度大小在步长方面很重要。
dashnick

2

真正重要的是如何选择。如果选择步长大小以使乘以梯度的长度相同,则使用归一化渐变还是非归一化渐变都没关系。 ηηη


2

哪种方法收敛速度更快取决于您的特定目标,通常我使用归一化梯度。一个为什么要执行此操作的好例子是一个简单的二次方:。在这种情况下,可以解析地确定描述给定梯度下降轨迹的ODE(随着步长接近零):y t = x 0 / | | x 0 | | e tf(x)=xTxy(t)=x0/||x0||et。因此,当您接近临界点时,梯度范数会快速下降。在这种情况下,经常要在分钟内来回弹跳几次,而不是非常缓慢地反弹。但是,通常来说,一阶方法在关键点附近收敛速度非常慢,因此,如果您真的在乎准确性,则不要真正使用它们。如果您无法通过分析计算出目标的Hessian,则仍可以近似(BFGS)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.