caffe 求解器文档。如何理解动量 μ 对因子 $1/(1-μ)$ 的影响?
caffe solver document. how to understand the momentum μ has an effect of factor $1/(1-μ)$?
在http://caffe.berkeleyvision.org/tutorial/solver.html
它说
Note that the momentum setting μ
effectively multiplies the size of your updates by a factor of 1/(1-μ)
after many iterations of training, so if you increase μ
, it may be a good idea to decrease α accordingly (and vice versa).
我的问题是:
why 1/(1-μ) , how to prove that?
why it's a good idea to decrease α according to an increasing μ?
简单来说就是一个几何级数的和
动量更新意味着"velocity"和"position"更新如下:
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 - μ) * α
(用无限几何级数求和公式)
EDIT:要回答问题的第二部分,(添加到下面@Prune 的回答中)1/(1 - μ) * α 的行为或多或少像"effective learning rate"。因此,如果 α 的某个特定值在您更改 μ 之前运行良好,您应该通过减小 α 来进行补偿以保持 "effective learning rate" 不变。这与在没有动量的情况下选择正确的梯度下降学习率一样重要。
关于您的第二点,您通常希望将速度调整为与您的问题兼容的值。速度描述了您估计的解决方案点的移动。如果速度太小,你收敛太慢,and/or过拟合;太大的话会绕着解点折腾,甚至无法收敛。
大多数算法都会控制第二个问题,每当我们发现新的有史以来最好的损失时,通常只需将 α 减少一个小因子(例如 .01)。您需要控制的部分是您的初始设置。如果增加 μ 使得 1/(1-μ) 上升 1.25 倍,请尝试将 α 减少 20% 以进行补偿。
在http://caffe.berkeleyvision.org/tutorial/solver.html
它说
Note that the momentum setting μ effectively multiplies the size of your updates by a factor of 1/(1-μ) after many iterations of training, so if you increase μ , it may be a good idea to decrease α accordingly (and vice versa).
我的问题是:
why 1/(1-μ) , how to prove that?
why it's a good idea to decrease α according to an increasing μ?
简单来说就是一个几何级数的和
动量更新意味着"velocity"和"position"更新如下:
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 - μ) * α
(用无限几何级数求和公式)
EDIT:要回答问题的第二部分,(添加到下面@Prune 的回答中)1/(1 - μ) * α 的行为或多或少像"effective learning rate"。因此,如果 α 的某个特定值在您更改 μ 之前运行良好,您应该通过减小 α 来进行补偿以保持 "effective learning rate" 不变。这与在没有动量的情况下选择正确的梯度下降学习率一样重要。
关于您的第二点,您通常希望将速度调整为与您的问题兼容的值。速度描述了您估计的解决方案点的移动。如果速度太小,你收敛太慢,and/or过拟合;太大的话会绕着解点折腾,甚至无法收敛。
大多数算法都会控制第二个问题,每当我们发现新的有史以来最好的损失时,通常只需将 α 减少一个小因子(例如 .01)。您需要控制的部分是您的初始设置。如果增加 μ 使得 1/(1-μ) 上升 1.25 倍,请尝试将 α 减少 20% 以进行补偿。