1. 学习内容
本次学习主要的内容是在优化过程中会导致优化失败的临界点是什么,临界点有哪些种类(局部极大值、局部极限值与鞍点),每个种类分别是什么,为什么收敛在局部极限值与鞍点会导致优化失败,进而可以在未来的学习中理解我们如何从不同角度来更好地优化神经网络。
2. 临界点及其种类
在优化神经网络时,我们常使用梯度下降法来最小化损失函数。在这个过程中,会遇到梯度为0的点,这些点就是临界点(Critical Points)。
为什么对临界点的理解很重要:目前来看,没有方法能够保证找到全局最小值,也就是说,不论怎么调参将性能调到你能做到的最好,仍然大概率获得了优化过程中的一个鞍点或者局部极小值,只能在已经大概率陷入某个局部极小值或者鞍点的时候,放大学习率,强行让训练算法跳出当前的局部最小值或者鞍点,继续寻找可能效果会更好的极值点,这样多次跳出优化过程中的局部最小值并进行比较后获得其中性能最好的极小值作为最优解。
临界点分为三类,我们主要关注的是局部极小值和鞍点所带来的影响,局部极大值在实际优化问题中较少遇到:
局部极小值(Local Minimum):在这些点上,损失函数在其邻域内取得最小值。在梯度下降过程中,当达到局部极小值时,由于梯度为0,优化算法会停止进一步减小损失
鞍点(Saddle Point):鞍点是一种特殊的临界点,它在某些方向上是局部极小值,而在其他方向上是局部极大值。在高维空间中,鞍点比局部极小值更为常见,因为要在所有方向上同时达到极小值是非常困难的。
局部极小值和鞍点的一个重要的区别是:如果损失收敛在局部极小值,我们所在的位置已经是损失最低的点了,往四周走损失都会比较高,就没有路可以走了。而鞍点是旁边还是有路可以让损失更低的。只要逃离鞍点,就有可能让损失更低。
3. 如何判断临界值种类
泰勒级数近似(Tayler series appoximation):
在临界点,梯度 g 为零,因此 θ − θ′Tg 为零。所以在临界点的附近,损失函数可被近似为:
我们可以根据来判断在 θ′ 附近的误差表面(error surface)到底长什么样子。知道误差表面的“地貌”,我们就可以判断 L(θ′) 是局部极小值、局部极大值,还是鞍点。
4. 逃离鞍点的方法
低维度空间中的局部极小值点,在更高维的空间中,实际是鞍点。参数的数量代表了误差表面的维度,我们在训练一个网络的时候,参数数量动辄达百万千万级,所以误差表面其实有非常高的维度,也就意味着实际上的局部极小值是很少的,局部极小值并没有那么常见。多数的时候,我们训练到一个梯度很小的地方,参数不再更新,往往只是遇到了鞍点。