机器学习笔记——拉格朗日乘子法和KKT条件

  拉格朗日乘子法是一种寻找多元函数在一组约束下的极值方法,通过引入拉格朗日乘子,可将有m个变量和n个约束条件的最优化问题转化为具有m+n个变量的无约束优化问题。在介绍拉格朗日乘子法之前,先简要的介绍一些前置知识,然后就拉格朗日乘子法谈一下自己的理解。

一 前置知识

1.梯度

   梯度是一个与方向导数有关的概念,它是一个向量。在二元函数的情形,设函数f(x,y)在平面区域D内具有一阶连续偏导,则对于每一点P(x0,y0)∈D,都可以定义出一个向量:fx(x0,y0)i+fy(x0,y0)j ,称该向量为函数f(x,y)在点P(x0,y0)

的梯度。并记作grad f(x0,y0)
或者?f(x0,y0),即 grad f(x0,y0)
= ?f(x0,y0) = fx(x0,y0)i+fy(x0,y0)

  再来看看梯度和方向导数的关系:如果函数f(x,y)在P(x0,y0)点可微,e= (cosα,cosβ)是与方向L同向的单位向量,则?f/?L|(x0,y0) = fx(x0,y0)cosα+fy(x0,y0)cosβ = grad f(x0,y0).el =  |grad f(x0,y0)|.cosθ ,其中θ表示的梯度与e的夹角。由此可知,当θ = 0时,el 与梯度的方向相同时,此时方向导数最大,函数f(x,y)增长最快;当θ = π时,e与梯度的方向相反时,此时方向导数最小且为负,函数f(x,y)减小最快。

2.等高线(等值线)

  通常来说,二元函数 z = f(x,y)在几何上表示一个曲面,这个曲面被平面 z = c(c为常数)所截得的曲线L的方程为:

                                    

这是一条空间曲线,这条曲线L在xOy平面上的投影是一条平面曲线L*,它在xOy平面直角坐标系中的方程为:f(x,y) = c .对于曲线L*上的一切点,已给函数的函数值都是c,所以我们称平面曲线L*为函数z = f(x,y)的等值线(等高线)。再来看看等高线的一些性质:

  若fx,fy不同时为零,则等高线 f(x,y) = c上任一点P(x0,y0)处的一个单位法向量为:

                             

这表明函数f(x,y)在一点(x0,y0)的梯度?f(x0,y0)的方向就是等高线f(x,y) = c在这点的法向量的方向,而梯度的模|?f(x0,y0)|就是沿这个法线方向的方向导数?f/?n,于是有:

                                 

二 拉格朗日乘子法

1.等式约束

  首先看一下什么是拉格朗日乘子法,已知一个问题:

          

要求f(x,y)在g(x,y)=c的前提下的最小值,我们可以构造一个函数L(λ,x,y) = f(x,y) + λ(g(x,y) - c),其中λ(λ不等于0)称为拉格朗日乘子,而函数L(λ,x)称为拉格朗日函数。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。这就是拉格朗日乘子法。那么拉格朗日乘子法为什么是合理的?下面分别从几何和代数两方面解释下自己对其的一些见解:

(1)从几何的角度

先来看一幅图:

          

图中的虚线表示f(x,y)的等高线,如果满足g(x,y)=c这个约束,必然是等高线与g(x,y)=c这条曲线的交点;假设g(x)与等高线相交,交点就是同时满足等式约束条件和目标函数的可行域的值,但并不是最优值,因为相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,才可能取得最优值。假设该切点为P(x0,y0),则f(x,y)在p点的梯度必然垂直于其在该点处的法向量(前面已经说过),又由于p点是曲线g(x,y)=c的切点,故曲线在p点的法向量平行于等高线在p点法向量(也可以看做两条曲线在该点有相同的法向量),故g(x,y)=c的梯度必然也垂直于它在p点的法向量。所以最优值必须满足:?f(x,y) = λ* ?(g(x)-c),λ是常数且不等于0,表示左右两边平行。这个等式就是L(λ,x)对参数分别求偏导的结果,即:

                                

  也就是说满足?f(x,y) = λ* ?(g(x)-c)的点必然是式子min L(λ,x) = f(x,y) + λ(g(x,y) - c)的解,所以min L(λ,x) = f(x,y) + λ(g(x,y) - c)这个式子与原问题是等价的(可以先简单的认为g(x,y) - c = 0造成的)。

(2)从代数的角度

  先来看一下z = f(x,y)在条件g(x,y) = c下取得极值的必要条件。

