在这个系列中,我们来关心优化算法,而本文的主题则是SGD(stochastic gradient descent,随机梯度下降),包括带Momentum和Nesterov版本的。对于SGD,我们通常会关心的几个问题是:

SGD为什么有效?
SGD的batch size是不是越大越好?
SGD的学习率怎么调?
Momentum是怎么加速的?
Nesterov为什么又比Momentum稍好?
...

这里试图从动力学角度分析SGD,给出上述问题的一些启发性理解。

梯度下降

既然要比较谁好谁差,就需要知道最好是什么样的,也就是说我们的终极目标是什么?

训练目标分析

假设全部训练样本的集合为\boldsymbol{S},损失度量为L(\boldsymbol{x};\boldsymbol{\theta}),其中\boldsymbol{x}代表单个样本,而\boldsymbol{\theta}则是优化参数,那么我们可以构建损失函数
L(\boldsymbol{\theta}) = \frac{1}{|\boldsymbol{S}|}\sum_{\boldsymbol{x}\in\boldsymbol{S}} L(\boldsymbol{x};\boldsymbol{\theta})\tag{1}
训练的终极目标,则是找到L(\boldsymbol{\theta})的一个全局最优点(这里的最优是“最小”的意思)。

点击阅读全文...