@[转载]拉格朗日乘子法如何理解?

链接:https://www.zhihu.com/question/38586401/answer/105273125

拉格朗日乘数法(Lagrange multiplier)有很直观的几何意义。举个2维的例子来说明:假设有自变量x和yx和yx和y,给定约束条件g(x,y)=g(x,y)=g(x,y)=c,要求f(x,y)f(x,y)f(x,y)在约束ggg下的极值。我们可以画出fff的等高线图,如下图。此时,约束g=cg=cg=c由于只有一个自由度,因此也是图中的一条曲线(红色曲线所示)。显然地,当约束曲线g=cg=cg=c与某一条等高线f=d1f=d1f=d1相切时,函数fff取得极值。两曲线相切等价于两曲线在切点处拥有共线的法向量。因此可得函数f(x,y)f(x,y)f(x,y)与g(x,y)g(x,y)g(x,y)在切点处的梯度(gradient)成正比。于是我们便可以列出方程组求解切点的坐标(x,y)(x,y)(x,y),进而得到函数fff的极值。

1 与原点的最短距离

假如有方程: x2y=3x^2y=3x2y=3

图像是这个样子滴:

现在我们想求其上的点与原点的最短距离:

这里介绍一种解题思路。首先,与原点距离为a 的点全部在半径为a 的圆上:

那么,我们逐渐扩大圆的半径:

显然,第一次与x2y=3x^2y=3x2y=3 相交的点就是距离原点最近的点:


此时,圆和曲线相切,也就是在该点切线相同:

至此,我们分析出了:
在极值点,圆与曲线相切在极值点,圆与曲线相切在极值点,圆与曲线相切

2 等高线

为了继续解题,需要引入等高线。这些同心圆:


可以看作函数f(x,y)=x2+y2f(x,y)=x^2 + y^2f(x,y)=x2+y2 的等高线:

根据梯度的性质(关于梯度可以查看如何通俗地理解梯度?),梯度向量:

是等高线的法线:

另外一个函数g(x,y)=x2yg(x,y)=x^2yg(x,y)=x2y 的等高线为:

之前的曲线x2y=3x^2y=3x2y=3 就是其中值为3的等高线:

因此,梯度向量:

也垂直于等高线x2y=3x^2y=3x2y=3 :

3 拉格朗日乘子法

3.1 求解

根据之前的两个分析:
综合可知,在相切点,圆的梯度向量和曲线的梯度向量平行:

也就是梯度向量平行,用数学符号表示为:


还必须引入x2y=3x^2y=3x2y=3 这个条件,否则这么多等高线,不知道指的是哪一根:

因此联立方程:
求一下试试:
这就是拉格朗日乘子法。

3.2 定义

要求函数f 在g 约束下的极值这种问题可以表示为:


s.t.s.t.s.t. 意思是subject to,服从于,约束于的意思。
可以列出方程组进行求解:

用这个定义来翻译下刚才的例子,要求:
令:
求:
联立方程进行求解:

3.3 变形

这个定义还有种变形也比较常见,要求:
定义:
求解下面方程组即可得到答案:
把等式左边的偏导算出来就和上面的定义是一样的了。

3.4 多个约束条件

如果增加一个约束条件呢?比如说:

求:

从图上看约束条件是这样的:

很显然所求的距离是这样的:

那这三者的法线又有什么关系呢?x2+y2x^2 + y^2x2+y2的法线是x2y−3x^2y-3x2y−3 和x−y−3x-y-3x−y−3 的法线的线性组合:
假设:

那么线性组合就表示为:

联立方程:

即可求解。

往更高纬度走的话,多约束条件的情况下,问题变为了g1,g2g_1,g_2g1​,g2​ 围成的曲线 C 和f 相切,直观上看∇f\nabla f∇f 必然在∇g1,∇g2\nabla g_1,\nabla g_2∇g1​,∇g2​ 张成的空间中:

这点的严格性这里就不证明了。

两条曲线相切,意味着他们在这点的法线平行,也就是法向量只差一个任意的常数乘子(取为−λ):∇f(x,y)=−λ∇g(x,y)-\lambda):\nabla f(x,y)=-\lambda \nabla g(x,y)−λ):∇f(x,y)=−λ∇g(x,y), 我们把这个式子的右边移到左边,并把常数移进微分算子,就得到∇(f(x,y)+λg(x,y))=0\nabla (f(x,y)+\lambda g(x,y))=0∇(f(x,y)+λg(x,y))=0。
把这个式子重新解释一下,这个就是函数f(x,y)+λg(x,y)f(x,y)+\lambda g(x,y)f(x,y)+λg(x,y)无约束情况下极值点的充分条件。

