前言

本文并非要涉及数学史,只是追求推导及结果的严密性。
最初接触到拉格朗日乘子是求函数的条件极值,当时只是感觉这个算法比较巧妙,可无法从直观上去分析它的原理,感觉它的背后一定有一段故事。后来从图书馆里了解了它本质上属于最优化问题,也进一步了解了它的证明、 K K T KKT KKT条件以及拉格朗日对偶。但还是无法对其最基本最重要的由来问题找到一个解释,看李天岩老师的一篇文章《回首来时路》,里面的一句话让我印象深刻——“非常遗憾的是,极多数重要 论文的作者都不会轻易把他们脑子里真正的重点用力写出来。你必须自己去问这些问题,自己去追寻它的答案。”拉格朗日乘子,是我能与这段话产生共鸣的数学思想之一。我觉得我需要自己去寻找答案。
记得第一次遇到拉格朗日乘子法(拉格朗日乘数法),是这样描述的:
求 f ( x , y ) f(x,y) f(x,y)在 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0时的极值,我们引入新变量拉格朗日乘子 λ \lambda λ,这时,我们只需要求下列拉格朗日函数的极值: τ ( x , y , λ ) = f ( x , y ) + λ ⋅ g ( x , y ) \tau (x,y,\lambda )=f(x,y)+\lambda \cdot g(x,y) τ(x,y,λ)=f(x,y)+λ⋅g(x,y)
分别求 ∂ τ ∂ x = 0 ∂ τ ∂ y = 0 ∂ τ ∂ λ = 0 \begin{matrix} \frac{\partial \tau}{\partial x}=0 & \frac{\partial \tau}{\partial y}=0 & \frac{\partial \tau}{\partial \lambda }=0 \end{matrix} ∂x∂τ​=0​∂y∂τ​=0​∂λ∂τ​=0​联立求出 x x x和 y y y代入 f ( x , y ) f(x,y) f(x,y)即得条件极值。算法在形式上极为简洁。不带有任何先验条件,可谓算法中的典范!可是它是如何被设计出来的?原作者是如何构思这个算法的?纵使我查遍那所图书馆所有关于凸优化和最优化的书籍依然没有得到答案。
某日偶然间翻看钱伟长的《变分法及有限元》,只翻看了前面几页,但已经有所收获。虽然还有很多可以补充,以及还有更高的层次可以提升;其中的逻辑在某些拐点处也略显卡顿。但毕竟这是困扰着很多人的一个问题,我下面将要讲述的,是对条件极值的纯代数的解析,希望能对读者有一点点启发。
我认为:条件极值问题可以理解为是流形上的余切向量场的零值问题。

流形上的余切向量场

设微分流形 M M M: g ( x , y ) = 0 g(x,y)=0 g(x,y)=0,假设流形上的任意一点 p p p,切向量 v v v定义如下:
v : γ → γ ′ ( p ) ( ∀ γ ∈ C p ∞ ) v:\gamma\rightarrow{\gamma}'(p)\left ( \forall \gamma\in C_{p}^{\infty } \right ) v:γ→γ′(p)(∀γ∈Cp∞​)该泛函显然满足线性以及 L e i b n i z Leibniz Leibniz法则。然后我们定义余切向量 α : v → v ( f ) \alpha :v\rightarrow v(f) α:v→v(f)
这样即生成一个流形 M M M上的余切向量场 A 1 ( M ) A^{1}(M) A1(M),也叫光滑的 ( 0 , 1 ) (0,1) (0,1)型张量场,或者一次微分式。
上述的条件极值问题等价于余切向量场 A 1 ( M ) A^{1}(M) A1(M)的零点问题。
该如何从整体而非局部(剖分)的角度上表达这个余切向量场呢?当然是用偏微分方程,即为下面的一阶线性偏微分方程: d f = ∂ f ∂ x d x + ∂ f ∂ y d y df=\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy df=∂x∂f​dx+∂y∂f​dy但是,上式的 d x dx dx, d y dy dy不是独立的,由于 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0,所以上式还要满足于下面的一阶线性齐次偏微分方程:
∂ g ∂ x d x + ∂ g ∂ y d y = 0 \frac{\partial g}{\partial x}dx+\frac{\partial g}{\partial y}dy=0 ∂x∂g​dx+∂y∂g​dy=0
当我在学习数学物理方程的时候,我就有个疑问:为啥偏微分方程的求解总是人为的添加上一个或者几个的初始条件?后来想想,大概是因为偏微分方程是对流形求解,无法像一些特殊条件方程那样可以很容易的求到全局极值,只能通过对稠密子集的极值的求解来近似的表达这个全局极值。在这里,我们也人为的添加一个初始条件,它不改变流形的测度:假定 ∂ g ∂ y ≠ 0 \frac{\partial g}{\partial y}\neq 0 ∂y∂g​​=0,这样,对上式进行求解,可得: d y d x = − ∂ g ∂ x ∂ g ∂ y \frac{dy}{dx}=-\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}} dxdy​=−∂y∂g​∂x∂g​​
而上面提到的 d f = ∂ f ∂ x d x + ∂ f ∂ y d y df=\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy df=∂x∂f​dx+∂y∂f​dy就转化为
d f = ( ∂ f ∂ x + ∂ f ∂ y d y d x ) d x = ( ∂ f ∂ x − ∂ f ∂ y ∂ g ∂ x ∂ g ∂ y ) = 0 df=(\frac{\partial f}{\partial x}+\frac{\partial f}{\partial y}\frac{dy}{dx})dx=(\frac{\partial f}{\partial x}-\frac{\partial f}{\partial y}\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}})=0 df=(∂x∂f​+∂y∂f​dxdy​)dx=(∂x∂f​−∂y∂f​∂y∂g​∂x∂g​​)=0

