• KKT条件和拉格朗日乘子法详解


    (frac{以梦为马}{晨凫追风})

    最优化问题的最优性条件,最优化问题的解的必要条件和充分条件

    无约束问题的解的必要条件
    (f(x))(x)处的梯度向量是0

    有约束问题的最优性条件

    等式约束问题的必要条件:

    一个条件,两变量

    (min f(x)=f([x]_1,[x]_2))
    (s.t. c(x)=c([x]_1,[x]_2)=0)

    则最优解的必要条件如下面式子所示:

    ( riangledown f(x^*)+alpha^* riangledown c(x^*)=0)
    (c(x^*)=0)

    (alpha^*)是常数,即存在一个常数使得约束条件和待优化问题的梯度之和为0
    上面就把它当成一个结论吧,具体推导见《数据挖掘中的新方法——支持向量机》

    这里的理解是:

    (x满足c(x_1,x_2)=0)的条件下去寻找一个(mathbf x)来使得(f(x))最小。其实这个点就是在满足约束条件(c(x)=0)的曲面上。
    来这样理解一下:

    这个图来自上面那本书

    (c(x))是曲线,画出(f(x)=k)的等高线,当然了在(x=4)的位置两者相交,但是二者不是相切的,这样就还能移动x点去寻找更低的点来满足最小化,其实这里要找的点就是二者相切的点,这样就能保证最小值,相切的时候,目标函数的梯度肯定正交于约束曲面,此时就有了
    ( riangledown f(x^*)+alpha^* riangledown c(x^*)=0)

    更直观理解一下,图片自己画的

    上面的(z)是待优化的函数,(c(x_1,x_2))是约束的等式条件,注意这里面的(x_1,x_2)是在平面上的(联想圆锥曲线)然后把z的等高线投影到(x_1,x_2)平面上,在该平面上的约束条件上面的点就是该x取值的可行域,在这些点里面选取的x使得目标函数最小。当等高线与(c(x_1,x_2))相交时,在等高线内部肯定还有满足(z)更小的(x_1,x_2),只有当等高线与(c(x_1,x_2))相切时,等高线内部就没有了点使得优化函数更小,于是就必须是等高线的梯度方向和约束曲线的方向相同或者一致,这样才能保证相切,于是就有了式子

    ( riangledown f(x^*)+alpha^* riangledown c(x^*)=0)

    引入拉格朗日函数

    (L(x,alpha)=L([x]_1,[x]_2,alpha)=f([x]_1,[x]_2)+alpha c([x]_1,[x]_2))

    上面的条件就变成:
    ( riangledown_x L(x^*,alpha^*)= riangledown f(x^*)+alpha^* riangledown c(x^*)=0)
    ( riangledown_alpha L(x^*,alpha^*)=c(x^*)=0)

    推广到两个约束条件,三个变量的问题

    (min f(x)=f([x]_1,[x]_2,[x]_3))
    (s.t. c_i(x)=c_i([x]_1,[x]_2,[x]_3)=0)

    它的最优解的必要条件是:
    ( riangledown f(x^*)+alpha^*_1 riangledown c_1(x^*)+alpha^*_2 riangledown c_2(x^*)=0)
    (c_1(x^*)=0)
    (c_2(x^*)=0)

    引入拉格朗日函数

    (L(x,alpha)=L([x]_1,[x]_2,[x]_3,alpha_1,alpha_2)=f([x]_1,[x]_2,[x]_3)+alpha_1 c_1([x]_1,[x]_2,[x]_3)+alpha_2 c_2([x]_1,[x]_2,[x]_3))

    于是最优化条件变成:
    ( riangledown_x L(x^*,alpha^*)= riangledown f(x^*)+alpha^*_1 riangledown c_1(x^*)+alpha^*_2 riangledown c_2(x^*)=0)
    ( riangledown_alpha L(x^*,alpha^*)=mathbf c(x^*)=0)

    然后是多变量,多(q)条件约束:
    引入拉格朗日函数
    (L(x,alpha)=L([x]_1,[x]_2,cdots,[x]_n,alpha_1,cdots,alpha_q)=f([x]_1,[x]_2)+sumlimits_{i=1}^qalpha_i c_i([x]_1,[x]_2)=f(x)+alpha^Tc(x))

    (x^* = ([x]_1^*,[x]_2^*,cdots,[x]_n^*))是该问题的局部最优解,且约束函数在(x^*)处的梯度向量( riangledown c_1(x^*),cdots, riangledown c_q(x^*))线性无关此时(x^*)则存在q维向量:(mathbf{alpha}^*=(alpha^*_1,cdots,alpha^*_q))满足下面条件

    ( riangledown_x L(x^*,alpha^*)= riangledown f(x^*)+sumlimits_{i=1}^{q}alpha^*_i riangledown c_i(x^*)= riangledown f(x^*)+ riangledown mathbf{c}(x^*)mathbf{alpha}^*=0)
    ( riangledown_alpha L(x^*,alpha^*)=mathbf {c}(x^*)=0)

    其中( riangledown mathbf{c}(x^*))是以( riangledown c_1(x^*),cdots, riangledown c_q(x^*))为列的矩阵,注意这里的(mathbf{c}(x^*),mathbf{alpha}^*)是向量形式

    不等式约束时候的条件

    最简单的不等式约束问题

    (min f(x)=f([x]_1,[x]_2,[x]_3))
    (s.t. c_i(x)=c_i([x]_1,[x]_2,[x]_3)leq0)

    此时的问题类比于上面的等式约束,并引入拉格朗日函数(L(x,alpha)=f(x)+alpha c(x))

    此时的条件要满足的是:

    ( riangledown_x L(x^*,alpha^*)= riangledown f(x^*)+alpha^* riangledown c(x^*)=0)
    (c(x^*)leq0)
    (alpha^*geq0)
    (alpha^*c(x^*)=0)

    这里最后一个条件是(alpha^*c(x^*)=0),包含是(alpha^* = 0)或者(c(x^*)=0)
    此时的两种情况是:当(x^*)在约束条件内部的时候,该问题变成了(f(x))的无约束最值问题,此时有

    ( riangledown f(x^*) = 0,qquad c(x^*) < 0)

    当在约束条件边缘取值的时候,该问题变成等式的约束问题
    ( riangledown f(x^*)+ riangledown mathbf{c}(x^*)mathbf{alpha}^*=0)
    (mathbf {c}(x^*)=0)
    (alpha^*geq 0)

    一般不等式约束问题

    引入Lagrange函数
    (L(x,alpha)=f(x)+sumlimits_{i=1}^p alpha_i c_i(x)=f(x)+mathbf {alpha}^Tmathbf{c}(x))

    该约束问题最优解的必要条件就是

    ( riangledown_x L(x^*,alpha^*)= riangledown f(x^*)+ sumlimits_{i=1}^{p} alpha^*_i riangledown c_i(x^*)= riangledown f(x^*)+ riangledown c(x^*)mathbf{alpha}^*=0)
    (c_i(x^*)leq0) (i=1,cdots ,p)
    (alpha^*_igeq0) (i=1,cdots ,p)
    (alpha_i^*c_i(x^*)=0) (i=1,cdots ,p)

    其中( riangledown mathbf{c}(x^*))是一个以( riangledown c_1(x^*), riangledown c_2(x^*),cdots, riangledown c_p(x^*))列矩阵

    综合上面的结论就导出了下面的KKT条件
    KKT条件一般约束问题的必要条件

    考虑一般问题:
    (min f(x))
    (s.t.c_i(x)leq0) (i=1,cdots ,p)
    (c_i(x)=0) (i=p+1,cdots ,p+q)

    优化问题(f(x),c(x),i=1,cdots ,p+q)具有连续一阶偏导,(x^*)为问题的局部解。若在(x^*)处的有效约束梯度( riangledown c_i(x^*))线性无关,或者所有的约束函数都是线性函数,则存在(p+q)维向量(alpha^*=(alpha^*_1,alpha^*_2,cdots,alpha^*_{p+q}))使得:

    ( riangledown_x L(x^*,alpha^*)= riangledown f(x^*)+ sumlimits_{i=1}^{p+q} alpha^*_i riangledown c_i(x^*)= riangledown f(x^*)+ riangledown c(x^*)mathbf{alpha}^*=0)
    (c_i(x^*)leq0) (i=1,cdots ,p)
    (c_i(x^*)=0) (i=p+1,cdots ,p+q)
    (alpha^*_igeq0) (i=1,cdots ,p)
    (alpha_i^*c_i(x^*)=0) (i=1,cdots ,p)

    这里( riangledown mathbf{c}(x^*))是一个以( riangledown c_1(x^*), riangledown c_2(x^*),cdots, riangledown c_{p+q}(x^*))列矩阵即:

    ( riangledown mathbf{c}(x^*)=( riangledown c_1(x^*), riangledown c_2(x^*),cdots, riangledown c_{p+q}(x^*)))

    (p+q)维向量(alpha^*)称为KKT乘子向量或者lagerange乘子向量,其分量(alpha^*_1,alpha^*_2,cdots,alpha^*_{p+q})称为KKT乘子或者lagrange乘子

    当优化问题为凸约束问题的时候上述的KKT条件变为最优解的充要条件

    上面的方法就是为了在寻找多元函数在一组约束下的极值优化的方法,通过引入拉格朗日乘子,可以将有d个变量与k个约束条件的最优化问题转化为具有(d+k)个变量的无约束的优化问题进行求解

    更为感性的理解这个条件就是:
    引入了拉格朗日乘子,描述了在可行域边上的时候是等式约束的条件这时候用的是拉格朗日乘子法. 在可行域的内部是无约束的条件,或者是不等式约束的条件下变换出了KKT条件。归根结底的说KKT条件是拉格朗日乘子法的一个泛化

    KKT包含了等式边缘和内部的条件两种情况

  • 相关阅读:
    给入门程序员的一些学习建议(一定要看)
    拦截器工作原理
    Struts 2中如何解决中文乱码问题?
    struts1与struts2的区别。
    MVC是什么?
    spring MVC工作原理
    C#中,子类构造函数调用父类父类构造函数的正确方式
    泛型的优点
    jsp的page、request、session、application四个作用域的作用
    jsp转发与重定向的区别
  • 原文地址:https://www.cnblogs.com/xujianqing/p/7083669.html
Copyright © 2020-2023  润新知