注:目前开通个人网站朝思录,之后的博文将在上面更新,CSDN博客会滞后一点


主要介绍经典拉格朗日乘子法的原理,之后讨论该方法中出现的参数 λ \lambda λ的意义

拉格朗日乘子法的数学原理

经典拉格朗日乘子法是下面的优化问题(注: x \boldsymbol x x是一个向量):
(1) min ⁡ x f ( x ) s . t . g ( x ) = 0 \begin{matrix}\min_{\boldsymbol x} f(\boldsymbol x)\\[2ex]s.t. g(\boldsymbol x)=0\end{matrix} \tag{1} minx​f(x)s.t.g(x)=0​(1)

直观上理解,最优解 x o p t i m a l \boldsymbol x_{optimal} xoptimal​一定有这样的性质,以 x \boldsymbol x x是二维变量为例:(网上下的图。为了符合行文风格,这里的 g ( x , y ) = c g(x,y)=c g(x,y)=c应为 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0)

这里采用等高线方式描述 f ( x , y ) f(x,y) f(x,y)(对方程 f ( x , y ) = d f(x,y)=d f(x,y)=d对不同 d d d绘图),并绘制约束条件 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0的曲线。可见,当 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0与 f ( x , y ) f(x,y) f(x,y)的某条等高线相切时,可取得最优解。

“当 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0与 f ( x , y ) f(x,y) f(x,y)的某条等高线相切”,是取得最优解的充要条件(前提是 f ( x , y ) f(x,y) f(x,y)是凸函数),该条件可拆分成两部分:

  1. g ( x , y ) g(x,y) g(x,y)与 f ( x , y ) f(x,y) f(x,y)的某条等高线相切
  2. g ( x , y ) = 0 g(x,y)=0 g(x,y)=0

