☆ 保存 非凸函数——由于存在多个局部解而难以实现全局优化的函数
03/18/2026
非凸函数(Non-Convex Function)是指不满足凸性条件的函数,因此它不是一个单一、平滑、像碗一样的曲面,而是可能同时包含多个局部最小值、局部最大值和鞍点。这意味着,即使在某个位置已经把函数值降低了很多,也不能保证此时得到的就是整个定义域中的全局最小值。在实际优化过程中,最终结果往往会受到初始化方式和搜索路径的明显影响。
**通俗地说:**如果一片地形只有一个山谷,那么只要一直往下走,通常就能到达最低点。但非凸函数更像是由许多山丘和山谷交织而成的复杂地形。你现在进入的山谷,也许在附近看起来已经很低了,但更远的地方可能还存在更深的谷底。所以,在非凸问题里,不能简单地认为“已经一直往下走了,所以一定找到了最优解”。
在非凸函数中,多个局部最小值和鞍点会让全局最优解更难找到。
方法(工作原理与主要特征)
-
定义标准
- 凸函数(convex function)满足这样一个性质:任意两个输入点之间的中间点,其函数值都不会大于这两个点函数值的加权平均。
- 非凸函数则是在某些区间或区域中,这个条件可能会失效的函数。
- 也就是说,它的图像不会始终朝同一个方向弯曲,而是会在不同区域发生弯折、翻转和形状变化。
- 仅从函数形状来看,就能看出这不是那种“一路往下走就结束”的简单优化问题。
-
地形结构
- 非凸函数中可能存在多个局部最小值。局部最小值只是比周围点更低,但不一定是整个函数中最低的点。
- 它也可能包含局部最大值。局部最大值比周围点更高,会让搜索方向频繁改变。
- 鞍点是指某些方向上函数值下降、另一些方向上函数值上升的点。虽然在这种位置上梯度看起来可能很小,但它并不是真正的最小值。
- 当这些结构混合在一起时,优化过程就不再像简单计算,更像是在复杂地形中寻找路径。
-
\[ f(\lambda x + (1-\lambda)y) \le \lambda f(x) + (1-\lambda)f(y) \]
\[ 0 \le \lambda \le 1 \]
这是凸函数的经典判定条件。其中,x 和 y 是两个输入点,lambda 表示两点之间的混合比例。如果对于所有的 x、y 和 lambda,这个不等式都成立,那么该函数就是凸函数;如果在某些情况下这个条件会被破坏,那么它就是非凸函数。直观地说,这表示两点之间的真实中间位置,可能会高于那条直线平均高度,或者呈现出更复杂的弯曲形状。
-
优化难点
- 像梯度下降(Gradient Descent)这样的基于梯度的方法,只会根据当前位置附近的局部斜率来决定前进方向。
- 因此,不同的初始点可能会把搜索过程带入不同的“谷底”,而一旦进入某个局部最小值附近,就可能错过其他区域里更优的解。
- 在鞍点附近,梯度可能会变得非常小,从而让训练速度明显变慢。这时看起来像是优化已经停住了,但实际上并没有到达真正理想的解。
- 因此,在非凸优化中,重点往往不在于理论上严格保证找到全局最优解,而在于实际中稳定地找到一个足够好的解。
-
深度学习中的例子
- 深度学习中的损失函数(loss function)通常具有非凸结构,因为模型参数很多,而且网络层之间包含复杂的非线性关系。
- 所以,即使是同一个模型,初始化方式、学习率、批次构成以及优化器选择不同,训练结果也可能不同。
- 在实际应用中,人们通常会使用 Stochastic Gradient Descent、Momentum、Adam 等方法来探索这种复杂的优化地形。
- 从实践角度看,比起一定要找到唯一完美的全局最优解,更重要的是找到一个损失较低且泛化性能良好的区域。
-
直观对比
- 凸函数像一个单独的碗,不管从哪里开始,往下走通常都会到达同一个底部。
- 非凸函数更像是多个碗连接在一起,最终结果会受到你先落入哪个“盆地”的影响。
- 因此,人们常常会尝试不同的初始化,或者借助随机性去探索不同的搜索路径。
- 记住这个对比,就更容易理解为什么非凸优化困难,也更容易理解为什么实际中需要多种优化技巧配合使用。
意义与局限
非凸函数之所以重要,是因为它能够更真实地刻画现实中的复杂模型和复杂现象。尤其是在深度学习、强化学习以及高维优化问题中,非凸结构都会自然出现,因此理解非凸函数,是理解现代模型训练机制的重要基础。不过,由于存在多个局部最小值和鞍点,寻找全局最优解通常非常困难,而且结果还会对初始化和超参数比较敏感。因此,在非凸优化中,更实际的思路通常不是追求理论上绝对完美的解,而是在计算可行的前提下,找到一个具有良好泛化能力的高质量解。
建议先读 (3/5)
+2
接下来推荐阅读 (5/15)
+5
- 3. 优化与正则化——让训练更靠谱,把过拟合挡在门外
- Discrete vs Continuous Optimization——根据解空间结构选择不同优化策略
- 7.7 KV Cache 与 Shared Key-Value Attention —— MQA、GQA 与 MLA
- 7.6 Transformer LLM 的高效 attention 机制 —— Full Attention、Sparse Attention 与 FlashAttention
- 病态优化——由于不同方向曲率差异过大而导致难以收敛的优化问题
- 一阶优化 vs 二阶优化——只用梯度还是连曲率一起用的优化选择
- 学习率(Learning Rate)——决定参数更新“走多快”的关键尺度
- 连续空间局部搜索:用微分逐步改进解的优化方法
- 凸优化 — 解决“碗形”最小化问题的方法:全局最优有保证
- Exponential Loss — AdaBoost 为什么会关注难样本,以及它与 Logistic Loss 的区别
- Streaming Weighted Sum — FlashAttention 为什么不需要保存 Attention Matrix
- Online Softmax — 为什么不保存全部分数也能完成 Softmax 计算
- Streaming Softmax — FlashAttention 如何在不保存完整 Softmax 中间结果的情况下完成计算
- Speed-Quality Trade-off — 为什么更快的 AI 往往需要在质量上做取舍?
- Gradient Boosted Decision Trees (GBDT) — 为什么多棵小树比一棵大树更强大?
同一主题文章 (0/0)
该单元暂时没有其他文章。
相关概念 (0/0)
暂时没有相关概念文章。
📍 这个概念在 AI 学习地图中的位置
查看这个概念在整个 AI Universe 中的位置。
📍 AI Universe 中的当前位置
☰
重置 显示已完成 · 需要登录 加载中…
🌌 AI Universe
‹
›
⭐ 概念
请选择一个节点。