在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier)

和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式约束,可以应用KKT条件去求取。当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。KKT条件是拉格朗日乘子法的泛化。之前学习的时候,只知道直接应用两个方法,但是却不知道为什么拉格朗日乘子法(Lagrange

Multiplier) 和KKT条件能够起作用,为什么要这样去求取最优值呢?

本文将首先把什么是拉格朗日乘子法(Lagrange Multiplier)

和KKT条件叙述一下;然后开始分别谈谈为什么要这样求最优值。

一. 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件

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

(i) 无约束优化问题,可以写为:

min f(x);

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

min f(x),

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

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

min f(x),

s.t. g_i(x) <= 0; i =1, ..., n

h_j(x) = 0; j =1, ..., m

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

对于第(ii)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier)

,即把等式约束h_i(x)用一个系数与f(x)写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。

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

(a) 拉格朗日乘子法(Lagrange Multiplier)

对于等式约束,我们可以通过一个拉格朗日系数a 把等式约束和目标函数组合成为一个式子L(a, x) = f(x) +

a*h(x),

这里把a和h(x)视为向量形式,a是横向量,h(x)为列向量,之所以这么写,完全是因为csdn很难写数学公式,只能将就了.....。

然后求取最优值,可以通过对L(a,x)对各个参数求导取零,联立等式进行求取,这个在高等数学里面有讲,但是没有讲为什么这么做就可以,在后面,将简要介绍其思想。

(b) KKT条件

对于含有不等式约束的优化问题,如何求取最优值呢?常用的方法是KKT条件,同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子L(a,

b, x)= f(x) + a*g(x)+b*h(x),KKT条件是说最优值必须满足以下条件:

1. L(a, b, x)对x求导为零;

2. h(x) =0;

3. a*g(x) = 0;

求取这三个等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0.

这是SVM的很多重要性质的来源,如支持向量的概念。

二. 为什么拉格朗日乘子法(Lagrange Multiplier) 和KKT条件能够得到最优值?

为什么要这么求能得到最优值?先说拉格朗日乘子法,设想我们的目标函数z = f(x), x是向量,

z取不同的值,相当于可以投影在x构成的平面(曲面)上,即成为等高线,如下图,目标函数是f(x,

y),这里x是标量,虚线是等高线,现在假设我们的约束g(x)=0,x是向量,在x构成的平面或者曲面上是一条曲线,假设g(x)与等高线相交,交点就是同时满足等式约束条件和目标函数的可行域的值,但肯定不是最优值,因为相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值,如下图所示,即等高线和目标函数的曲线在该点的法向量必须有相同方向,所以最优值必须满足:f(x)的梯度

= a*

g(x)的梯度,a是常数,表示左右两边同向。这个等式就是L(a,x)对参数求导的结果。(上述描述,我不知道描述清楚没,如果与我物理位置很近的话,直接找我,我当面讲好理解一些,注:下图来自wiki)。

而KKT条件是满足强对偶条件的优化问题的必要条件,可以这样理解:我们要求min f(x), L(a, b, x) = f(x)

+ a*g(x) + b*h(x),a>=0,我们可以把f(x)写为:max_{a,b}

L(a,b,x),为什么呢?因为h(x)=0,

g(x)<=0,现在是取L(a,b,x)的最大值,a*g(x)是<=0,所以L(a,b,x)只有在a*g(x) =

0的情况下才能取得最大值,否则,就不满足约束条件,因此max_{a,b}

L(a,b,x)在满足约束条件的情况下就是f(x),因此我们的目标函数可以写为 min_x max_{a,b}

L(a,b,x)。如果用对偶表达式: max_{a,b} min_x

L(a,b,x),由于我们的优化是满足强对偶的(强对偶就是说对偶式子的最优值是等于原问题的最优值的),所以在取得最优值x0的条件下,它满足

f(x0) = max_{a,b} min_x L(a,b,x) = min_x max_{a,b} L(a,b,x)

=f(x0),我们来看看中间两个式子发生了什么事情:

f(x0) = max_{a,b} min_x L(a,b,x) = max_{a,b} min_x f(x)

+ a*g(x) + b*h(x) = max_{a,b} f(x0)+a*g(x0)+b*h(x0) =

f(x0)

可以看到上述加黑的地方本质上是说 min_x f(x) + a*g(x) + b*h(x)

在x0取得了最小值,用fermat定理,即是说对于函数 f(x) + a*g(x) + b*h(x),求取导数要等于零,即

f(x)的梯度+a*g(x)的梯度+ b*h(x)的梯度 = 0

这就是kkt条件中第一个条件:L(a, b, x)对x求导为零。

而之前说明过,a*g(x) =

0,这时kkt条件的第3个条件,当然已知的条件h(x)=0必须被满足,所有上述说明,满足强对偶条件的优化问题的最优值都必须满足KKT条件,即上述说明的三个条件。可以把KKT条件视为是拉格朗日乘子法的泛化。

