李宏毅2021春机器学习课程笔记——Tips for training:Critical Point
本文作为自己学习李宏毅老师2021春机器学习课程所做笔记,记录自己身为入门阶段小白的学习理解,如果错漏、建议,还请各位博友不吝指教,感谢!!
Critical Point
当我们观察训练集上的Loss出现如下两种形式时:
- 蓝色线:当Loss下降到一定程度后,便不再减小。但此时的Loss并不能满足我们对模型的要求。
- 橙色线:Loss一直没有下降。
出现上述两种情况的原因可能是:损失函数的梯度(gradient)非常接近零,导致损失函数更新后不会下降。在训练过程中如果损失函数陷入局部最小值(Local minima)或鞍点(saddle point)都会出现上述优化失败的情况,这两种情况统称为critical point。
Local Minima
对于很多非线性优化问题,会存在若干个局部最小值(Local Minima),其对应的解称为局部最小解(Local Minimizer)。
局部最小解定义
存在一个\(\delta>0\),对于所有的满足\(||x-x^*|| \le \delta\)的\(x\),都有\(f(x^*) \le f(x)\)。也就是说,在\(x^*\)的邻域内,所有的函数值都大于等于\(f(x^*)\)。
PS:此处的\(x\)指的是模型中的未知参数,即\(\theta\)。
判断局部最小值
要确定一个点\(x^*\)是否为局部最小解,通过比较它的邻域内有没有更小的函数值是不现实的。如果函数\(f(x)\)是二次连续可微的,我们可以通过检查目标函数在\(x^*\)的梯度\(\nabla f(x^*)\)和Hessian矩阵\(\nabla^2 f(x^*)\)来判断。
局部最小解的一阶必要条件:如果\(x^*\)为局部最小解并且函数\(f\)在\(x^*\)的邻域内一阶可微,则在\(\nabla f(x^*)=0\).
证明:
如果函数\(f(x)\)是连续可微的,根据泰勒公式(Taylor‘s Formula),函数\(f(x)\)的一阶展开可以近似为:
假设\(\nabla f(x^*) \ne 0\),则可以找到一个\(\Delta x\)(比如\(\Delta x=-\alpha \nabla f(x^*)\), \(\alpha\)为很小的正数),使得
\[f(x^*+\Delta x) -f(x^*) = \Delta x^T \nabla f(x^*) \le 0. \]这和局部最小的定义矛盾。
局部最小解的二阶必要条件:如果\(x^*\)为局部最小解并且函数\(f\)在\(x^*\)的邻域内二阶可微,则在\(\nabla f(x^*)=0\), \(\nabla^2 f(x^*)\)为半正定矩阵。
证明:
如果函数\(f(x)\)是二次连续可微,函数\(f(x)\)的二阶展开可以近似为:
由一阶必要定理可知\(\nabla f(x^*)=0\),则:
\[f(x^* + \Delta x) - f(x^*) = \frac{1}{2} \Delta x^T(\nabla^2f(x^*))\Delta x \ge 0. \]即\(\nabla^2f(x^*)\)为半正定矩阵。
Saddle Point
鞍点的叫法是因为其形状像马鞍.鞍点的特征是一阶梯度为 0,但是二阶梯度的 Hessian矩阵不是半正定矩阵。
如上图所示:鞍点处,参数关于损失函数的一阶梯度为0。但鞍点在一些维度上是最小值,在另一些维度上又是最大值。通过某些方法是可以让优化方法逃离鞍点的。
判断Critical Point类型
当目标函数处于Critical Point时,可能是有Local min、Local max和Saddle point三种情况,如下图所示:
具体判断是哪一种情况,我们可以采用和判断是否为局部最小解一样的方法。
- 首先使用泰勒公式近似的表示Critical Point周围的点\(\theta\):
其中\(g\)是一个向量,即:
\[g = \nabla L(\theta') \qquad g_i=\frac{\partial L(\theta')}{\partial \theta_i} \]\(H\)是一个Hessian矩阵:
\[H_{ij}=\frac{\partial^2L(\theta')}{\partial \theta_i \partial \theta_j} \]如下图所示,其中\((\theta - \theta')^Tg\)表示绿线部分,\(\frac{1}{2}(\theta-\theta')^TH(\theta-\theta')\)表示红线部分(同时表示critical points处的性质),两者同时来弥补\(L(\theta)\)和\(L(\theta')\)之间的差异。
2. 因为目标函数处于Critical Point,所以此处的梯度\(g\)为0,所以上面的公式可以表示为:
从该公式中,我们可以看出\(\theta'\)处是何种critical point是取决于\(\frac{1}{2}(\theta-\theta')^TH(\theta-\theta')\)的符号。
3. 令\((\theta - \theta') = v\),有:
1)当\(H\)是正定矩阵(所有的特征值是正的),有\(v^THv>0\),也就是\(L(\theta)>L(\theta')\),即\(\theta'\)处是Local minima。
2)当\(H\)是负定矩阵(所有的特征值是负的),有\(v^THv<0\),也就是\(L(\theta)
3)当\(H\)是半正定矩阵(特征值有正、有负),有时\(v^THv>0\),有时\(v^THv < 0\),也就是即\(\theta\)处是Saddle Point。
以一个简单的例子来看:
Function: \(y=w_1w_2x\),如下图所示:
这里令\(x=1 \quad \hat{y}=1\)
根据\(g=0\)可以求得\(w_1=0 和 w_2=0\),由此得到hessian,并解出特征值\(\lambda_1=2\)和\(\lambda_2=-2\),所以\(x\)位于Saddle Point处。
参考资料:
- 《神经网络与深度学习》 邱锡鹏
- 有关正定矩阵知识:https://blog.csdn.net/asd136912/article/details/79146151