自适应梯度下降

计算科学 优化 算法 共轭梯度
2021-12-06 16:38:04

我想最小化一些多变量函数知道这个函数有一个零点,Δ(α,β)Δ(5,5)=0

接近开始(例如 (4.8, 5.2)),我想使用梯度下降法来恢复“正确”值(α,β)(5,5)(5,5)

我可以绘制曲面并且它显然有一个最小点,但是我的算法无法收敛α,β,Δ

在此处输入图像描述 我的一般做法是:

  1. 从一些初始的开始。计算α,βΔ
  2. 计算通过评估例如ΔαΔβ

    Δα=Δ(α+ϵ,β)Δ(αϵ,β)2ϵ

    1. 更新的等价物α,β

      α=αγΔα
      β

    2. 迭代

有什么理由为什么这种一般方法不起作用?

1个回答

有几个问题可能会导致该问题:

  • 首先,您使用有限差分近似进行梯度计算。这是必要的吗?你能解析Δ

  • 其次,有限差分近似只对小的有效。不是很平滑(你的看起来足够平滑),使用太小的值会导致不稳定。当函数表现良好时,我使用之类的东西来测试解析梯度。εΔε=106

  • 假设您设法正确计算梯度。那么步长的选择也很重要。选择下降步长有不同的方法,但如果你想保持简单,请执行以下操作:γ

1.选择一个不是很大的起始值γγ=0.001γ=0.01

2.在每次迭代中,如果你设法减小函数的值,则使用像(其中是步长的上限,如或更小)。如果函数的值没有减少,则通过执行 gamma 。γγmin(γmax,1.1γ)γmaxγmax=1γγ0.9γ

3.太小或函数值的下降太小时,停止。γ

对于凸和平滑的函数,这三个应该足以让你接近最小值。对于更复杂的示例,使用现有的优化方法(如 quasi-newton 或 lbfgs)可以获得非常好的结果。