全文参考:
Zeiler M D. ADADELTA: an adaptive learning rate method[J]. arXiv preprint arXiv:1212.5701, 2012.
该方法只使用一阶信息,无需手动调整学习速率,对噪声梯度信息,不同的模型结构选择,各种数据模式和超参数的选择具有一定的鲁棒性。
1.ADAGRAD
ADADELTA是ADAGRAD的变体,所以首先介绍ADADELTA。ADADELTA的更新公式为:
Δxt=−η∑tτ=1g2τ−−−−−−−√gt Δ x t = − η ∑ τ = 1 t g τ 2 g t
这里的分母为所有以前的梯度上的每一个维度的
L2 L 2 范式,η是一个所有维度共享的学习率。
t t 表示当前迭代的次数。
g g 表示梯度,即一阶偏导数。分母这样设置有两点好处:
- 分母使得梯度越大,步长越小。梯度越小,步长越大。这个属性是很好的,因为二阶方法,比如Quickprop,在直观上来看,都是这样的。
- 这种分母中的梯度累积与退火具有同样的效果,随着时间的推移,学习率降低了。
同时,也有坏处。 ADAGRAD方法对初始的梯度的选择很敏感。如果初始梯度很大,由于分母中的平方梯度是不断累积的,整个训练过程中的学习率将继续下降,最终降至零,完全停止训练。而adadelta方法克服了这种缺点。
2.二阶方法更新权重
参考:
S. Becker and Y. LeCun, “Improving the convergence of back-propagation learning with second order methods,” Tech. Rep., Department of Computer Science, University of Toronto, Toronto, ON, Canada, 1988.
T. Schaul, S. Zhang, and Y. LeCun, “No more pesky learning rates,” arXiv:1206.1106, 2012.
文章1使用对角矩阵去近拟黑塞矩阵 (Hessian ( H e s s i a n matrix) m a t r i x ) ,更新公式为:
Δxt=−1|diag(Ht)|+μgt Δ x t = − 1 | d i a g ( H t ) | + μ g t
|diag(Ht)| | d i a g ( H t ) | 使用额外的一次前向,后向传播计算。
文章2融合了对角黑塞矩阵和类ADAGRAD算法提出一种方法无需全局学习率,更新如下:
Δxt=−1|diag(Ht)|E[gt−w:t]2E[g2t−w:t]gt Δ x t = − 1 | d i a g ( H t ) | E [ g t − w : t ] 2 E [ g t − w : t 2 ] g t
其中,
E[gt−w:t] E [ g t − w : t ] 表示前
w w 个梯度的期望值。
E[g2t−w:t] E [ g t − w : t 2 ] 表示平方梯度的期望值。
3.ADADELTA算法
3.1次数累计的改进
使用附加动量法的思想去替代上述 E[gt−w:t] E [ g t − w : t ] 以及 E[g2t−w:t] E [ g t − w : t 2 ] 中 w w 次的记录。公式如下:
E[g2]t=ρE[g2]t−1+(1−ρ)g2t E [ g 2 ] t = ρ E [ g 2 ] t − 1 + ( 1 − ρ ) g t 2
再求它的平方根,下面记为
RMS[g]t R M S [ g ] t
RMS[g]t=E[g2]t+ϵ−−−−−−−−√ R M S [ g ] t = E [ g 2 ] t + ϵ
ϵ ϵ 为常数,目的是为了防止第一次迭代
Δx Δ x 为0,以及之前的参数更新过小,参数更新公式为:
Δxt=−ηRMS[g]tgt Δ x t = − η R M S [ g ] t g t
上述公式为RMSProp的更新公式,这篇文章也提到了这个公式,这只是巧合,这两人都想到了而已。
3.2使用二阶优化的思想去更新权重
Δx=∂f∂x∂2f∂x2⇒1∂2f∂x2=Δx∂f∂x Δ x = ∂ f ∂ x ∂ 2 f ∂ x 2 ⇒ 1 ∂ 2 f ∂ x 2 = Δ x ∂ f ∂ x
前一个公式为牛顿法,得出黑塞矩阵的逆表示为后一个公式,之后将其使用累积梯度的思想,可以得到最后ADADELTA的更新公式为:
Δxt=−RMS[Δx]t−1RMS[g]tgt Δ x t = − R M S [ Δ x ] t − 1 R M S [ g ] t g t