• 拉格朗日乘子


    拉格朗日乘子


    1 拉格朗日乘子又称未定乘子,用于求解有一个或多个约束条件的函数驻点。考虑求 (f(mathbf{x})) 的最大值,约束条件为 (g(mathbf{x})=0) ,我们观察这样的驻点 (mathbf{x}^*) 满足什么样的条件。显然 (mathbf{x}^*)(D) 维空间中由约束条件 (g(mathbf{x})=0) 确定的 (D-1) 维表面上,并且梯度 ( abla g(mathbf{x})) 必然垂直于该表面(该点处微平面的法向量)。

    考虑 (g(mathbf{x})) 的泰勒展开,由于 (mathbf{x}) 在曲面 (g(mathbf{x})=0) 上,对于同在该曲面上的 (mathbf{x}+oldsymbolepsilon) ,有

    [g(mathbf{x}+oldsymbolepsilon)= g(mathbf{x})+oldsymbolepsilon^ ext{T} abla g(mathbf{x})+o(VertoldsymbolepsilonVert), ]

    另一方面

    [g(mathbf{x}+oldsymbolepsilon)=g(mathbf x)=0, ]

    从而

    [lim_{VertoldsymbolepsilonVert ightarrow 0}oldsymbolepsilon^ ext{T} abla g(mathbf{x})=0. ]

    值得注意的是,这里 (oldsymbolepsilon) 在微平面 ((mathbf x, abla g(mathbf x))) (点法式)上,因为我们已经限定 (g(mathbf x)equiv 0) ,从而 (oldsymbolepsilon) 的维度也受到了限制。

    由于 (mathbf{x}^*)(f(mathbf{x})) 的驻点,且 (mathbf{x}^*) 在曲面 (g(mathbf{x})=0) 上,因此 ( abla f(mathbf{x}^*)) 必然也与该曲面垂直。故而存在某个常数 (lambda) 满足

    [ abla f+lambda abla g=0, ]

    这里 (lambda eq 0) 即为拉格朗日乘子,对应地,拉格朗日函数为

    [L(mathbf{x},lambda)equiv f(mathbf{x})+lambda g(mathbf{x}), ]

    ( abla_{mathbf{x},lambda}L=0)等价表示了约束条件下函数驻点的求解。

    直观上讲,所谓拉格朗日乘子和最简单的设未知数求方程没有本质区别。这里我们知道 (lambda) 存在,从而先设出来而不是直接求出来,再利用方程组隐式表达所有约束或最值条件。

    考虑约束条件是不等式时的情况,不失一般性地,假定约束条件为(g(mathbf{x})geq 0),最大化函数为(f(mathbf{x}))。分别考虑等号是否取得,可构造相同的拉格朗日函数,约束条件如下

    [egin{aligned} g(mathbf{x})&geq0\ lambda&geq 0\ lambda g(mathbf{x})&=0, end{aligned}]

    即KKT(Karush-Kuhn-Tucker)条件。

    显然这里对 (lambda) 符号的约束仍然是一阶条件。

    若最小化函数是(f(mathbf{x})),此时拉格朗日函数为

    [L(mathbf{x},lambda)equiv f(mathbf{x})-lambda g(mathbf{x}), ]

    KKT条件不变。

  • 相关阅读:
    border-radius:50%和100%究竟有什么区别
    GoLang几种读文件方式的比较
    Golang Import使用入门
    golang: 常用数据类型底层结构分析
    Python--字典操作
    Python--字符串操作
    Python split 分割中文
    LR(逻辑回归)
    Python--列表操作
    Eclipse 使用Anaconda python 解释器
  • 原文地址:https://www.cnblogs.com/astoninfer/p/9318327.html
Copyright © 2020-2023  润新知