高维空间的SGD适用性问题
在低维空间,往往SGD(随机梯度下降)会有一个尴尬的处境就是会落入局部最优解(因为它基于GD即梯度下降法),但是在高维空间会这样吗???
一、高维空间的优化特性:局部最优解的“消失”
在低维空间中,目标函数(如神经网络的损失函数)常存在大量尖锐的局部最优解(可以理解为在最低点之前存在一个类似于二次函数的最低点一样的存在但是他的最低点更小),SGD容易被困其中。但在高维空间(如深度学习中常见的百万级参数空间),理论和实践表明:
- 局部最优解的结构变化
高维空间中,局部最优解的数量可能随维度呈指数增长,但绝大多数局部最优解的梯度接近零(近似平稳点),且目标函数值与全局最优解相差无几。
通俗理解可以是说梯度下降法本身的要求是目标朝着偏导数求小于零的方向前进,在二维空间存在一个偏导数,三维有两个… 以此类推n维空间将会有n-1个偏导数。你该如何保证些偏导数全部小于零?也就是说在绝对高维空间(矩阵满秩且秩足够大)的情况下,存在一个全部偏导数小于零的方向几乎不可能。
- SGD的内在噪声机制
我们从GD公式看起:
批量梯度下降(Batch Gradient Descent)更新公式:
其中:
$\theta$: 模型参数
$\eta$: 学习率
$\nabla_\theta J(\theta)$: 损失函数对所有样本的梯度均值
随机梯度下降(Stochastic Gradient Descent)更新公式:
其中:
$J_i(\theta)$: 第i个样本的损失函数
我们可以看出GD本身仅仅有一个偏导与下降的过程,到达临界点后悔直接卡住。
而SGD则会对批次进行梯度计算,这引入了噪声,保证了他逃离高维空间最致命的位置鞍点的动力。
二,SGD的面对平坦与病态条件的致命缺点
- 接近最优点时候收敛满而且跟老年人手抖一样不稳定
噪声的存在让他一点一点挪动出鞍点,但是他的客观存在也让他在最低点左右开始摇摆,难以逼近最优点。同时由于他高度依赖学习率,他的调参可以说是炼丹师的噩梦:
学习率小了效果差收敛慢
学习率大了容易步子大了扯到蛋(震荡太大不稳定)
炼丹师们以调一个不吱声。 - 高度依赖数据的本身性质,极易被影响
如果这个数据有过于平坦的位置和过于陡峭的位置,那他就会在陡峭的位置一下子冲下来,在平坦的位置稳定的不能再稳定(图灵停机:老爷爷(指炼丹师),我来给你踩背来喽~)
这就导致了SGD一些情况下的极其不稳定 - 可能会“陷”在高原(平坦区域)或缓坡上:
虽然从理论上讲,严格局部最优点几乎不存在,但SGD在这些区域的移动极其缓慢,梯度估计的噪声无法提供足够有力的方向指引,使得优化过程看似“停滞”。这在实际效果上非常类似于陷入局部最优,训练损失长时间几乎不变。而且缺乏有效的驱动力: 标准SGD没有内在的机制来加速在平坦区域的搜索或驱动自己离开这些区域。
三,总结:
在高维空间中,SGD理论上具有避免严格局部最优的优势(因高维临界点多为可通过噪声逃离的鞍点),且其小批量计算的特性带来了计算效率和内存友好性。然而,实践中,其固有噪声导致收敛后期震荡剧烈、速度缓慢;对病态曲率(如狭长山谷)极度敏感,易陷入缓坡或高原停滞;且高度依赖手动精细调整学习率和批大小。因此,虽然SGD作为基础算法在高维优化中依然可行并存在理论保障,但其实际效率、稳定性和易用性的显著缺陷使其在深度学习等领域通常被更先进的优化器(Adam真是我爹)取代,后者通过动量或自适应学习率机制更有效地克服了高维空间的挑战。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.