深度学习_深度学习基础知识_RAdam详解

SGD收敛较好,但是需要耗费很多时间。

Adam收敛快,但是容易陷入局部解中。

Adam的核心思想是用指数滑动平均去估计梯度每个分量的一阶矩(动量)和二阶矩(自适应学习率),并用二阶矩去normalize一阶矩,得到每一步的更新量:

深度学习_深度学习基础知识_RAdam详解

其中,mtm_{t}是一阶矩(动量),vtv_{t}是二阶矩(自适应学习率),η\eta是学习率,ctc_{t}是偏差修正项(bias correction),ϵ\epsilon防止除零错误以及控制更新量的最大scale,Δθ\Delta\theta是参数更新量,β1\beta_{1}β2\beta_{2}是指数滑动平均的超参,越小说明倾向于局部平均。

RAdam指出在训练初期Adam中vtv_{t}的方差会非常大,而vtv_{t}起到修正更新方向的作用,因此Adam参数的更新量的方差也会非常大。

Radam使用预热(warmup)的方法来解决Adam容易收敛到局部最优解的问题,作者前期选用比较稳的SGD + Momentum来进行训练,来稳定缩小方差。

下面是RAdam的算法流程:

深度学习_深度学习基础知识_RAdam详解
和Adam一样,使用的是滑动平均的方法。而在训练初期的时候,切换到SGD + Momentum进行预热。