资讯

非凸优化是什么?在坑坑洼洼的地形上找最低点

2026-11-053 分钟阅读百科
TL;DR非凸优化(Non-Convex Optimization)是目标函数或约束不满足凸性的优化问题,可能存在多个局部最优、鞍点和平坦区域,一般难以保证找到全局最优;深度神经网络训练就是典型的高维非凸优化,实践中依靠随机梯度下降、动量、自适应学习率、良好初始化和归一化等方法取得良好解。

非凸优化(Non-Convex Optimization)是指目标函数或约束条件不满足“凸”的性质的优化问题。与凸优化相比,非凸优化问题通常要困难得多:它可能有很多个局部最优解,一般无法保证找到全局最优解。然而,现代机器学习中最重要的问题,也就是训练深度神经网络,恰恰是一个非凸优化问题。

凸与非凸

要理解非凸,先要理解凸。一个凸函数的形状像一个碗:在函数图像上任意取两点,连接它们的线段总是在函数图像的上方或者与之重合。凸函数有一个非常好的性质:它只有一个“最低的区域”,任何局部的最低点都是全局的最低点。所以,对于凸优化问题,只要沿着下坡的方向一直走,用梯度下降等方法,就一定能找到全局最优解。线性回归、逻辑回归、支持向量机的训练都是凸优化问题。

非凸函数则可能像一片起伏的山地,有许多个山谷和山峰。从某个位置出发往下走,可能会走进一个局部的山谷,四周都是上坡,但其他地方还有更深的山谷。在一般的情况下,找到非凸函数的全局最优解是一个计算上极其困难的问题。

非凸优化的困难

局部最小:优化算法可能陷入一个不够好的局部最低点,误以为已经到了终点。鞍点:在某些方向上是最低点、在另一些方向上却是最高点的位置,就像马鞍的中心。在鞍点上,梯度同样为零,优化算法可能会在附近停滞很长时间。研究表明,在高维的空间中,鞍点比局部最小要普遍得多,它们往往是优化的主要障碍。平坦的区域:在一大片区域内,函数几乎是平的,梯度非常小,优化进展缓慢。病态的曲率:在某些方向上非常陡峭、在另一些方向上非常平缓,像一个狭长的山谷,梯度下降会在陡峭的方向上来回震荡,在平缓的方向上前进得很慢。

深度学习:一个成功的非凸优化

深度神经网络的损失函数是高度非凸的,参数的数量可达数百万到数千亿。从理论上说,这样的优化问题极其困难。但在实践中,用简单的随机梯度下降及其变体,却能够非常成功地训练这些网络,找到在新数据上表现很好的解。研究者对此给出了几个方面的解释:在高维空间中,大多数局部最小的损失值都相差不大,并且接近全局最小,找到其中任何一个都已经足够好;真正麻烦的鞍点,可以借助随机梯度中的噪声和动量等方法逃离;参数量远超需要的“过参数化”网络,它的损失函数地形可能比想象中友好得多,存在大量损失很低、彼此相连的区域。

常用的方法和技巧

随机梯度下降:梯度中的随机噪声帮助逃离鞍点和不好的局部区域。动量法:像滚下山坡的球一样积累速度,帮助冲过平坦的区域和小的凹陷,减少在狭长山谷中的震荡。自适应学习率方法:比如 Adam,为每个参数自动地调整学习率,应对不同方向上曲率差异大的问题。良好的初始化:比如 Xavier 初始化和 He 初始化,让训练从一个合适的位置开始。网络结构的改进:残差连接、归一化层等技术让损失函数的地形变得更加平滑,更容易优化。学习率的调度:比如先预热再逐渐衰减。对于传统的非凸优化问题,还常用多起点的搜索、模拟退火、遗传算法等全局优化方法。