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

  拉格朗日乘数法(Lagrange Multiplier Method)以前听数学老师授课的时候就是只知其一;不知其二,如今愈加感受拉格朗日乘数法应用的普遍性,因此特地抽时间学习了麻省理工学院的在线数学课程。新学到的知识必定要马上记录下来,但愿对各位博友有些许帮助。算法

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

  做为一种优化算法,拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是经过引入拉格朗日乘子来将含有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.atom

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

    s.t. g(x,y,z)=03d

2. 数学实例

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

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

  解:数学

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

  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))。

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

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

   求函数在知足下的条件极值,能够转化为函数的无条件极值问题。

  咱们能够画图来辅助思考。

  绿线标出的是约束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:

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

  分析:由于离散分布的熵表示以下

     

     而约束条件为

     

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

     

     对全部的求偏导数,获得

     

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

     

     这说明全部的都相等,最终解得

     

     所以,使用均匀分布可获得最大熵的值。

4. 拉格朗日乘数法与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条件的由来。

  leL(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)
  此时μ=og(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)梯度的线性组合。

相关文章
相关标签/搜索