最优化方法:拉格朗日乘数法

2016年08月18日 14:34:38 -柚子皮- 阅读数 31809更多

分类专栏: 机器学习MachineLearning Math

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/pipisorry/article/details/52135854

解决约束优化问题——拉格朗日乘数法

拉格朗日乘数法(Lagrange Multiplier Method)应用广泛,可以学习麻省理工学院的在线数学课程。

拉格朗日乘数法的基本思想

  作为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。

  如何将一个含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题?拉格朗日乘数法从数学意义入手,通过引入拉格朗日乘子建立极值条件,对n个变量分别求偏导对应了n个方程,然后加上k个约束条件(对应k个拉格朗日乘子)一起构成包含了(n+k)变量的(n+k)个方程的方程组问题,这样就能根据求方程组的方法对其进行求解。

  解决的问题模型为约束优化问题:

  min/max a function f(x,y,z), where x,y,z are not independent and g(x,y,z)=0.

  即:min/max f(x,y,z)

    s.t. g(x,y,z)=0

数学实例

  首先,我们先以麻省理工学院数学课程的一个实例来作为介绍拉格朗日乘数法的引子。

  【麻省理工学院数学课程实例】求双曲线xy=3上离远点最近的点。

  解:

  首先,我们根据问题的描述来提炼出问题对应的数学模型,即:

  min f(x,y)=x2+y2(两点之间的欧氏距离应该还要进行开方,但是这并不影响最终的结果,所以进行了简化,去掉了平方)

  s.t. xy=3.

  根据上式我们可以知道这是一个典型的约束优化问题,其实我们在解这个问题时最简单的解法就是通过约束条件将其中的一个变量用另外一个变量进行替换,然后代入优化的函数就可以求出极值。我们在这里为了引出拉格朗日乘数法,所以我们采用拉格朗日乘数法的思想进行求解。

  我们将x2+y2=c的曲线族画出来,如下图所示,当曲线族中的圆与xy=3曲线进行相切时,切点到原点的距离最短。也就是说,当f(x,y)=c的等高线和双曲线g(x,y)相切时,我们可以得到上述优化问题的一个极值(注意:如果不进一步计算,在这里我们并不知道是极大值还是极小值)。

  现在原问题可以转化为求当f(x,y)和g(x,y)相切时,x,y的值是多少?

  如果两个曲线相切,那么它们的切线相同,即法向量是相互平行的,▽f//▽g.

  由▽f//▽g可以得到,▽f=λ*▽g。

  这时,我们将原有的约束优化问题转化为了一种对偶的无约束的优化问题,如下所示:

  原问题:min f(x,y)=x2+y2              对偶问题:由▽f=λ*▽g得,

      s.t. xy=3                                       fx=λ*gx,

                                                                     fy=λ*gy,

xy=3.

约束优化问题                                   无约束方程组问题

  通过求解右边的方程组我们可以获取原问题的解,即

  2x=λ*y

  2y=λ*x

  xy=3

  通过求解上式可得,λ=2或者是-2;当λ=2时,(x,y)=(sqrt(3), sqrt(3))或者(-sqrt(3), -sqrt(3)),而当λ=-2时,无解。所以原问题的解为(x,y)=(sqrt(3), sqrt(3))或者(-sqrt(3), -sqrt(3))。

  通过举上述这个简单的例子就是为了体会拉格朗日乘数法的思想,即通过引入拉格朗日乘子(λ)将原来的约束优化问题转化为无约束的方程组问题。

皮皮blog

拉格朗日乘数法的基本形态

  求函数在满足下的条件极值,可以转化为函数的无条件极值问题。

  我们可以画图来辅助思考。

  绿线标出的是约束g(x,y)=c的点的轨迹。蓝线是f(x,y)的等高线。箭头表示斜率,和等高线的法线平行。

  从图上可以直观地看到在最优解处,f和g的斜率平行。

  ▽[f(x,y)+λ(g(x,y)−1)]=0, λ≠0

  一旦求出λ的值,将其套入下式,易求在无约束极值和极值所对应的点。

  F(x,y)=f(x,y)+λ(g(x,y)−c)

  新方程F(x,y)在达到极值时与f(x,y)相等,因为F(x,y)达到极值时g(x,y)−c总等于零。

  上述式子取得极小值时其导数为0,即▽f(x)+▽∑λigi(x)=0,也就是说f(x)和g(x)的梯度共线。

  题目1:

  给定椭球

  求这个椭球的内接长方体的最大体积。这个问题实际上就是条件极值问题,即在条件

  下,求的最大值。

  当然这个问题实际可以先根据条件消去,然后带入转化为无条件极值问题来处理。但是有时候这样做很困难,甚至是做不到的,这时候就需要用拉格朗日乘数法了。通过拉格朗日乘数法将问题转化为

  对求偏导得到

  联立前面三个方程得到,带入第四个方程解之

  带入解得最大体积为

  拉格朗日乘数法对一般多元函数在多个附加条件下的条件极值问题也适用。

  题目2:

  题目:求离散分布的最大熵。

  分析:因为离散分布的熵表示如下

