最优化问题
最优化问题可以分为无约束优化问题、等式约束优化问题和不等式约束优化问题。最令人头疼的就是不等式约束问题,然而它又是最常用的。接下来将针对每一种优化问题展开讲述,逐步展开是如何从无约束的优化问题一步步演变成不等式约束问题的。
1. 无约束优化问题
- 求导 - 最速下降法 - 共轭梯度法 - 牛顿法
一般情况下, 无约束优化问题可以认为是一个函数求极值的问题,没错就是高考数学大题第二问常考的那个。写成一般式就是这个样子
其中,x∈χ 称作决策变量,f(x)∈R 称作目标函数。使得f(x) 达到极小的x 被称为上述优化问题的解,记为x ∗,而f(x ∗)则是该优化问题的最优值。还可以换一种写法:
求最优就直接套用高考数学大法——求导。
全局最优解 & 局部最优解
(1)若对于任意的x∈R,f(x)≥f(x∗),则称x∗为该问题的全局最优解;如果f(x)>f(x∗), 则称x∗为该问题的严格全局最优解。
(2)若对于任意的x∗∈Rn,若存在ϵ>0,使得对于任意的x∈Rn
,当∣∣x−x∗∣∣<ϵ 时,有f(x)≥f(x∗),则称x∗为该问题的局部最优解,同理,如果f(x)>f(x∗),则称x∗为该问题的严格局部最优解
但是有时候,我们的问题会受到一点点限制,这时候问题就演变成了约束优化问题。
2. 等式约束优化问题
- 拉格朗日乘数法
一般情况下可以写成:
其中,gi(x) = 0称作等式约束。简单点说就是在求极值的情况下我们还得满足这个等式约束条件。假设问题是求极大值问题max f(x), 我们可以取目标函数的相反数,使其变为求极小值问题,即min −f(x)
2.1拉格朗日乘数法
在数学优化问题中,拉格朗日乘数法(Lagrange multipliers )是一种用于求解等式约束条件下局部最小(最大)值的策略。它的基本思想是通过将含约束条件的优化问题转化为无约束条件下的优化问题,以便于得到各个未知变量的梯度,进而求得极值点。因此,一句话就是拉格朗日乘数法是一种用来求解条件极值的工具。这种方法中引入了一个或一组新的未知数,即拉格朗日乘数,又称拉格朗日乘子,或拉氏乘子,它们是在转换后的方程,即约束方程中作为梯度(gradient)的线性组合中各个向量的系数。
要求f(x,y) 在 g(x,y)=0 时的局部极值时,我们可以引入新变量拉格朗日乘数λ ,这时我们只需要求下列拉格朗日函数的局部极值:
更一般地, 对含有n个变量和k个约束的情况,有:
举个例子:
2.2对偶问题
啥是对偶问题,就是两个问题从两个角度出发,一个求最大另一个求最小,但是(几乎)可以得出一样的结论。先来记个表达式,对偶问题怎么表述 (诶?怎么出现不等式了?没错,等式约束已经很容易了,接下来就要逐步往不等式约束转变了,但首先还是要补充一点相关理论):
上述问题的对偶问题就是:
举个例子,左边是原问题,右边就是它的对偶问题:
2.3对偶问题与拉格朗日
假设我们有两个约束条件,约束优化问题表示为:
那拉格朗日函数写为:
其中,λ , v 是对应的拉格朗日乘子向量,根据拉格朗日函数可以定义拉格朗日对偶函数:
则称g 是拉格朗日函数L 的拉格朗日对偶函数。
3. 不等式约束优化问题
- KKT条件
还是这个熟悉的问题:
为方便对比,我们先把等式约束拿掉,只留下不等式约束,而想要从拉格朗日乘数法演变成不等式约束问题,需要引入KKT条件,将等式约束问题推广至不等式约束。
3.1 KKT
最佳解的必要条件包括Lagrangian函数L(x,λ)的定常方程式、原始可行性、对偶可行性,以及互补松弛性,这些条件合称为Karush-Kuhn-Tucker(KKT)条件,表示为:
其中KKT的核心点就是λg(x)=0,被称为互补松弛性,这也是将不等式转换成等式的关键概念。它的核心思想是描述不等式约束与其对应的拉格朗日乘数之间的关系。具体来说,互补松弛性要求每个不等式约束的拉格朗日乘数和该约束在解处的函数值的乘积必须为零。我们先分类讨论一下可能的情况:
g(x)=0 约束紧绑定(Active Constraint):如果不等式约束在解处是紧的(即约束等号成立),则相应的拉格朗日乘数可以是正的。等式约束问题,采用拉格朗日乘数法求解。
g(x)<0 约束松弛(Inactive Constraint):如果不等式约束在解处是松弛的(即约束严格小于零),则相应的拉格朗日乘数必须为零。约束不起作用,问题转化为无约束优化问题。
g(x)>0 都不满足条件了,直接抛弃。
有效的两种情况写成一个统一的形式,就有了最终的互补松弛性KKT条件:
互补松弛性确保了在最优解处,只要不等式约束是松弛的(即未达到边界),对应的拉格朗日乘数就不会对优化问题产生影响。
回到上一节中说的问题,假设我们既有等式约束也有非等式约束:
定义拉格朗日函数:
其中,μj是对应gj(x)=0的拉格朗日乘数,μk是对应hk (x)≤0的拉格朗日乘数。KKT条件包括:
根据KKT条件即可求出符合要求的结果。看个例子:
4. Reference
[1] https://zhuanlan.zhihu.com/p/643638712 “最优化方法1——最优化问题的解存在唯一性”
[2] https://zhuanlan.zhihu.com/p/645107210 “最优化方法3——对偶理论”
[3] https://zhuanlan.zhihu.com/p/149104728 “好久不见的拉格朗日乘数法”
[4] https://zhuanlan.zhihu.com/p/38163970 “Karush-Kuhn-Tucker (KKT)条件”
[5] https://zhuanlan.zhihu.com/p/556832103" KKT条件,原来如此简单 | 理论+算例实践" ————————————————
本文转载自CSDN博主:草台备忘录
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/Rickey_lee09/article/details/140948301 |