深入理解拉格朗日乘子法_第1页
深入理解拉格朗日乘子法_第2页
深入理解拉格朗日乘子法_第3页
深入理解拉格朗日乘子法_第4页
深入理解拉格朗日乘子法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、本文将首先把什么是拉格朗日乘子法(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对于第(

3、i)类的优化问题,常常使用的方法就是Fermat定理,即使用求取f(x)的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。对于第(ii)类的优化问题,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束h_i(x)用一个系数与f(x)写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。对于第(iii)类的优化问题,常常使用的方法就是KKT条件。同样地,我们把所有的等式、不等式约束与f(x)写为一个式子,也叫拉格朗日函数,系数也

4、称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为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条件对于含有不等式约束的优化问题,

5、如何求取最优值呢?常用的方法是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,我们可以把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的情况下才能取得最大

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

7、 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必须被满足,所有上述说明,满足强对偶条件的优化问题

8、的最优值都必须满足KKT条件,即上述说明的三个条件。可以把KKT条件视为是拉格朗日乘子法的泛化。梯度、Hessian矩阵、平面方程的法线以及函数导数的含义 想必单独论及“ 梯度、Hessian矩阵、平面方程的法线以及函数导数”等四个基本概念的时候,绝大部分人都能够很容易地谈个一二三,基本没有问题。其实在应用的时候,这几个概念经常被混淆,本文试图把这几个概念之间的关系整理一下,以便应用之时得心应手。这四个概念中,Hessian矩阵是最不容易混淆,但却是很多人难以记住的概念,其它三个概念很容易记住,但却在某些时候很容易混淆。 Hessian矩阵:设有凸函数f(X),X是向量(x1,x2,., xn

9、),Hessian矩阵M定义为:M的第i行,第j列元素为df(X)/dxidxj, 即为f(X)对于变量xi和xj的二次偏导数。 梯度:设有凸函数f(X),X是向量(x1,x2,., xn),函数f(X)在点X0处的梯度是一个向量,等于(df(X0)/dx1, df(X0)/dx2, ., df(X0)/dxn), 即是对于各个变量的偏导数的向量。例子:如果方程是z=f(x,y),梯度是在XOY平面内的一个向量,与z无关。因此要特别注意梯度不是点(X,f(X)处的切线方向。 平面方程的法线:设平面方程Ax+By+Cz+D = 0,向量(A, B, C)为这个平面的法线方向。 函数导数:二维直线

10、的方程y= kx+b,我们说k是直线的斜率;二维曲线y=f(x)的导数f (x)表示在点x处的切线的斜率,注意是切线的斜率,不是切线的方向,它是标量,不是向量。任意曲线y=f(x1,x2,.xn),对每一个变量求取偏导数,得到一个向量(df(X)/dx1, df(X)/dx2, ., df(X)/dxn),这个向量就是函数在点X处的梯度,即梯度是表示曲线f(X)在X处变化最剧烈的方向,特别注意梯度并不是在点(X, f(X)处的切线方向, 梯度只是在点(X, f(X)处的切线方向在X构成的“平面”上的投影。注意,对于二维直线y=kx+b,它也是可以求取梯度的,它的梯度是向量(k),只有一个值,表

11、示的是x方向上的向量,大小是x方向上的单位变化导致y变化量的大小,即就是切线的斜率。一个问题,我们把二维直线方程y=-kx-b写为平面方程的形式,kx + y+b = 0,这个时候怎么理解?我们可以理解为把y=-kx-b这条直线往z轴的两个方向拉伸得到的平面,就是kx+y+b=0。那么这个平面方程的法线就是(k, 1, 0),这个法线向量与平面kx+y+b=0垂直,这个时候如果我们用XOY平面去与这个平面相交,即令z=0,就表示直线y=-kx-b,因此法线(k,1)是与直线垂直的。注意y=-kx -b的导数的含义:(-k)表示的是x轴方向的梯度,值为直线的斜率。一定要注意平面方程的形式与其它三个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论