而约束条件为

要求函数的最大值,根据拉格朗日乘数法,设

对所有的求偏导数,得到

计算出这个等式的微分,得到

这说明所有的都相等,最终解得

因此,使用均匀分布可得到最大熵的值。

皮皮blog

拉格朗日乘数法与KKT条件

  我们上述讨论的问题均为等式约束优化问题,但等式约束并不足以描述人们面临的问题,不等式约束比等式约束更为常见,大部分实际问题的约束都是不超过多少时间,不超过多少人力,不超过多少成本等等。所以有几个科学家拓展了拉格朗日乘数法,增加了KKT条件之后便可以用拉格朗日乘数法来求解不等式约束的优化问题了。

  首先,我们先介绍一下什么是KKT条件。

  KKT条件是指在满足一些有规则的条件下, 一个非线性规划(Nonlinear Programming)问题能有最优化解法的一个必要和充分条件. 这是一个广义化拉格朗日乘数的成果. 一般地, 一个最优化数学模型的列标准形式参考开头的式子, 所谓 Karush-Kuhn-Tucker 最优化条件,就是指上式的最优点x∗必须满足下面的条件:

  1). 约束条件满足gi(x∗)≤0,i=1,2,…,p, 以及,hj(x∗)=0,j=1,2,…,q

  2). ∇f(x∗)+∑i=1μi∇gi(x∗)+∑j=1λj∇hj(x∗)=0, 其中∇为梯度算子;

  3). λj≠0且不等式约束条件满足μi≥0,μigi(x∗)=0,i=1,2,…,p。

  KKT条件第一项是说最优点x∗必须满足所有等式及不等式限制条件, 也就是说最优点必须是一个可行解, 这一点自然是毋庸置疑的. 第二项表明在最优点x∗, ∇f必须是∇gi和∇hj的线性組合, μi和λj都叫作拉格朗日乘子. 所不同的是不等式限制条件有方向性, 所以每一个μi都必须大于或等于零, 而等式限制条件没有方向性,所以λj没有符号的限制, 其符号要视等式限制条件的写法而定.

  为了更容易理解,我们先举一个例子来说明一下KKT条件的由来。

  let L(x,μ)=f(x)+∑k=1μkgk(x),其中μk≥0,gk(x)≤0

  ∵μk≥0 gk(x)≤0  =>  μg(x)≤0

  ∴maxμL(x,μ)=f(x)                  (2)

  ∴minxf(x)=minxmaxμL(x,μ)     (3)

  maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)

  又∵μk≥0, gk(x)≤0

  

  ∴maxμminxμg(x)=0, 此时μ=0 or g(x)=0.

∴maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)      (4)

  此时μ=0 or g(x)=0.

联合(3),(4)我们得到minxmaxμL(x,μ)=maxμminxL(x,μ), 亦即

  

  minxmaxμL(x,μ)=maxμminxL(x,μ)=minxf(x)

  我们把maxμminxL(x,μ)称为原问题minxmaxμL(x,μ)的对偶问题,上式表明当满足一定条件时原问题、对偶的解、以及minxf(x)是相同的,且在最优解x∗处μ=0 or g(x∗)=0。把x∗代入(2)得maxμL(x∗,μ)=f(x∗),由(4)得maxμminxL(x,μ)=f(x∗),所以L(x∗,μ)=minxL(x,μ),这说明x∗也是L(x,μ)的极值点,即

  

  最后总结一下:

  

  KKT条件是拉格朗日乘子法的泛化,如果我们把等式约束和不等式约束一并纳入进来则表现为:

  

  注:x,λ,μ都是向量。

  

  表明f(x)在极值点x∗处的梯度是各个hi(x∗)和gk(x∗)梯度的线性组合。

[[Math & Algorithm] 拉格朗日乘数法]

皮皮blog

lagrange对偶性

[统计学习方法 附录C]

from: http://blog.csdn.net/pipisorry/article/details/52135854

ref:

转载于:https://www.cnblogs.com/rswss/p/11447742.html

