1. 稀疏特征和学习率
在模型训练中会有稀疏特征(很少发生的特征),在自然语言模型中常见,比如,与 “学习”相比“预处理”更加少见。同时在其他领域也会用到,例如计算广告和个性化的协同过滤。因为只有少数人感兴趣的事情很多。长尾经济很受用。
在学习率下降的情况下,我们可能最终会遇到以下情况:常见特征的参数收敛到其最佳值相当快,而对于罕见特征,在确定最佳值之前,我们仍然缺乏足够频繁地观察它们的情况。换句话说,对于频繁使用的功能,学习率降低得太慢,对于不频繁使用的功能,学习率降低得太快。
解决此问题的一种可行方法是计算我们看到特定功能的次数,并将其用作调整学习率调度器。
2.AdaGrad算法
AdaGrad算法会使用一个小批量随机梯度 g t g_t gt 通过 s t s_t st累计过去梯度的方差:
g t = ∂ w l ( y t , f ( x t , w ) ) , s t = s t − 1 + g t 2 , w t = w t − 1 − η s t + ϵ ⋅ g t . \begin{aligned} \mathbf{g}_t & = \partial_{\mathbf{w}} l(y_t, f(\mathbf{x}_t, \mathbf{w})), \\ \mathbf{s}_t & = \mathbf{s}_{t-1} + \mathbf{g}_t^2, \\ \mathbf{w}_t & = \mathbf{w}_{t-1} - \frac{\eta}{\sqrt{\mathbf{s}_t + \epsilon}} \cdot \mathbf{g}_t. \end{aligned} gtstwt=∂wl(yt,f(xt,w)),=st−1+gt2,<