作者丨苏剑林
单位丨广州火焰信息科技有限公司
研究方向丨NLP,神经网络
个人主页丨kexue.fm
在本文中,我们来关心优化算法 SGD(stochastic gradient descent,随机梯度下降),包括带 Momentum 和 Nesterov 版本的。对于 SGD,我们通常会关心的几个问题是:
SGD 为什么有效?
SGD 的 batch size 是不是越大越好?
SGD 的学习率怎么调?
Momentum 是怎么加速的?
Nesterov 为什么又比 Momentum 稍好?
...
这里试图从动力学角度分析 SGD,给出上述问题的一些启发性理解。
梯度下降
既然要比较谁好谁差,就需要知道最好是什么样的,也就是说我们的终极目标是什么?
训练目标分析
假设全部训练样本的集合为 S,损失度量为 L(x;θ),其中 x 代表单个样本,而 θ 则是优化参数,那么我们可以构建损失函数:
而训练的终极目标,则是找到 L(θ) 的一个全局最优点(这里的最优是“最小”的意思)。
GD与ODE