如果z=f(x,y)在(x0.y0)处取得所求的极值,那么有 g(x0,y0) = c,假定在(x0,y0)的某一领域内f(x,y)与g(x,y) = c均有一阶段连续偏导(对于凸函数很显然是成立的)并且gy(x0,y0)≠0.由隐函数的存在定理可知方程g(x,y)=c能够确定一个连续且具有连续偏导的函数y = μ(x),将其带入z= f(x,y)中可以得到一个变量x的函数:z = f[x,μ(x)].

  于是z=f(x,y)在x=x0处取得极值,相当于z = f[x,μ(x)]在x=x0处取得极值,又由一元可导函数取得极值的必要条件可知:

                                  

而又由y = μ(x)用隐函数求导公式,有

                                    

                                    

将以上两式结合可得,

                                    

上式与g(x0,y0)=c 就是函数z=f(x,y)在g(x,y)=c的条件下取得极值的必要条件。如果令:

                                       

上述的必要条件就变为

                                  

同从几何角度推出的结论一致。

  综上所述,对于问题

            

(x可以为一个矢量,也可以为一个标量)

等价于求 

              

  三  KKT条件

    

1.关于不等式约束             

  上述问题中讲述的都是约束条件为等式的情况,对于约束条件为不等式的情况,通常引入KKT条件(在不等式约束下,函数求极值的必要条件)来解决,具体如下:

对于问题

            

我们也引入拉格朗日函数

            

其中μj≥0。

再看一个关于x的函数:

              

而实际上F(x)可以看做是f(x)的另一种表达形式;由于hi(x)=0,所以拉格朗日函数中的第二项为0;又由于gj(x) ≤ 0且μj ≥ 0,所以μjgj(X) ≤ 0,所以只有μjgj(X) = 0时L取到最大值;因此F(x)在满足约束条件时就是f(x)。由此,目标函数可以表述为如下的形式:

              

我们称这个式子为原问题。并定义原问题的最优值为P*

然后再看关于λ和μ的一个式子:

              

考虑该式子的极大化:

              

我们称这个式子为原问题的对偶问题。并定义对偶问题的最优值为d*

