深度学习中的优化挑战
局部极小值
当优化问题的数值解接近局部最优解时,随着目标函数解的梯度接近或变为零,通过最终迭代获得的数值解可能仅使目标函数局部最优而非全局最优。只有一定程度的噪声才可能会使参数跳出局部极小值。这正是小批量随机梯度下降的有利特性之一。在非凸优化问题(例如神经网络训练)中,目标函数通常存在许多局部极小值或鞍点。如果使用 全量梯度下降(full-batch GD) ,在迭代过程中梯度是目标函数的“精确梯度”,因此当梯度接近 0 时,优化就容易停在某个局部极小值或鞍点,不再前进。在 小批量 SGD 中,梯度不是对全体样本的精确计算,而是对一个小批量样本的估计。由于样本子集的差异,这个梯度估计本身会包含“噪声”成分。这种噪声会让参数更新时产生轻微的随机扰动,避免优化过程过早陷入某个局部最小值或鞍点。在优化早期,这种“随机性”使得搜索空间更广,增加找到更优解(更接近全局最优)的可能性。
鞍点
除了局部极小值,鞍点就是梯度消失的另一个原因。鞍点是指函数的所有梯度都消失但既不是全局最小值也不是局部极小值的任何位置。考虑f(x) = x^3,x = 0时。较高维度的鞍点更加隐蔽。假设函数的输入是k维向量,输出是标量, 因此其黑塞矩阵将有k个特征值,函数的解可能是局部极小值、局部极大值和梯度为零处的鞍点。
- 函数在零梯度位置处的黑塞矩阵的特征值全为正值:我们有该函数的局部极小值。
- 全为负值:局部极大值。
- 正值和负值:鞍点。
对于高维度问题,至少部分特征值为负的可能性相当大,这使得鞍点比局部极小值更有可能出现。凸函数是黑塞函数的特征值永远不为负的函数。
梯度消失
可能遇到的最隐蔽的问题是梯度消失。梯度消失可能导致优化停滞。
凸性
凸集
对于任何a, b属于X,如果连接a和b的线段也位于X中,则向量空间中的一个集合X是凸的。
给定若干个凸集,那么他们的交集也是凸的。深度学习问题的参数空间大多是 凸集,即便对变量加上“有限范围”的约束(如在球体里),参数空间依旧是凸的。
额。。。 凸性这部分内容我觉得似乎不是特别影响后面的东西,因为我觉得这部分内容我自己去认真思考理解的话可能要花费不少时间,所以我决定先跳过去,等把其他内容过完再来看这一部分。