最优化方法:拉格朗日乘数法(转)相关推荐

  1. 拉格朗日乘数法怎么判断极大极小_最优化方法:拉格朗日乘数法

    解决约束优化问题--拉格朗日乘数法 拉格朗日乘数法(Lagrange Multiplier Method)应用广泛,可以学习麻省理工学院的在线数学课程. 拉格朗日乘数法的基本思想 作为一种优化算法,拉 ...

  2. 最优化方法:拉格朗日乘数法

    http://blog.csdn.net/pipisorry/article/details/52135854 解决约束优化问题--拉格朗日乘数法 拉格朗日乘数法(Lagrange Multiplie ...

  3. 优化算法之梯度下降法、牛顿法、拟牛顿法和拉格朗日乘数法

      在机器学习中,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解最优化问题. - 无约束最优化问题:梯度下降法.牛顿法.拟牛顿法: - 有约束最优化问题:拉格朗 ...

  4. 约束规划——拉格朗日乘数法

    拉格朗日乘数法 拉格朗日乘数法的基本思想 拉格朗日乘数法(Lagrange Multiplier Method)是一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日 ...

  5. 拉格朗日乘数法的原理,我用10幅图把它讲清楚了

    机器学习是一个目标函数优化问题,给定目标函数f,约束条件会有一般包括以下三类: 仅含等式约束 仅含不等式约束 等式和不等式约束混合型 当然还有一类没有任何约束条件的最优化问题 关于最优化问题,大都令人 ...

  6. CodeForces - 813C The Tag Game(拉格朗日乘数法,限制条件求最值)

    [传送门]http://codeforces.com/problemset/problem/813/C [题意]给定整数a,b,c,s,求使得  xa yb zc值最大的实数 x,y,z , 其中x ...

  7. CodeChef TWOROADS(计算几何+拉格朗日乘数法)

    题面 传送门 简要题意:给出\(n\)个点,请求出两条直线,并最小化每个点到离它最近的那条直线的距离的平方和,\(n\leq 100\) orz Shinbokuow 前置芝士 给出\(n\)个点,请 ...

  8. 拉格朗日乘数法学习笔记

    对于一个多元函数\(f(x_1,x_2,x_3,..,x_n)\),如果它必须满足某一些限制\(g_i(x_1,x_2,x_3,...,x_n)=0\),我们可以使用拉格朗日乘数法来求它的最值 首先你 ...

  9. 拉格朗日乘数法(一种寻找变量受一个或多个条件所限制的多元函数的极值的方法)

    拉格朗日乘数法 在数学最优问题中,拉格朗日乘数法(以数学家约瑟夫·路易斯·拉格朗日命名)是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法.这种方法将一个有n 个变量与k 个约束条件的最优化问 ...

  10. BZOJ2876 [Noi2012]骑行川藏 【拉格朗日乘数法】

    题目链接 BZOJ 题解 拉格朗日乘数法 拉格朗日乘数法用以求多元函数在约束下的极值 我们设多元函数\(f(x_1,x_2,x_3,\dots,x_n)\) 以及限制\(g(x_1,x_2,x_3,\ ...

最新文章

  1. Android 图片(ImageView)设置透明的方法
  2. try...catch的方式处理多个异常
  3. 时间序列预测之二:灰色模型
  4. Failed to resolve: 之一
  5. 数字图像处理吴娱课后答案_数字图像处理课后题答案
  6. 未来计算机硬件的发展有可能使用的技术,未来计算机硬件的发展有可能使用的技术是______。...
  7. B站就服务器故障致歉:现已陆续恢复正常
  8. matlab 一元线性微分,怎样用matlab求一元线性函数极值
  9. 92 款中国风古风古韵中文字体美工古代书法字体打包下载
  10. PG修改表字段长度报错 cached plan must not change result type Hint: Please restore the result type
  11. NLP算法-情绪分析-snowNLP算法库
  12. vue开发完整企业购物商城集成支付宝和微信登陆支付3步实现登陆
  13. MySQL 8.0完美卸载(windows)
  14. VUE2.0 脚手架搭建项目,如何配置本地IP地址访问项目,详解
  15. php expecting,php – 解析错误:语法错误,意外的’.’,expecting’,’或’;’
  16. 2021年上半年软考真题及答案解析汇总
  17. 《快速掌握PyQt5》
  18. 读书笔记_006 《查令十字街84号》
  19. stm32 mbed 入门教程(一)---前期准备
  20. 201771010137 赵栋《面向对象程序设计(java)》第十八周学习总结

热门文章

  1. mysql 排查问题一些小技巧
  2. oracle11数据库导入,Oracle11g数据库之数据导入导出与事物
  3. 我和阿里的情缘和故事
  4. 怎么用计算机excel计算矩阵,怎样用EXCEL进行矩阵计算?
  5. c语言 头文件卫士详解,C 语言条件编译与防止头文件重复
  6. ubuntu安装maven_Linux操作系统下将项目发布到Maven中央仓库图文教程
  7. vivaldi浏览器_两款可以提升效率的网络浏览器
  8. docker镜像图[更新中]
  9. oracle rman在线备份,Oracle之RMAN备份及还原
  10. java 文件目录操作_Java---文件夹及文件操作