约束最优化问题求解:拉格朗日乘子法和KKT条件

原创 2016年11月11日 21:29:43

在约束最优化问题中,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转换为对偶问题,通过解对偶问题而得到原始问题的解。该方法应用在许多统计学习方法中,例如最大熵模型和支持向量机。

对于等式约束的优化问题,可以应用拉格朗日乘子法(Lagrange Multiplier)去求取最优值;如果含有不等式约束,可以应用KKT(Karush-Kuhn-Tucker)条件去求取。当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。

1. 拉格朗日乘子法和KKT条件

通常我们需要求解的最优化问题有如下几类:

  • 无约束优化问题,可以写为:

    minf(x);

  • 有等式约束的优化问题,可以写为:

    minf(x),s.t.hi(x)=0;i=1,...,n

  • 有不等式约束的优化问题,可以写为:

minf(x),s.t.gi(x)<=0;i=1,...,nhj(x)=0;j=1,...,m

对于无约束优化问题,常常使用的方法就是Fermat定理,即使用求取 f(x) 的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。

对于有等式约束的优化问题,常常使用的方法就是拉格朗日乘子法,即把等式约束 hi(x) 用一个系数与 f(x) 写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。

对于有不等式约束的优化问题,常常使用的方法就是KKT条件。同样地,我们把所有的等式、不等式约束与 f(x) 写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。

1.1 拉格朗日乘子法

对于等式约束,我们可以通过一个拉格朗日系数 a 把等式约束和目标函数组合成为一个式子 L(a,x)=f(x)+ah(x) , 这里把 ah(x) 视为向量形式,a 是横向量,h(x) 为列向量。

然后求取最优值,可以通过对 L(a,x) 对各个参数求导取零,联立等式进行求取。

1.2 KKT条件

对于含有不等式约束的优化问题,将其转化为对偶问题:

maxa,bminxL(a,b,x),s.t.ai0;i=1,...,n

其中 L(a,b,x) 为由所有的不等式约束、等式约束和目标函数全部写成的一个式子 L(a,b,x)=f(x)+ag(x)+bh(x),KKT条件是说原始问题最优值 x 和对偶问题最优值 a,b 必须满足以下条件:

  1. xL(a,b,x)=0,aL(a,b,x)=0,bL(a,b,x)=0
  2. agi(x)=0;
  3. gi(x)0;
  4. ai0, hj(x)=0.

当原始问题的解和对偶问题的解满足KKT条件,并且 f(x),gi(x) 是凸函数时,原始问题的解与对偶问题的解相等。