[转载]拉格朗日乘子法如何理解?相关推荐

  1. 拉格朗日乘子法:写得很通俗的文章

    拉格朗日乘子法            最近在学习 SVM 的过程中,遇到关于优化理论中拉格朗日乘子法的知识,本文是根据几篇文章总结得来的笔记.由于是刚刚接触,难免存在错误,还望指出?.另外,本文不会聊 ...

  2. 【数学】拉格朗日乘子法(Lagrange Multiplier) 和KKT条件理解

    转载 目录 动机 简介 一. 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件 (a) 拉格朗日乘子法(Lagrange Multiplier) (b) KKT条件 二. 为什么 ...

  3. 转 机器学习系列 08:深入理解拉格朗日乘子法、KKT 条件和拉格朗日对偶性

    深度理解拉格朗日乘子法.KKT条件与线性规划对偶理论的微妙关系 https://blog.csdn.net/benzhujie1245com/article/details/85270058?utm_ ...

  4. 拉格朗日乘子法学习[转载]

    转自:https://wenku.baidu.com/view/3815adfdfad6195f302ba6c0.html 1.约束条件下多变量的优化方法 2.等式约束下的拉格朗日乘子法 2.1等式约 ...

  5. 拉格朗日乘子法的通俗理解

    拉格朗日乘子法的通俗理解 1. 举例 2. 求偏导 3. 拉格朗日乘子法 4. 乘子 1. 举例 这里举个简单的例子吧 在家里做蛋糕,假如只计算鸡蛋和牛奶的价格 其中鸡蛋的价格为4.5¥/斤,牛奶为1 ...

  6. SVM-支持向量机理解(拉格朗日乘子法(Lagrange multiplier))

    关于支持向量机里的拉格朗日乘子法有很多文章,作为学习笔记这里就不详细描述了,只记录一些一般文章里跳过的难以理解部分 Support Vector Machine wiki : https://en.w ...

  7. 如何理解拉格朗日乘子法?

    1 与原点的最短距离 假如有方程: 图像是这个样子滴: 现在我们想求其上的点与原点的最短距离: 这里介绍一种解题思路.首先,与原点距离为 的点全部在半径为 的圆上: 那么,我们逐渐扩大圆的半径: 显然 ...

  8. 对拉格朗日乘子法与KKT的理解

    在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...

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

    在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法.在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 ...

最新文章

  1. java typeof_js中typeof的用法汇总
  2. arm linux内核调试,kgdb在ARM开发板上调试kernel成功
  3. jsbridge实现及原理_如何实现一个优雅的jsBridge
  4. 微软公有云Azure落地中国,全面大规模商用
  5. MATLAB数值计算与符号运算
  6. flutter TextField 限制只允许输入数字 小数点
  7. 第八章:在Spark集群上掌握比较重要的图操作之Property Operators(1)
  8. 关于url传参中文乱码问题
  9. Java中迭代Map的方法
  10. SQLServer中替换某字段的部分内容
  11. mysql配置文件路径
  12. smtp邮件服务器的作用,smtp服务器是什么意思(smtp服务器作用及使用指南)
  13. Windows 11 配置JDK 环境变量
  14. emacs下使用google-cpplint
  15. 如何使用OBS Virtualcam 和 Live2DViewEX 在视频会议中成为最靓的仔
  16. BPM与OA的简单了解
  17. linux下查看系统内存使用情况的几个命令
  18. 苹果与华为领衔 全球科技巨头进军AI手机领域
  19. IOS内购IAP(IN-APP-PURCACHE)收据
  20. Spotify敏捷模式详解三部曲第三篇:工程文化

热门文章

  1. VNC Viewer连接成功后闪退的解决办法
  2. day2 java的数据转换与强制转换
  3. 11_less中的条件判断
  4. Java中的变量Variable
  5. 机器视觉用c还是python_机器视觉_opencv-python环境搭建
  6. easyexcel和poi是否有版本冲突_easyexcel--解决poi大文件发生OOM问题
  7. pythondjango教程_Python 中Django安装和使用教程详解
  8. linux redis-trib.rb,linux 关于redis-trib.rb构建redis集群
  9. python安装anaconda ubuntu_Ubuntu 16.4 安装anaconda 详细教程
  10. jinja2模板注入_Flask jinja2 模板注入思路总结