(关于拉格朗日的对偶性,可参考李航《统计学习方法》中的附录部分,或者参考博客:http://blog.pluskid.org/?p=702)

关于对偶性问题,通常分为弱对偶性强对偶性:

(1)考虑到原问题和对偶问题的最优值P*d*如果d* ≤  P*则称“弱对偶性”成立。

(2)如果d*  P*则称“强对偶性”成立。

通常情况下,强对偶性并不成立;但是当原问题和对偶问题满足以下条件时,则满足强对偶性。

(1)f(x)和gj(x)是凸函数。

(2)hi(x)是仿射函数。

(3)不等式约束gj(x)是严格可行的,即存在x,对所有j有gj(x) < 0 。

以上三个条件也称为Slater条件。如果满足Slater条件,即原问题和对偶问题满足强对偶性,则x*和λ*μ*分别为原问题和对偶问题的最优解的充要条件是x0和λ0、μ0满足下面的条件:

                    

                    

                    

             

             

以上五个条件就是所谓的Karush-Kuhn-Tucher(KKT)条件。下面是关于这几个条件的简单阐述:

对于第一个条件,由于原问题和对偶问题满足强对偶性,所以

即关于x的函数:

在x*处取到了极值,由费马引理可知,该函数在x*处的偏导数为0,即:

也就是条件(1)。该式子说明f(x)在极值点x*处的梯度是各个hi(x*)和gj(x*)的线性组合。

对于第二个条件,时在定义拉格朗日函数时的约束条件。

对于第三个条件,在定义F(x)时就已经体现了,由于:

因为μjgj(x)≤0,要使得L最大,只有μjgj(x) = 0时满足。所以产生了第三个条件。

对于第四、五个条件,是原问题的自带的约束条件。

当原问题和对偶问题不满足强对偶性时,KKT条件是使一组解成为最优解的必要条件,即在不等式约束下,函数求极值的必要条件。可以把KKT条件看成是拉格朗日乘子法的泛化。

               

时间: 2024-08-04 22:21:50

机器学习笔记——拉格朗日乘子法和KKT条件的相关文章

关于拉格朗日乘子法和KKT条件

解密SVM系列(一):关于拉格朗日乘子法和KKT条件 标签: svm算法支持向量机 2015-08-17 18:53 1214人阅读 评论(0) 收藏 举报  分类: 模式识别&机器学习(42)  版权声明:本文为博主原创文章,未经博主允许不得转载. 原文链接 :http://blog.csdn.net/on2way/article/details/47729419 写在之前 支持向量机(SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧,号称最优秀的分类算法之一,以其简单的理论构造了复

拉格朗日乘子法和KKT条件

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件.前提是:只有当目标函数为凸函数时,使用这两种方法才保证求得的是最优解. 对于无约束最优化问题,有很多经典的求解方法,参见无约束最优化方法. 拉格朗日乘子法 先来看拉格朗日乘子法是什么,再讲为什么. $\min\;f(x)\\s.t.\;h_{i}(x)=0\;\;\;\;i=1,2...,n$ 这

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

写在之前 支持向量机(SVM),一个神秘而众知的名字,在其出来就受到了莫大的追捧,号称最优秀的分类算法之一,以其简单的理论构造了复杂的算法,又以其简单的用法实现了复杂的问题,不得不说确实完美. 本系列旨在以基础化的过程,实例化的形式一探SVM的究竟.曾经也只用过集成化的SVM软件包,效果确实好.因为众人皆说原理复杂就对其原理却没怎么研究,最近经过一段时间的研究感觉其原理还是可以理解,这里希望以一个从懵懂到略微熟知的角度记录一下学习的过程. 其实网络上讲SVM算法的多不胜数,博客中也有许多大师级博

猪猪的机器学习笔记(十八)条件随机场

条件随机场 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十八次课在线笔记.条件随机场是一种判别式概率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列. 引言: “条件随机场”被用于中文分词和词性标注等词法分析工作,一般序列分类模型常常采用隐马尔科夫模型(HMM),像基于类的中文分词.但隐马尔可夫模型中存在两个假设:输出独立性假设和马尔可夫性假设.其中,输出独立性假设要求序列数据严格相互独立才能保证推导的正确性,而事实上大多数序列数据不能

【机器学习之数学】03 有约束的非线性优化问题——拉格朗日乘子法、KKT条件、投影法

目录 将有约束问题转化为无约束问题 拉格朗日法 KKT条件 拉格朗日法更新方程 凸优化问题下的拉格朗日法 罚函数法 对梯度算法进行修改,使其运用在有约束条件下 投影法 梯度下降法 to 投影梯度法 正交投影算子 References 相关博客 梯度下降法.最速下降法.牛顿法等迭代求解方法,都是在无约束的条件下使用的,而在有约束的问题中,直接使用这些梯度方法会有问题,如更新后的值不满足约束条件. 那么问题来了,如何处理有约束的优化问题?大致可以分为以下两种方式: 将有约束的问题转化为无约束的问题,

拉格朗日乘数法与KKT条件

关于拉格朗日乘数法和KKT条件的一些思考 从我开始接触拉格朗日乘数法到现在已经将近有四个月了,但似乎直到今天我对其的理解才开始渐渐清晰,相信很多人在科研初期也会对一些基础的算法困惑不解,而一篇好的教程则可以大大缩短困惑的时间,从而把更多时间用在开创性的工作上去.经过近几日的搜索,我发现网上还是有一些说明是很不错得,英文较好的同学可以直接去阅读Hugo的介绍(http://www.onmyphd.com/?p=lagrange.multipliers).下面是我近几日学下来的一些见解,看下来如果有

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

拉格朗日乘子法:对于等式约束的优化问题,求取最优值. KKT条件:对于含有不等式约束的优化问题,求取最优值. 最优化问题分类: (1)无约束优化问题: 常常使用Fermat定理,即求取的导数,然后令其为零,可求得候选最优值. (2)有等式约束的优化问题:, 使用拉格朗日乘子法,把等式约束用一个系数与写为一个式子,称为拉格朗日函数.再通过对各个参数求取导数,联立等式进行求取最优值. (3)有不等式约束的优化问题.,,. 把所有的不等式约束.等式约束和目标函数全部写为一个式子:. KKT条件的最优值

关于拉格朗日乘子法与KKT条件

关于拉格朗日乘子法与KKT条件 关于拉格朗日乘子法与KKT条件 目录 拉格朗日乘子法的数学基础 共轭函数 拉格朗日函数 拉格朗日对偶函数 目标函数最优值的下界 拉格朗日对偶函数与共轭函数的联系 拉格朗日对偶问题 如何显式的表述拉格朗日对偶问题 由定义消去下确界 隐式求解约束 共轭函数法 弱对偶 强对偶 原始问题与对偶问题的关系 最优条件 互补松弛条件 KKT条件 一般问题的KKT条件 凸问题的KKT条件 KKT条件的用途 拉格朗日乘数法的形象化解读 等式约束的拉格朗日乘子法 含有不等约束的情况

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

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