zoukankan      html  css  js  c++  java
  • 机器学习——最优化问题:拉格朗日乘子法、KKT条件以及对偶问题

    1 前言

      拉格朗日乘子法(Lagrange Multiplier)  和 KKT(Karush-Kuhn-Tucker)  条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用 KKT 条件。当然,这两个方法求得的结果只是必要条件,只有当目标函数是凸函数的情况下,才能保证是充分必要条件。

    1.1 最优化问题三种约束条件

      1:无约束条件

       解决方法通常是函数对变量求导,令导函数等于0的点可能是极值点,将结果带回原函数进行验证。

      2:等式约束条件

      设目标函数为 $f(x)$,约束条件为 $h_k(x)$。s.t. 表示 subject to ,“受限于”的意思。比如:

        $quad min quad f(x)$
        $quad s.t.quad h_{k}(x)=0 quad k=1,2,...,l$

      解决方法是 消元法 或者 拉格朗日法,消元法比较简单不在赘述。

      3:不等式约束条件

      设目标函数 $f(x)$,不等式约束为 $g(x)$,有的教程还会添加上等式约束条件 $h(x)$。此时的约束优化问题描述如下:

        $quad min quad f(x)$
        $quad s.t.quad h_{j}(x)=0 quad  j=1,2,...,p$
           $quad quad quad g_{k}(x) le 0 quad  k=1,2,...,q$

      对于这三种情况均有对应的方法处理:

      1.无约束条件:对变量求导并令其为0,求得极值;
      2.只有等式约束:拉格朗日乘子;
      3.等式约束和不等式约束:KKT条件。

    2 拉格朗日乘数法

      在数学最优问题中,拉格朗日乘数法是一种寻找变量受一个或多个条件所限制的多元函数的极值的方法。这种方法将一个有 $n$ 个变量与 $k$ 个约束条件的最优化问题转换为一个有 $n + k$ 个变量的方程组的极值问题,其变量不受任何约束。

    2.1 一个等式约束条件下

        $quad min quad f(x)$
        $quad s.t. quad h(x)=0$

      

      如图示,只有相切的时候才有可能是极值点,在相切的地方 $h(x)$ 的梯度和 $f(x)$ 的梯度应该是在同一条直线上,即在极值点有:
        $ abla f(x)=lambda abla h(x)$
      根据上述分析,我们将原始优化问题表示为:
        $L(x, lambda)=f(x)+lambda h(x)$
      $ mathrm{L}(x, lambda) $ 即拉格朗日函数,$ lambda $ 是拉格朗日乘子。拉格朗日函数对 $x$ 求偏导的结果为 $0$ 时,即为最优解。
      例子:
        $quad min quad f(x,y)$
        $quad s.t. quad varphi (x,y)=0$
      设给定二元函数 $z=f(x,y)$ 和附加条件 $varphi (x,y)=0$,为寻找 $z=f(x,y)$ 在附加条件下的极值点,先做拉格朗日函数$F(x,y,lambda ) =f(x,y)+lambda varphi (x,y)$ ,其中$lambda$为参数。
      令 $F(x,y,lambda )$ 对 $x$ 和 $y$ 和 $lambda$ 的一阶偏导数等于零,即
        $F^{'}_x =f^{'}_x(x,y) +lambda varphi ^{'}_x(x,y)=0$
        $F^{'}_y =f^{'}_y(x,y) +lambda varphi ^{'}_y(x,y)=0$
        $F^{'}_lambda = varphi(x,y)=0$
      由上述方程组解出 $x,y$ 及 $lambda$,如此求得的 $(x,y)$,就是函数 $z=f(x,y)$ 在附加条件 $ varphi(x,y)=0$ 下的可能极值点。

    2.2 多个等式约束条件下

      该情况通常更为常见,含有多个等式约束,一般形式为:

        $quad min quad f(x)$
        $quad s.t.quad h_{k}(x)=0 quad k=1,2,...,l$

      定义拉格朗日函数 $F(x)$

        $F(x,lambda)=f(x)+sum limits _{k=1}^{l} lambda_kh_k(x)$

      其中 $lambda_k$ 是各个约束条件的待定系数。   

      然后求解各变量的偏导方程:

        $frac{partial F}{partial x} ,...,frac{partial F}{partial lambda_1} ,...,frac{partial F}{partial lambda_l}$

      如果有 $n$ 个变量与 $k$ 个约束条件的最优化问题,就应该有 $n+k $ 个方程。求出的方程组的解就可能是最优化值,将结果带回原方程验证就可得到解。 

    3 KKT条件

      优化问题中既包含等式约束和不等式约束是最复杂也最常见的模型。问题的建模为:
        $quad min quad f(x)$
        $quad s.t.quad h_{j}(x)=0 quad j=1,2,...,p$
         $quad quad quad g_{k}(x) le 0 quad k=1,2,...,q$
      对于等式约束,可以引入拉格朗日乘子进行转换。我们着重看下不等式约束。
      我们定义不等式约束下的拉格朗日函数 $L$,则 $L$ 表达式为:
        $L(x,lambda ,mu )=f(x)+sum limits _{j=1}^{p}lambda _jh_j(x) +sum limits _{k=1}^{q}mu _kg_k(x)$
      其中 $f(x)$ 是原目标函数,$h_j(x)$ 是第 $j$ 个等式约束条件,$λ_j$ 为等式约束引入的拉格朗日乘子;$g_k$ 是不等式约束,$u_k$ 为不等式约束引入的松弛变量,也叫做KKT乘子,注意KKT乘子是大于 $0$ 的。
      求出的极值点 $ x^{*}$ 满足 KKT 条件:
        $left{egin{aligned} abla fleft(x^{*} ight)+sum_{k} lambda_{j} abla h_{k}left(x^{*} ight)+sum_{j} mu_{k} abla g_{j}left(x^{*} ight) &=0 \ mu_{k} & geq 0 \ mu_{k} g_{j}left(x^{*} ight) &=0 \ g_{j}left(x^{*} ight) & leq 0 end{aligned} ight.$
      注意:$f(x)$,$g(x)$ 都是凸函数。

    4 原始问题

      原优化问题:

        $egin{array}{ll} min _{x} & f(x) \ ext { s.t. } h_{i}(x)=0 & i=1,2,3, ldots, m \ g_{j}(x) leq 0 & j=1,2,3, ldots, n end{array}$

      拉格朗日函数:

        ${large L(x, alpha, eta)=f(x)+sum limits _{i=1}^{m} alpha_{i} h_{i}(x)+sum  limits _{j=1}^{n} eta_{j} g_{j}(x)} $

      对上式先最大化再最小化:

        ${large underset{x}{min} left[ underset{alpha, eta ; eta_{j} geq 0}{max}    L(x, alpha, eta) ight]=underset{x}{min} left{f(x)+ underset{alpha, eta ; eta_{j} geq 0}{max}   left[sum limits_{i=1}^{m} alpha_{i} h_{i}(x)+sum limits _{j=1}^{n} eta_{j} g_{j}(x) ight] ight}} $

      在满足 KKT 条件的情况下,该式和原优化问题是等价的。
      将上式分为两部分:
      1. 可行解区域内,原优化问题的约束条件都得到满足。因为 $h_{i}(x)=0$ , 所以不管 $alpha$ 如 何变化,必然有 $alpha h_{i}(x)=0$ 。$g_{j}(x)<0$ , 且限定了 $ eta_{j}>0$ , 则 $eta_{j} g_{i}(x)$ 最大值为 $0$ 综上, 在可行解区域内:

        ${large {large  underset{alpha, eta ; eta_{j} geq 0}{max} L(x, alpha, eta) =f(x)+ underset{alpha, eta ; eta_{j} geq 0}{max}   [sum limits_{i=1}^{m} alpha_{i} h_{i}(x)+sum limits _{j=1}^{n} eta_{j} g_{j}(x)]=f(x)} } $

      2. 可行解区域外, 此时原优化问题的约束条件未满足。若 $h_{i}(x) eq 0$ , 则最大化 后为 $infty$ 。 若 $g_{j}(x)>0$ , 则最大化后也为 $ infty$ 。所以在可行解区域外:

        $ {large underset{alpha, eta ; eta_{j} geq 0}{max} L(x, alpha, eta) =+infty} $

      综合上面两个论域, $mathrm{f}(mathrm{x})$  在可行解区域内最小化,等于 $ underset{alpha, eta ; eta_{j} geq 0}{max} L(x, alpha, eta) $ 的最小化,而在可行解区域外, $ underset{alpha, eta ; eta_{j} geq 0}{max} L(x, alpha, eta) $无极值。这样当我们尝试对其进行最小化时也就相当于原问题最优化问题了。

    5 对偶问题

      定义:

        ${large heta_{p}(w)=underset{alpha, eta ; eta_{j} geq 0}{max} mathcal{L}(w, alpha, eta)} $

      则最小化primal问题与原问题有同样的解:

        ${large underset{w}{min}   heta_{p}(w)=underset{w}{min} underset{alpha, eta: alpha_{i} geq 0}{max}mathcal{L}(w, alpha, eta)} $

      定义dual优化问题如下:

        ${large underset{alpha, eta: alpha_{i} geq 0}{max} heta_{mathcal{D}}(alpha, eta)=underset{alpha, eta: alpha_{i} geq 0}{max}underset{w}{min} mathcal{L}(w, alpha, eta)} $

      注意, $ heta_{p}$ 是针对 $ alpha , eta $ 的优化,而 $ heta_{mathrm{D}} $ 是针对 $w$ 的优化。
      我们定义:

        ${large egin{array}{l} mathrm{p}^{*}=underset{w}{min}   heta_{p}(w) ext { 为 primal  问题的值} \ d^{*}=underset{alpha, eta ; alpha i>0}{max} heta_{D}(alpha, eta) ext { 为 Dual 问题的值 } end{array}} $

      他们之间满足的满足是:

          ${large d^{*}=underset{alpha, eta: alpha_{i} geq 0}{max}   underset{w}{min} mathcal{L}(w, alpha, eta) leq underset{w}{min}   underset{alpha, eta: alpha_{i} geq 0}{max}   mathcal{L}(w, alpha, eta)=p^{*} } $

      只有在KKT条件时,才有: $d^{*}=p^{*} $,此时,我们可以通过求解Dual 问题来求解primal问题。
      证明:  ${large d^{*}=underset{alpha, eta: alpha_{i} geq 0}{max}   underset{w}{min} mathcal{L}(w, alpha, eta) leq underset{w}{min}   underset{alpha, eta: alpha_{i} geq 0}{max}   mathcal{L}(w, alpha, eta)=p^{*}}  $
      对任意   $(w, alpha, eta)$ ,如下不等式一定成立:

        ${large heta_{mathcal{D}}(alpha, eta)=underset{w}{min} mathcal{L}(w, alpha, eta) leq mathcal{L}(w, alpha, eta) leq underset{alpha, eta: alpha_{i} geq 0}{max} mathcal{L}(w, alpha, eta)= heta_{mathfrak{p}}(w)} $

      即:
        ${large heta_{mathcal{D}}(alpha, eta) leq heta_{mathfrak{p}}(w)} $
      所以:
        ${large underset{alpha, eta: alpha_{i} geq 0}{max}   heta_{mathcal{D}}(alpha, eta) leq underset{w}{min} heta_{mathfrak{p}}(w)} $
      即得到:

         ${large d^{*}=underset{alpha, eta: alpha_{i} geq 0}{max}   underset{w}{min} mathcal{L}(w, alpha, eta) leq underset{w}{min}   underset{alpha, eta: alpha_{i} geq 0}{max}   mathcal{L}(w, alpha, eta)=p^{*} } $

    参考

    1:百度百科——拉格朗日乘数法

    2:拉格朗日乘数法解含不等式约束的最优化问题

    3:非线性优化中的 KKT 条件该如何理解?

    4:KKT 条件

    5:支持向量机(SVM)详解

    6:[线性分类器](四)万字长文解释拉格朗日乘子与支持向量机

    参考视频

    1:支持向量机(SVM)详解

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/14917751.html

  • 相关阅读:
    2018-8-10-win10-uwp-商业游戏-1.2.1
    2018-8-10-win10-uwp-商业游戏-1.2.1
    2019-3-1-获取-Nuget-版本号
    2019-3-1-获取-Nuget-版本号
    2019-9-24-dotnet-remoting-抛出异常
    2019-9-24-dotnet-remoting-抛出异常
    2018-2-13-C#-解析-sln-文件
    2018-2-13-C#-解析-sln-文件
    2018-10-19-jekyll-添加-Valine-评论
    2018-10-19-jekyll-添加-Valine-评论
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/14917751.html
Copyright © 2011-2022 走看看