caffe求解器文件。如何理解动量μ具有因子$ 1 /(1-μ)$?

时间:2016-06-07 03:42:45

标签: neural-network deep-learning caffe gradient-descent

http://caffe.berkeleyvision.org/tutorial/solver.html

中的

它说

  

注意动量设定μ    有效地将您的更新大小乘以1 /(1-μ)   经过多次迭代训练后,如果增加μ   ,相应地减少α可能是一个好主意(反之亦然)。

我的问题是:

  
      
  1. 为什么1 /(1-μ),如何证明?

  2.   
  3. 为什么根据增加的μ减少α是个好主意?

  4.   

2 个答案:

答案 0 :(得分:3)

简单地说,它是几何级数的总和。

动量更新意味着“速度”和“位置”更新如下:

v =μ* v +α*梯度

θ=θ - v

现在,假设最初v = 0并且梯度保持(几乎)不变(为方便起见,则为1),速度演变为:

  • 0,
  • α,
  • (1 +μ)*α,
  • (1 +μ(1 +μ))*α=(1 +μ+μ^ 2)*α,
  • (1 +μ+μ^ 2 +μ^ 3)*α,
  • (1 +μ+μ^ 2 +μ^ 3 +μ^ 4)*α,
  • (1 +μ+μ^ 2 +μ^ 3 +μ^ 4 +μ^ 5)*α,
  • ...
  • 1 /(1 - μ)*α

(使用无限几何级数之和的公式)

编辑:要回答问题的第二部分,(在下面添加@ Prune的答案),1 /(1 - μ)*α的行为或多或少类似于“有效学习率” 。因此,如果某个特定的α值在您更改μ之前运行良好,则应通过降低α来进行补偿以保持“有效学习率”不变。这与在没有动量的情况下选择梯度下降的正确学习率同样重要。

答案 1 :(得分:2)

说到第二点,您通常希望将速度调整为与您的问题兼容的值。速度描述了估算的解决方案点的移动。如果速度太小,则收敛太慢,和/或过度拟合;如果它太大,你可以在解决方案点周围挣扎,甚至无法收敛。

大多数算法都会对第二个问题进行控制,每当我们发现新的最佳损失时,通常只需将α减小一小部分(如.01)。您需要控制的部分是您的初始设置。如果增加μ使得1 /(1-μ)上升1.25倍,请尝试将α减少20%以进行补偿。