偏微分方程

则上面的问题就转化成偏微分方程组:
{ ( ∂ f ∂ x − ∂ f ∂ y ∂ g ∂ x ∂ g ∂ y ) = 0 g ( x , y ) = 0 \left\{\begin{matrix} (\frac{\partial f}{\partial x}-\frac{\partial f}{\partial y}\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}})=0\\ g(x,y)=0 \end{matrix}\right. {(∂x∂f​−∂y∂f​∂y∂g​∂x∂g​​)=0g(x,y)=0​
下面就解这个方程组,其主要的还是解 ( ∂ f ∂ x − ∂ f ∂ y ∂ g ∂ x ∂ g ∂ y ) = 0 (\frac{\partial f}{\partial x}-\frac{\partial f}{\partial y}\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}})=0 (∂x∂f​−∂y∂f​∂y∂g​∂x∂g​​)=0。
o r i g i n a l − f o r m u l a ⇒ ∂ f ∂ x ∂ f ∂ y = ∂ g ∂ x ∂ g ∂ y ⇒ { ∂ f ∂ x + λ ∂ g ∂ x = 0 ∂ f ∂ y + λ ∂ g ∂ y = 0 original-formula\Rightarrow \frac{\frac{\partial f}{\partial x}}{\frac{\partial f}{\partial y}}=\frac{\frac{\partial g}{\partial x}}{\frac{\partial g}{\partial y}}\Rightarrow \left\{\begin{matrix} \frac{\partial f}{\partial x}+\lambda \frac{\partial g}{\partial x}=0\\ \frac{\partial f}{\partial y}+\lambda \frac{\partial g}{\partial y}=0 \end{matrix}\right. original−formula⇒∂y∂f​∂x∂f​​=∂y∂g​∂x∂g​​⇒{∂x∂f​+λ∂x∂g​=0∂y∂f​+λ∂y∂g​=0​
观察上面的方程组,上面的方程只含有未知数 x x x,下面的方程只含有未知数 y y y,它们实际上是某个流形的偏微分,假设该流形为 τ \tau τ,则实际上等价于
d τ = ( ∂ f ∂ x + λ ∂ g ∂ x ) d x + ( ∂ f ∂ y + λ ∂ g ∂ y ) d y = 0 d\tau=(\frac{\partial f}{\partial x}+\lambda \frac{\partial g}{\partial x})dx+(\frac{\partial f}{\partial y}+\lambda \frac{\partial g}{\partial y})dy=0 dτ=(∂x∂f​+λ∂x∂g​)dx+(∂y∂f​+λ∂y∂g​)dy=0
这时候答案已经很清楚了吧,两边积分得 τ ( x , y ) = f ( x , y ) + λ g ( x , y ) \tau(x,y )=f(x,y)+\lambda g(x,y) τ(x,y)=f(x,y)+λg(x,y)
完整形式如下
{ τ ( x , y ) = f ( x , y ) + λ g ( x , y ) g ( x , y ) = 0 \left\{\begin{matrix} \tau(x,y)=f(x,y)+\lambda g(x,y)\\ g(x,y)=0 \end{matrix}\right. {τ(x,y)=f(x,y)+λg(x,y)g(x,y)=0​
观察即可得:上面的方程组的极值可以化简为一个方程的极值,即是把常数 λ \lambda λ转化为参数变量,即是传说中的拉格朗日乘子:
τ ( x , y , λ ) = f ( x , y ) + λ g ( x , y ) \tau(x,y,\lambda)=f(x,y)+\lambda g(x,y) τ(x,y,λ)=f(x,y)+λg(x,y)
对上式 λ \lambda λ求导等价于 g ( x , y ) = 0 g(x,y)=0 g(x,y)=0。另外: τ \tau τ分明就是一个单参数变换群嘛,可见,求条件极值的过程其实就是找一个切向量场的过程。
当然,条件极值问题还有更复杂的形式——约束条件更多以及参数更多,从上述的最简单的形式很容易的推广,在本文就不再赘述了。

参考文献

[1] 变分法及有限元 钱伟长著

[2] 最优化问题的扰动分析 【法】J.F.博南,【美】A.夏皮罗 著 张立卫译

转载请注明出处:http://blog.csdn.net/fourierFeng/article/details/77929297

拉格朗日乘子法的由来相关推荐

  1. 【精简推导】支持向量机(拉格朗日乘子法、对偶函数、KKT条件)

    支持向量机,就是通过找出边际最大的决策边界,来对数据进行分类的分类器.因此,支持向量分类器又叫做最大边际分类器. (疯狂暗示:这是一个最优化问题啊~) 直接上目标求解函数: 这个式子是支持向量机基本形 ...

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

    作者:桂. 时间:2017-03-27 20:26:17 链接:http://www.cnblogs.com/xingshansi/p/6628785.html 声明:欢迎被转载,不过记得注明出处哦~ ...

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

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

  4. 拉格朗日乘子法 学习笔记

    本来是想写支持向量机的学习笔记的然后觉得内容太多了越写越不想写于是咕掉了. 把写好的拉格朗日乘子法发上来吧QwQ 拉格朗日乘子法 wiki链接 拉格朗日乘子法用来求解带多个等式约束的情况下的多元函数极 ...

  5. 拉格朗日乘子法(Lagrange Multiplier)和KKT条件

    拉格朗日乘子法(Lagrange Multiplier)和KKT条件 一:前言 如果我们现实生活中的多元值求最优化的问题,我们会遇到一下三种场景: 无条件约束的优化问题 有等式约束的优化问题 有不等式 ...

  6. 约束优化方法之拉格朗日乘子法与KKT条件

    来源:https://www.cnblogs.com/ooon/p/5721119.html 引言 本篇文章将详解带有约束条件的最优化问题,约束条件分为等式约束与不等式约束,对于等式约束的优化问题,可 ...

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

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

  8. 机器学习知识点(六)增广矩阵求解拉格朗日乘子法的Java实现

    基本的拉格朗日乘子法就是求函数f(x1,x2,...)在g(x1,x2,...)=0的约束条件下的极值的方法.其主要思想是将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得 ...

  9. 拉格朗日乘子法 KKT条件

    目录 1. 拉格朗日乘子法用于最优化的原因 2. 最优化问题三种情况 2.1 无约束条件 2.2 等式约束条件:拉格朗日乘子法 2.3 不等式约束条件:KKT 3. Lagrange对偶函数 3.1  ...

最新文章

  1. 【Python】有道翻译的爬虫实现(前篇)
  2. 转载自搜狐科技【技术那些事儿】LTE网络中的用户数据库HSS与传统2G/3G的HLR有何区别?能否融合组网?...
  3. eclipse卸载插件小记
  4. vbs复制自己到tmp目录
  5. Linux之ssh服务默认端口修改
  6. c++ map 多线程同时更新值 崩溃_深入理解并发安全的 sync.Map
  7. mongodb $unwind 聚合管道
  8. 利用shell和iptables实现自动拒绝恶意试探连接SSH服务
  9. android通讯录简单的_安卓手机删了联系人怎么恢复?超简单的恢复方法,一看就懂!...
  10. 混合架构、暗数据...这些云原生安全 bug 稍不留神会带来灾难!
  11. python精确匹配字符串_Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法...
  12. 80年代的我们对儿时零食的回忆
  13. 《Serverless 架构》序言
  14. 小甲鱼python【easyGUI】学习笔记
  15. windows安装补丁慢 360安全卫士和腾讯电脑管家安装同样卡住 解决办法
  16. 如何将exe文件在linux下执行,[操作系统]如何在linux centos 环境下运行.exe文件
  17. [转]游戏多开的原理
  18. c语言寻找丑数,C语言程序设计100例之(14):丑数
  19. 总有一种正能量触动你的心灵,读刘丁宁的一封信
  20. 最近十年诞生的6种新编程语言

热门文章

  1. 编程挑战之三角形的内切圆与外接圆
  2. data填补 envi no_ENVI实验步骤
  3. 2020 54所提前批
  4. 地图api - 批量转换坐标经纬度
  5. Python输出十二星座的符号
  6. 天弘基金+支付宝 互联网金融的成功试点
  7. python学习005-----%d的各种用法
  8. 如何使电脑黑屏而后台运行?
  9. 7-1 统计工龄 (20 分)
  10. autojs自动取消金豆脚本源码