求取这几个等式之后就能得到候选最优值。其中第2个式子非常有趣,因为 gi(x)0 ,如果要满足这个等式,必须 a=0 或者gi(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。

2. 为什么拉格朗日乘子法和KKT条件能够得到最优值?

2.1 拉格朗日乘子法

设想我们想要最大化目标函数 f(xy)。可以投影在 x,y 构成的平面(曲面)上,即成为等高线;假设我们的约束 g(x,y)=0,在 x,y 构成的平面或者曲面上是一条曲线,如下图。
1 这里写图片描述

图片来自维基百科

假设 g(x,y) 与等高线相交,交点就是同时满足等式约束条件和目标函数的可行域的值,但肯定不是最优值,因为相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,才能取得最优值,即等高线和目标函数的曲线在该点的法向量必须有相同方向。

所以最优值必须满足:f(x)=ag(x),a是常数,表示左右两边同向,这个等式就是 L(a,x) 对参数求导的结果。

2.2 KKT条件

我们的目标问题是 minf(x)。可以构造函数 L(a,b,x)

L(a,b,x)=f(x)+ag(x)+bh(x)a0

此时 f(x)maxa,bL(a,b,x) 是等价的。因为 h(x)=0,g(x)0,ag(x)0,所以只有在 ag(x)=0 的情况下 L(a,b,x) 才能取得最大值,这就是KKT的第二个条件。

因此我们的目标函数可以写为 minxmaxa,bL(a,b,x)。如果用对偶表达式: maxa,bminxL(a,b,x),由于我们的优化是满足强对偶的(强对偶就是说对偶式子的最优值是等于原问题的最优值的),所以在取得最优值 x 的条件下,它满足 f(x)=maxa,bminxL(a,b,x)=minxmaxa,bL(a,b,x)=f(x),我们来看看中间两个式子发生了什么事情:

f(x)====maxa,bminxL(a,b,x)maxa,bminx(f(x)+ag(x)+bh(x))maxa,b(f(x)+ag(x)+bh(x))f(x)

可以看到上式本质上是说 minx(f(x)+ag(x)+bh(x))x 取得了最小值,用fermat定理,即是说对于函数 f(x)+ag(x)+bh(x),求取导数要等于零,即

(f(x)+ag(x)+bh(x)=0)

这就是KKT条件中第一个条件:xL(a,b,x)=0

所有上述说明,满足强对偶条件的优化问题的最优值都必须满足KKT条件。可以把KKT条件视为是拉格朗日乘子法的泛化。

参考资料
1. 深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
2. 李航,著. 统计学习方法[M]. 清华大学出版社,2012

深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式...
  • xianlingmao
  • xianlingmao
  • 2012年09月22日 17:05
  • 288251

数值优化(Numerical Optimization)学习系列-带约束最优化(Constrained Optimization)

概述 带约束的最优化问题是区别于无约束最优化问题的,另外一大类最优化问题。在实际中也经常遇到,本节主要介绍了带约束最优化问题的相关理论以及最优解满足的必要条件。 1. 带约束最优化问题概...
  • fangqingan_java
  • fangqingan_java
  • 2015年12月27日 18:53
  • 2102

KKT条件--约束问题最优化方法

KKT条件在约束条件下求解非线性规划问题很有用,是确定某点为最优点的一阶必要条件。而对于凸规划问题而言,KKT条件是局部极小点的一阶必要条件,同时也是充分条件,而且局部极小点就是全局极小点。...
  • zjsmdchen
  • zjsmdchen
  • 2016年04月06日 23:33
  • 4588

机器学习笔记_ 数值最优化_3:KKT条件

KKT条件(几何的解释)对于凸优化,KKT条件的点就是其极值点(可行下降方向)。 设x∗x^*是非线性规划的局部最小点,目标函数f(x)f(x)在x∗x^*可微,约束方程(g(x))在x∗x^*处可微...
  • mijian1207mijian
  • mijian1207mijian
  • 2015年11月24日 03:03
  • 1346

对偶和KKT条件

对偶问题,KKT条件
  • Timingspace
  • Timingspace
  • 2016年03月23日 19:59
  • 7050

最优化理论与KKT条件

看着内容挺好的,转载一下 1. 最优化理论(Optimization Theory) 最优化理论是研究函数在给定一组约束条件下的最小值(或者最大值)的数学问题. 一般而言, 一个最...
  • loadstar_kun
  • loadstar_kun
  • 2014年05月09日 09:59
  • 34483

KKT条件介绍

KKT条件入门介绍 最近学习的时候用到了最优化理论,但是作为学渣的我是没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客,不算是全部原创,但是基础理论...
  • johnnyconstantine
  • johnnyconstantine
  • 2015年06月02日 21:49
  • 43397

解密SVM系列(一):关于拉格朗日乘子法和KKT条件

写在之前 支持向量机(SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧,号称最优秀的分类算法之一,以其简单的理论构造了复杂的算法,又以其简单的用法实现了复杂的问题,不得不说确实完美。 ...
  • on2way
  • on2way
  • 2015年08月17日 18:53
  • 25052

约束下的最优求解:拉格朗日乘数法和KKT条件

机器学习面对各种各样的求解极值或者最值问题 ,现在对常见的求解极值或者最值问题思路做一下理论上的梳理。最值问题简单了解最值问题  求最值是非常常见的问题,比如如何选择交通路线,最快地到达某地;如何用手...
  • yujianmin1990
  • yujianmin1990
  • 2015年09月16日 15:18
  • 7964

求约束条件下极值的拉格朗日乘子法

学过中学数学的都知道,对于无约束条件的函数求极值,主要利用导数求解法。 例如求解函数f(x,y)=x3-4x2+2xy-y2+1的极值。步骤如下: (1)求出f(x,y)的一阶偏导函数f’x(x,y)...
  • saltriver
  • saltriver
  • 2016年10月23日 13:29
  • 7231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:约束最优化问题求解:拉格朗日乘子法和KKT条件
举报原因:
原因补充:

(最多只允许输入30个字)