关于拉格朗日乘子法与KKT条件
来源:互联网 发布:少女前线vector数据 编辑:程序博客网 时间:2024/06/07 10:39
转自 http://www.moozhi.com/topic/show/54a8a261c555c08b3d59d996
目录
- 拉格朗日乘子法的数学基础
- 共轭函数
- 拉格朗日函数
- 拉格朗日对偶函数
- 目标函数最优值的下界
- 拉格朗日对偶函数与共轭函数的联系
- 拉格朗日对偶问题
- 如何显式的表述拉格朗日对偶问题
- 由定义消去下确界
- 隐式求解约束
- 共轭函数法
- 弱对偶
- 强对偶
- 原始问题与对偶问题的关系
- 最优条件
- 互补松弛条件
- KKT条件
- 一般问题的KKT条件
- 凸问题的KKT条件
- KKT条件的用途
- 拉格朗日乘数法的形象化解读
- 等式约束的拉格朗日乘子法
- 含有不等约束的情况
- 参考文献
拉格朗日乘子法无疑是最优化理论中最重要的一个方法。但是现在网上并没有很好的完整介绍整个方法的文章。我这里尝试详细介绍一下这方面的有关问题,插入自己的一些理解,希望能够对大家有帮助。本文分为两个部分:第一部分是数学上的定义以及公式上的推导;第二部分主要是一些常用方法的直观解释。初学者可以先看第二部分,但是第二部分会用到第一部分中的一些结论。请读者自行选择。
拉格朗日乘子法的数学基础
共轭函数
对于一个函数
下面是一些常用函数的对偶函数:
- 线性函数
f(x)=ax+b 的共轭函数是f∗(a)=−b ,定义域是单点a 。 - 负对数
f(x)=−logx 的共轭函数是f∗(y)=−log(−y)−1 ,定义域是y<0 。 - 指数函数
f(x)=ex 的共轭函数是f∗(y)=ylogy−y ,定义域是y≥0 。 - 负熵函数
f(x)=xlogx 的共轭函数是f∗(y)=ey−1 ,定义域是R - 倒数函数
f(x)=1/x 的共轭函数是f∗(y)=−2(−y)1/2 ,定义域数y≤0 。 - 任意范数
f(x)=∥x∥ 的共轭函数是f∗(y)={0∞∥y∥∗≤1otherwise
其中∥y∥∗ 是原范数∥x∥ 的对偶范数。 - 范数平方
f(x)=(1/2)∥x∥2 的共轭函数是f∗(y)=(1/2)∥y∥2∗ ,其中∥y∥∗ 是原范数∥x∥ 的对偶范数。 - 二次型
f(x)=(1/2)xTQx 的共轭函数是f∗(y)=(1/2)yTQ−1y
这个函数的几何意义可以通过下图解释:
随着
很容易看出不管原函数的凹凸性如何,共轭函数一定是凸函数(可以由凸函数性质看出,这里不细说)。
拉格朗日函数
对于一个标准形式的优化问题:
拉格朗日函数就是将目标函数和约束进行有权重的求和:
拉格朗日对偶函数
拉格朗日对偶函数,或者直接叫对偶函数,被定义为拉格朗日函数在
目标函数最优值的下界
假设原始问题目标函数最优值是
下面讨论里有人问为什么要求
拉格朗日对偶函数与共轭函数的联系
线性约束的问题的拉格朗日对偶函数可以通过对共轭函数来表达出来。考虑如下线性约束问题:
拉格朗日对偶问题
由于我们知道
由于我们知道拉格朗日对偶函数
如何显式的表述拉格朗日对偶问题
上面形式的拉格朗日对偶问题很难在实际中求解。通常情况下为了求解,我们需要一些更明确的条件来把拉格朗日对偶问题表述出来。一般我们如下几种方法。
由定义消去下确界
如果拉格朗日函数能够简单的求得下确界。我们就可以直接消去原始问题的变量,得到明确的对偶问题。
例如对于:
隐式求解约束
有时候拉格朗日对偶函数可以取到无穷。为了得到有意义的解,我们可以求出对偶可行域,即让
例如对于标准线性规划问题:
共轭函数法
由于线性约束的问题和共轭函数有密切的关系,很多时候我们可以利用共轭函数来求解对偶问题的约束。
例如最大化熵问题:
由线性约束问题的对偶函数与共轭函数的关系可得:
所以,这个问题也转化为了一个无约束的优化问题:
弱对偶
如果我们把拉格朗日对偶问题的最优值记为
弱对偶关系即使在
我们把原始问题和对偶问题最优值之间的差值
强对偶
如果原始问题和对偶问题的最优值相等,即:
通常情况下强对偶关系并不成立。但是如果原始问题是凸的,即对于这样的形式:
一种经常被用到的条件是
- Slater条件:存在一点
x∈relint D (D的相对内点集)满足这样的点也可称之为 严格可行 的。fi(x)<0,i=1,…,m,Ax=b
可以证明,如果原问题是凸的,并且Slater条件成立的情况下,强对偶条件一定成立。
如果有一些不等约束是仿射的,Slater条件还可以被弱化。假设前
- Refined Slater 条件:存在一点
x∈relint D (D的相对内点集)满足fi(x)≤0,i=1,…,k,fi(x)<0,i=k+1,…,mAx=b
即仿射的不等约束不必取严格小于。
此外,满足 Slater 条件(或 Refined Slater 条件) 不仅意味着(凸优化问题)强对偶性的成立,而且也表示当
原始问题与对偶问题的关系
- 原始问题和对偶问题都是可行的,则弱对偶关系成立,强对偶关系不一定成立。
- 原始问题和对偶问题都不可行,则弱对偶关系依然成立,但强对偶关系不成立。
- 关于原始问题和对偶问题之间的解的关系,可以整理如下表格:
最优条件
现在假设我们现在已经知道了原始问题和对偶问题的最优值相等(强对偶)。
这里有两个不等号,第三行取到等号的必要条件是:
而第四行取到等号的条件是:
互补松弛条件
上面得到:
- 如果拉格朗日不等约束乘子
λ∗i>0 ,则该乘子对应的约束条件严格取等号,即fi(x∗)=0 。 - 如果某不等约束严格取不等号,即
fi(x∗)<0 ,则该约束对应的乘子一定为零,即λ∗i=0 。
互补松弛条件通常代表着一定物理意义。其中的乘子常常是一个明确的状态指示器。代表着约束的有效与否。
KKT条件
一般问题的KKT条件
将上面讨论的条件结合起来,我们就得到了著名的KKT条件:
容易看出,由于最后一个条件的限制,对于任意优化问题,只要
凸问题的KKT条件
如果原始问题是凸的,则KKT条件也是充分的。这是因为KKT的最后一个条件在对拉格朗日函数取下确界的时候成为了充要条件。这时候我们有如下结论:
- 如果一个凸优化问题有可微的目标函数和约束,并且满足Slater条件,则KKT条件是取得最优的充要条件:Slater条件保证了最优对偶间隙为零并且最优点可以取到;在此基础上
x 是最优当且仅当(x,λ,ν) 满足KKT条件。
KKT条件的用途
KKT条件在优化问题中有重要意义。它可以用于如下方面:
- 有时候可以直接从KKT条件里得到最优的解析解。
- 等式约束的优化问题,可以通过KKT条件转化为无约束方程求零点问题。
- 有不等式约束的优化问题,可以使用KKT条件来简化,帮助求解。
拉格朗日乘数法的形象化解读
上面的论述都是拉格朗日乘子法的数学基础。但是上面的公式无法解释一个问题:为何要如此构造拉格朗日函数?其背后的意义是什么?这一部分就试图来回答这个问题。
等式约束的拉格朗日乘子法
考虑这个决策变量是二维平面内点
图中画出了两条
因此,我们通过观察可以得到优化取到最小值的条件:
仍然需要提醒的是,这些条件对于一般问题只是取到最优的必要条件。但是对于大多数凸问题来说,这个条件也是充分条件。具体情况请看上面公式推导。
含有不等约束的情况
上面仅仅考虑了等式约束的情况。那么含有不等式的约束情况下,
我们还是考虑一个和上面问题类似的问题:
这个和之前的图不同之处在于:约束决定的可行区域由一条直线变成了一段带状区域。这个带状区域由两条边界
大家立刻可以从图中发现,这个问题的最优解和之前的等式约束情况下没有任何区别。也就是依然满足条件:
这里的核心问题是互补松弛条件。我们上面已经说过了由于互补松弛条件的存在,
由上面的问题可以看出来,不等约束的拉格朗日乘子
参考文献
- Stephen Boyd, Lieven Vandenberghe. Convex Optimization.
- 维基百科. 拉格朗日乘数.
- 关于拉格朗日乘子法与KKT条件
- 关于拉格朗日乘子法与KKT条件
- 拉格朗日乘子法与KKT条件
- 拉格朗日乘子法与KKT条件
- 拉格朗日乘子法与KKT条件
- 关于拉格朗日乘子法与KKT条件的相关数学概念
- 砥志研思SVM(二) 拉格朗日乘子法与KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法和KKT条件
- Codeforces Round#324 div.2 E
- C++之RAII惯用法 blog.csdn.net/hunter8777/article/details/6327704
- UITableViewCell的背景设置
- QTableView的表格项中加入图标的方法
- Struts实战-使用SSH框架技术开发学籍管理系统
- 关于拉格朗日乘子法与KKT条件
- 为什么c++抛出异常后还能对函数内的局部对象进行析构? http://segmentfault.com/q/1010000002498987
- DDoS deflate – Linux下防御/减轻DDOS攻击
- 加盐hash保存密码的正确方式(上)
- 排序算法时间复杂度
- URL编码解码以及常见压缩算法和加密
- C++单例实际模式
- 夺命雷公狗jquery-----1选择标签的三种方法
- hadoop版本的新特性