- 核心问题:Critical Point
在 Gradient Descent 的时候,如果遇到梯度为 0 的情况,导致无法继续 optimization,这样的点叫做 Critcal Point
如果最后优化的结果不好,则出现这样的点的原因有 2 个:一个是到 local minima 了,另一个是在驻点了(也叫鞍点,Saddle Point)。现在主要关注的是如何判断是鞍点的情况,并继续 optmization 下去。
有一种数学的方法,是利用黑塞矩阵(类比多元函数的极值求法,写出二元函数的泰勒展开),此处不深究
实践中常用的是减小 batch 和设置一个 momentum-
batch
什么是 batch?在梯度下降的时候,需要求出 loss 的梯度,每次求出梯度之后在乘上 learning rate(超参数,即 \(η\))作为位置的改变量。现在,我将 loss 设置为训练中一部分数据的 loss 值,这一部分数据就叫一个 batch(然后将源数据shuffle之后再分出batch,继续……)
经过研究发现,batch 比较小的时候,优化的效果比较好。(感性理解:可以认为是步长比较小,因此更容易得到最优解,而不是在最优解两头不停震荡)
batch size也是一个需要人为决定的超参数。 -
momentum
考虑在 optimization 的过程中引入“惯性”的概念,每次移动的方向不光是由梯度决定,而是还与之前的移动方向有关。
这样,我们就在处理 critical point 的时候不会被梯度为 0 的点卡爆了,因为移动的方向还与之前的移动的方向有关。
-