随机梯度下降
minibatch-SGD
最简单的更新形式,沿着梯度负方向改变参数,其中dx由小批量数据求得
x += - learning_rate * dx
学习率衰减
- 随步数衰减:经过多少步,衰减为之前得0.9
- 指数衰减: α = α 0 e − k t \alpha = \alpha _ { 0 } e ^ { - k t } α=α0e−kt
- 1/t衰减: α = α 0 / ( 1 + k t ) \alpha = \alpha _ { 0 } / ( 1 + k t ) α=α0/(1+kt)
动量(Momentum)更新
基于动量的随机梯度下降的每次更新,不仅取决于当前的梯度,还取决于过去的梯度大小。当当前的梯度于之前不同时,那么真实的参数更新梯度会变小;相反,当当前梯度于之前相同时,真实参数的更新梯度会变大。在迭代后期,动量法会起到减少震荡,增加稳定性的作用。
v t = γ v t − 1 + g t θ t = θ t − 1 − η v t \begin{aligned} v _ { t } & = \gamma v _ { t - 1 } + g _ { t } \\ \theta _ { t } & = \theta _ { t - 1 } - \eta v _ { t } \end{aligned} vtθt=γvt−1+gt=θt−1−ηvt
- v t v_t vt 当前时刻梯度的指数衰减滑动平均
- v t − 1 v_{t-1} vt−1 上一时刻梯度的指数衰减滑动平均
- g t g_t gt 当前时刻的梯度
- γ \gamma γ 动量因子,控制着历史梯度信息对当前时刻梯度指数衰减滑动平均影响的大小
在训练初期, g t g_t gt每次的方向都相同,因此下降速度越快;若 g t g_t