转自:http://blog.csdn.net/xianlingmao/article/details/7919597

matlab拉格朗日kkt,深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件相关推荐

  1. 转 机器学习系列 08:深入理解拉格朗日乘子法、KKT 条件和拉格朗日对偶性

    深度理解拉格朗日乘子法.KKT条件与线性规划对偶理论的微妙关系 https://blog.csdn.net/benzhujie1245com/article/details/85270058?utm_ ...

  2. 如何理解拉格朗日乘子法?

    1 与原点的最短距离 假如有方程: 图像是这个样子滴: 现在我们想求其上的点与原点的最短距离: 这里介绍一种解题思路.首先,与原点距离为 的点全部在半径为 的圆上: 那么,我们逐渐扩大圆的半径: 显然 ...

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

    在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...

  4. 拉格朗日乘子法 (Lagrange multipliers)

    目录 约束最优化问题 等式约束的优化问题 二元函数 多元函数 不等式约束的优化问题 (KKT 条件) 推广到多个约束 拉格朗日对偶 (Dual Problem) 前置知识 inf\text{inf}i ...

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

    关于鞍点的定义可以参考论文 <鞍点定理在Lagrange乘数法上的应用> 下面这篇文章的重点是是提到了鞍点 在学习之前,先说一些题外话,由于博主学习模式识别没多久,所以可能对许多问题还没有 ...

  6. 拉格朗日乘子法(Lagrangian Multiplier Method)和KKT条件

    设目标函数f(x),不等式约束约束为g(x),等式约束为h(x),那么可以将优化问题描述如下 min⁡f(X)s.t.hj(X)=0j=1,2,...,pgk(X)≤0k=1,2,...q\begin ...

  7. 拉格朗日乘子法、KKT条件、拉格朗日对偶性

    拉格朗日乘子法.KKT条件.拉格朗日对偶性 转载于http://blog.csdn.net/sinat_17496535/article/details/52103852 笔记主要来源于维基百科和&l ...

  8. 数值计算之 拉格朗日乘子法初探

    数值计算之 拉格朗日乘子法初探 前言 等式约束优化 等式约束的几何解释 不等式约束优化 多约束优化 KKT条件 代码示例 前言 LM算法的置信域方法中,通过在优化函数后添加一个优化量约束来提升迭代过程 ...

  9. 【数学】拉格朗日乘子法(Lagrange Multiplier) 和KKT条件理解

    转载 目录 动机 简介 一. 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件 (a) 拉格朗日乘子法(Lagrange Multiplier) (b) KKT条件 二. 为什么 ...

  10. matlab增广拉格朗日,[Opt] 拉格朗日乘子法 | ADMM | Basis pursuit

    乘子法 本文先简要介绍三个乘子法,它们的收敛条件依次减弱(不做具体介绍),然后应用 ADMM 算法求解 Basis pursuit 问题最后读读 Boyd 给出的代码. Lagrange Multip ...

最新文章

  1. 泊松回归、gamma回归、Tweedie回归等广义线性回归模型GLM的评估指标:校准曲线、 洛伦兹曲线、卡方检验、AIC、BIC、偏差(Deviance)指标
  2. fun函数是什么php,c语言fun函数有什么例题?
  3. 解决python中文乱码的方法
  4. C++ socket编程
  5. flex 学习篇 ---- 导航类容器
  6. python 计时_Python time clock()方法
  7. java编程50_java经典50编程题(1-10)
  8. iOS开发日记56-详解UIImage
  9. Linux O(n)调度器
  10. 除了大家知道的navicat,再介绍两款免费的数据库连接工具
  11. 帆软连接kingbase8
  12. restlet client插件下载
  13. 相似度计算之(二)——余弦距离
  14. Linux 终端terminal设置透明化
  15. 新概念2 课文和单词(9)
  16. vivo手机html卸载不了,vivo手机怎么彻底卸载删除软件残留的垃圾文件呢
  17. Linux命令之文件内容分屏显示more
  18. ps -ef|grep tomcat是啥意思呢?(☆)
  19. 每日一题 | 曾被反转链表支配的恐惧
  20. Python手机号合法性判断(列表和正则)

热门文章

  1. nginx的介绍和安装
  2. pythonqq机器人酷q_基于python和酷Q的QQ机器人开发实践(1)
  3. python——algorithms模块
  4. php解析抖音视频链接,PHP抖音视频无水印解析接口
  5. 内核流浪猫流浪狗宠物领养平台H5源码
  6. html字体样式美化,css美化文字做法详解总结
  7. ui自动化模拟键盘按键
  8. 英语单词-每天10个
  9. 信息熵、相对熵与交叉熵
  10. java 淘口令_简单实现淘口令