因为 g ( x , y ) g(x,y) g(x,y)与 f ( x , y ) f(x,y) f(x,y)的某条等高线相切,可等价于寻找使这两个函数梯度方向共线的点,所以上述条件可用方程组描述如下所示:
(2) { ∇ f ( x ) = λ ∇ g ( x ) g ( x ) = 0 \begin{aligned} \begin{cases} \nabla f(\boldsymbol x) = \lambda\nabla g(\boldsymbol x)\\[2ex] g(\boldsymbol x)=0 \end{cases} \end{aligned} \tag{2} ⎩⎨⎧​∇f(x)=λ∇g(x)g(x)=0​​(2)
这时引入拉格朗日函数:
(3) L ( x , λ ) = f ( x ) + λ g ( x ) L(\boldsymbol x,\lambda) = f(\boldsymbol x)+\lambda g(\boldsymbol x) \tag{3} L(x,λ)=f(x)+λg(x)(3)
该函数有这样的特性:
(4) { ∇ x L ( x , λ ) = ∇ x f ( x ) + λ ∇ x g ( x ) ∇ λ L ( x , λ ) = g ( x ) \begin{aligned} \begin{cases} \nabla_\boldsymbol xL(\boldsymbol x,\lambda)=\nabla_\boldsymbol x f(\boldsymbol x)+\lambda\nabla_\boldsymbol x g(\boldsymbol x)\\[2ex] \nabla_\lambda L(\boldsymbol x,\lambda) = g(\boldsymbol x) \end{cases} \end{aligned} \tag{4} ⎩⎨⎧​∇x​L(x,λ)=∇x​f(x)+λ∇x​g(x)∇λ​L(x,λ)=g(x)​​(4)
即若令拉格朗日函数的梯度为零,即 ( 4 ) (4) (4)式为零,即可得到方程 ( 2 ) (2) (2),虽然 λ \lambda λ有所出入但不影响。

系数 λ \lambda λ的作用

另外讨论一下 ( 3 ) (3) (3)式中 λ \lambda λ的意义:

由 ( 2 ) (2) (2)式可以看出, λ \lambda λ在共线的基础上描述了目标函数和约束函数的梯度的长度比值。当然若以 ( 4 ) (4) (4)为基准, ( 2 ) (2) (2)式第一项应写为 ∇ f ( x ) = − λ ∇ g ( x ) \nabla f(\boldsymbol x) = -\lambda\nabla g(\boldsymbol x) ∇f(x)=−λ∇g(x),我们对该等式两边取绝对值如下,以消除正负号可能对读者带来的困扰。
(5) ∣ λ ∣ = ∣ ∇ f ( x ) ∇ g ( x ) ∣ |\lambda|=|\frac{\nabla f(\boldsymbol x)}{\nabla g(\boldsymbol x)}| \tag{5} ∣λ∣=∣∇g(x)∇f(x)​∣(5)
可以发现,当 ∣ λ ∣ |\lambda| ∣λ∣越小, ∇ g ( x ) \nabla g(\boldsymbol x) ∇g(x)的模就越大于 ∇ f ( x ) \nabla f(\boldsymbol x) ∇f(x)。极端情况下, ∣ λ → 0 ∣ |\lambda\to0| ∣λ→0∣,此时 ∣ ∇ g ( x ) ∣ → ∞ |\nabla g(\boldsymbol x) |\to \infty ∣∇g(x)∣→∞。这意味着在 x \boldsymbol x x点, g ( x ) g(\boldsymbol x) g(x)几乎是垂直的,对增量非常敏感:当最优值不小心变一点点,条件 g ( x ) = 0 g(\boldsymbol x)=0 g(x)=0将严重偏离;若 ∣ λ ∣ |\lambda| ∣λ∣很大, g ( x ) g(\boldsymbol x) g(x)几乎是水平的,则其对增量不敏感(若 g ( x ) g(\boldsymbol x) g(x)的轻微偏离不会造成太大的损失,可以适当牺牲约束条件的精确性,来换取更优的解)。

换句话说, ∣ λ ∣ |\lambda| ∣λ∣越小,其求得的结果灵敏度越高,反之越低;可以说 ∣ λ ∣ |\lambda| ∣λ∣是衡量最优解灵敏度的一种方法。(当然也可以直接求 ∇ g ( x ) \nabla g(\boldsymbol x) ∇g(x)来衡量灵敏度,这样更绝对一点)

拉格朗日乘子法(Lagrange Multiplier)详解以及乘子lambda的意义相关推荐

  1. python2.7除法_对python中的float除法和整除法的实例详解

    从python2.2开始,便有两种除法运算符:"/"."//".两者最大区别在: python2.2前的版本和python2.2以后3.0以前的版本的默认情况下 ...

  2. java二分查找法_java算法之二分查找法的实例详解

    java算法之二分查找法的实例详解 原理 假定查找范围为一个有序数组(如升序排列),要从中查找某一元素,如果该元素在此数组中,则返回其索引,否则返回-1.通过数组长度可取出中间位置元素的索引,将其值与 ...

  3. 拉格朗日乘子法 (Lagrange multipliers)

    目录 约束最优化问题 等式约束的优化问题 二元函数 多元函数 不等式约束的优化问题 (KKT 条件) 推广到多个约束 拉格朗日对偶 (Dual Problem) 前置知识 inf\text{inf}i ...

  4. 拉格朗日乘数法(Lagrange multiplier)

    先摆公式,再说推导. 求二元函数z=f(x,y)z=f(x,y)z=f(x,y)在条件φ(x,y)=0\varphi(x,y)=0φ(x,y)=0下的极值. (1)作Lagrange函数 F(x,y, ...

  5. Unity动画系统详解10:子状态机是什么?

    摘要:除了使用Layer还有没有更好的组织状态的方式呢?感觉一个Layer里面状态多的时候,还是很显得很乱. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是复(yu)习( ...

  6. 强联通分量算法的个人详解Tarjan算法(包含缩点)

    有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected) ...

  7. flash遍历子元件_Flash编程-详解循环语句

    本文关键字:FLASH循环语句 在Flash的程序编制过程中,经常会出现一些重复语句需要在一起执行或者某些类似属性需要一气控制等情况.这时就需要利用循环控制语句来解决问题.本教程我将通过实例的方式给大 ...

  8. java lambda表达式详解_Java8新特性Lambda表达式详解

    课程目标: 通过本课程的学习,详细掌握Java8新特性之Lambda表达式: 适用人群:有Java基础的开发人员: 课程概述:从Java 8出现以来lambda是最重要的特性之一,它可以让我们用简洁流 ...

  9. 拉格朗日乘子法(Lagrangian Multiplier Method)和KKT条件

    设目标函数f(x),不等式约束约束为g(x),等式约束为h(x),那么可以将优化问题描述如下 min⁡f(X)s.t.hj(X)=0j=1,2,...,pgk(X)≤0k=1,2,...q\begin ...

最新文章

  1. 自动刷新某个指定网页
  2. fsl线性配准实践+核磁共振影像数据处理
  3. Reactjs 踏坑指南3:一些例子(未完成)
  4. linux测试nvme性能,使用Python测试NVMe吞吐量
  5. 【Linux 内核】Linux 内核源码目录说明 ① ( arch 目录 | block 目录 | certs 目录 | crypto 目录 | Documentation 目录 )
  6. 2018及以后的热门网络技巧
  7. matlab 水平投影,科学网—Matlab中如何将投影信息写入到shape文件中 - 朱永超的博文...
  8. java分页封装到dao层,Node Dao层的封装与分页
  9. win11怎么快速返回桌面 windows11快捷键返回桌面的设置方法
  10. sql 差值_sql面试题重点(持续更新中。。。)
  11. POJ3258River Hopscotch(二分)
  12. 超级详细的手把手教你使用Lighthouse更好推动项目性能优化,性能指标详解,优化方法,需要关注指标分析
  13. leetcode69. x 的平方根
  14. 微信公众号获取openid流程
  15. python定义函数及调用函数
  16. ubuntu 20.04.1安装Google输入法
  17. XAMPP升级PHP版本的步骤
  18. [BUGKU] [MISC]旋转跳跃
  19. SSO场景系列:实现Microsoft AD到阿里云的单点登录
  20. Android实现自动点击 - 无障碍服务

热门文章

  1. Ubuntu安装nvm
  2. 前端自学第四天-总结
  3. 上海大学保研夏令营计算机,2019年上海大学计算机学院保研情况
  4. 传递Bitmap + 图片压缩处理 并保存 + 壁纸设置 总结
  5. C++STL4种关联容器(set、multiset、map和multimap)
  6. InvalidDefinitionException
  7. 编写电话号码查询系统
  8. 01-复杂度2 Maximum Subsequence Sum (25分)(数据结构)(C语言实现)
  9. nginx多域名配置
  10. python建立数据库连接时出错_python连接数据库