0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

拉格朗日乘子法和KKT条件的定义及选取原因

h1654155971.7688 2017-12-08 14:50 次阅读

拉格朗日乘子法无疑是最优化理论中最重要的一个方法。但是现在网上并没有很好的完整介绍整个方法的文章。所以小编整理了如下文章,希望能博得大家一赞。

在求取有约束条件的优化问题时,拉格朗日乘子法(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, ..., nh_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)对参数求导的结果。

而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_xf(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条件视为是拉格朗日乘子法的泛化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8406

    浏览量

    132563

原文标题:机器学习基础 深入理解拉格朗日乘子法

文章出处:【微信号:weixin21ic,微信公众号:21ic电子网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器学习基础|深入理解拉格朗日乘子

    (Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子去求取最优值;如果含有不等式约束,可以应用
    发表于 12-13 20:25

    条件编译是先判断变量是否被宏定义

    条件编译不是先判断变量是否被宏定义,然后再执行下面的语句,为什么这段程序的 __STM32F10x_IT_H 是先条件编译再宏定义??
    发表于 11-28 08:55

    如何利用文件名来定义case结构的条件

    如何通过读取文件名来定义case结构的条件呢?比如有a,b,c三个文件,读取他们的文件名分别为a,b,c,然后作为case结构的条件输出结果,条件为a输出1,
    发表于 05-16 11:44

    拉格朗日乘子KKT条件相关知识概述

    拉格朗日乘子KKT条件
    发表于 07-03 11:02

    浅析KKT条件

    SVM(1) 之 拉格朗日乘子KKT条件
    发表于 09-02 14:35

    基于预条件共轭梯度的混凝土层析成像

    根据常规图像重建的共轭梯度迭代算法,提出一种预条件共轭梯度。用一种新的预条件子M来改善系数矩阵的条件数,结合一般的共轭梯度,导出预
    发表于 04-10 09:08 16次下载

    如何搞定机器学习中的拉格朗日?看看这个乘子KKT条件大招

    一 前置知识 拉格朗日乘子是一种寻找多元函数在一组约束下的极值方法,通过引入拉格朗日乘子,可将有m个变量和n个约束条件的最优化问题转化为具有m+n个变量的无约束优化问题。在介绍
    发表于 12-06 11:25 0次下载
    如何搞定机器学习中的拉格朗日?看看这个乘子<b class='flag-5'>法</b>与<b class='flag-5'>KKT</b><b class='flag-5'>条件</b>大招

    基于KKT和SVM算法的云架构入侵检测系统

    )入侵检测系统。将客户端抓取的数据包经过预处理生成样本空间,然后发送至云端使用KS-ISVM进行建模分析,利用KKT条件对增量样本进行筛选,选取违反KKT
    发表于 01-02 14:55 0次下载
    基于<b class='flag-5'>KKT</b>和SVM算法的云架构入侵检测系统

    区间联络线选取方法

    电网分区后合理确定区间联络线的选取对于抑制短路电流、合理化电网结构、避免连锁故障的发生具有重要意义。为此,研究了一种基于相对熵组合赋权的区间联络线选取评估方法。该评估方法选取短路电流
    发表于 02-28 11:28 0次下载
    区间联络线<b class='flag-5'>选取</b>方法

    串联谐振电路的定义条件和特点及应用与选择说明

    本文档的主要内容详细介绍的是串联谐振电路的定义条件和特点及应用与选择说明。
    发表于 09-30 08:00 3次下载
    串联谐振电路的<b class='flag-5'>定义</b><b class='flag-5'>条件</b>和特点及应用与选择说明

    机器学习笔记之优化-拉格朗日乘子和对偶分解

    优化是机器学习中的关键步骤。在这个机器学习系列中,我们将简要介绍优化问题,然后探讨两种特定的优化方法,即拉格朗日乘子和对偶分解。这两种方法在机器学习、强化学习和图模型中非常流行。
    的头像 发表于 05-30 16:47 1891次阅读
    机器学习笔记之优化-<b class='flag-5'>拉格朗日乘子</b><b class='flag-5'>法</b>和对偶分解

    热电偶产生热电势的原因条件

    热电偶产生热电势的原因条件是基于塞贝克效应,这是热电偶工作的基本原理。
    的头像 发表于 05-08 16:28 2940次阅读

    电力电容器电压等级的选取条件

    电力电容器的电压等级选取是一个关键的设计步骤,直接影响到电力系统的可靠性和经济性。选取合适的电压等级需要考虑以下几个条件: 1、系统电压:电容器的额定电压应与其所连接的电力系统电压相匹配。通常
    的头像 发表于 07-10 14:12 723次阅读

    节点电压和回路电流选取原则

    节点电压和回路电流是电路分析中两种常用的方法。它们各有优缺点,适用于不同的电路类型和分析需求,它们的选择原则主要基于电路的特性和求解的便利性。以下是对这两种方法选取原则的介绍: 节点电压
    的头像 发表于 08-09 17:22 1759次阅读

    外接电阻测等效电阻的适用条件

    外接电阻测等效电阻是一种在电路分析中常用的测量方法,它主要用于测量电路中各个元件的等效电阻值。这种方法的适用条件和步骤需要详细说明,以便更好地理解和应用。 外接电阻测等效电阻的适用条件
    的头像 发表于 09-29 11:01 496次阅读