2. 全局优化与局部最优的基本概念
在优化问题中,我们通常把“解”理解为一组决策变量的取值,而目标函数则给每个解赋予一个数值,用来衡量它有多好。优化的目标,就是在允许的取值范围内找到使目标函数达到最优的那个解。但“最优”这个词并不总是唯一的含义,它至少可以分成两个层次:全局最优与局部最优。理解这两个概念以及它们背后的函数形态,是后续所有算法选择与风险控制的起点。
全局最优解与局部最优解
设目标函数为 f(x),可行域为 D。若存在一点 x*,使得对可行域内任意一点 x 都有 f(x*) ≤ f(x)(以最小化为例),则称 x* 为全局最优解,对应的函数值称为全局最优值。全局最优解关心的是“整个可行域内没有比它更好的点”。
而局部最优解只要求在一个邻域内最优:若存在 x* 的一个小邻域 N(x*),使得对邻域内任意可行点 x 都有 f(x*) ≤ f(x),则称 x* 为局部最优解。局部最优解只保证“附近没有更好的点”,但远处可能存在更优的点。两者的关键差别在于比较范围:全局最优比较整个可行域,局部最优只比较邻域。
需要强调的是,全局最优解一定是局部最优解,但局部最优解未必是全局最优解。一个函数可以有多个局部最优解,其中只有一个(或少数几个)是全局最优。优化算法陷入困境的根源,往往就是“停在了一个局部最优解上,却误以为找到了全局最优”。
凸性与非凸性
凸性是优化中极其重要的性质。对于最小化问题,若可行域是凸集,且目标函数是凸函数,则称该问题为凸优化问题。凸函数满足:对任意两点 x1、x2 和任意 t∈[0,1],有 f(t·x1 + (1−t)·x2) ≤ t·f(x1) + (1−t)·f(x2)。直观地说,凸函数的图像像一个“碗”,任意两点之间的连线都位于函数图像的上方。
凸性带来的最重要结论是:凸函数的任何局部最优解都是全局最优解。这意味着在凸问题中,只要算法找到了一个满足局部最优条件的点,就可以放心地认为它是全局最优,不存在“掉进局部坑里”的风险。因此,判断问题是否凸,往往比选择算法更优先。
相反,非凸性意味着函数图像存在“凹陷”或“多个谷底”。非凸问题中,局部最优解可能有很多个,且局部最优值可能远离全局最优值。现实中的大多数工程优化问题——如神经网络训练、路径规划、参数标定——都是非凸的,这正是局部最优风险存在的根本原因。
多峰性
多峰性是非凸性的一种典型表现:函数在可行域内存在多个“峰”或“谷”。以最小化为例,多峰函数有多个局部极小点,每个极小点对应一个“谷底”。多峰性越强,局部最优解的数量越多、分布越复杂,全局搜索的难度就越大。多峰函数常被用作测试优化算法性能的标准对象,例如经典的 Rastrigin 函数、Ackley 函数等,它们都具有大量局部极小点,用来检验算法能否跳出局部陷阱。
全局优化与局部搜索的本质区别
局部搜索(如梯度下降、坐标下降、爬山法)的基本逻辑是:从当前点出发,沿着能改善目标函数的方向逐步移动,直到无法再改善为止。它依赖的是局部信息(梯度或邻域比较),因此天然只能保证收敛到局部最优。它的优点是收敛快、计算量小;缺点是结果高度依赖初始点,且无法判断找到的解是否为全局最优。
全局优化(如网格搜索、多起点随机重启、模拟退火、遗传算法、贝叶斯优化)则试图在更大范围内探索可行域,以更高的计算代价换取跳出局部最优的能力。它不保证一定找到全局最优(除非问题有特殊结构),但通过全局探索与局部开发的平衡,显著降低被单个局部最优“困住”的风险。二者的本质区别可以概括为:局部搜索回答“附近哪里更好”,全局优化回答“整个范围内哪里最好”。
用简单函数建立直观理解
考虑一个一维示例:f(x) = x⁴ − 4x² + x,定义域取 [−3, 3]。这个函数是非凸的,存在两个谷底。通过求导 f'(x) = 4x³ − 8x + 1 并令其为零,可以找到若干驻点;再结合二阶导 f''(x) = 12x² − 8 判断凹凸性,就能区分局部极小与局部极大。假设数值求解得到两个局部极小点分别位于 x ≈ −1.47 和 x ≈ 1.35 附近(此处为示例性数值,用于说明方法),比较两点的函数值即可判断哪一个是全局最优。若从 x = 0 附近出发做梯度下降,由于该点靠近局部极大区域,算法很可能滑向其中一个谷底而无法到达另一个,这就是局部搜索的典型局限。
再看一个凸函数示例:f(x) = (x − 2)² + 1。它只有一个谷底 x = 2,无论从哪个初始点出发,梯度下降都会收敛到同一点,且该点就是全局最优。对比这两个例子可以直观看到:凸性决定了“局部最优是否等于全局最优”,而非凸性与多峰性决定了“局部最优风险有多大”。
实践中的判断与应对思路
在实际问题中,第一步应尽量判断问题是否具有凸结构。如果目标函数和约束都满足凸性条件,就可以放心使用高效的局部方法,并确信结果是全局最优。如果问题非凸,则需要正视局部最优风险,常见做法包括:采用多起点随机重启,从不同初始点运行局部搜索并比较结果;使用模拟退火、遗传算法等具有跳出局部能力的全局方法;或利用问题的领域知识缩小搜索范围、构造更好的初始解。
总结来说,全局最优与局部最优的区别在于比较范围,凸性与非凸性决定了这种区别是否“致命”,多峰性则刻画了局部陷阱的数量与复杂度。局部搜索擅长快速下降但视野有限,全局优化视野更广但代价更高。理解这些概念,才能在面对具体问题时做出合理的算法选择,并对结果保持清醒的风险判断。