zoukankan      html  css  js  c++  java
  • 拉格朗日对偶问题与 KKT 条件

    在学习支持向量机(SVM)的过程中遇到了拉格朗日对偶问题与 KKT 条件,这里简单介绍一下拉格朗日对偶问题的推导。

    拉格朗日对偶

    拉格朗日对偶求解的问题为:$$min_x f(x) \ ext{s.t.} quad g_i(x) le 0 quad i = 1,2,dots,m \ h_j(x) = 0 quad j = 1,2,dots,n$$ 其中 $f(x)$ 与 $g_i(x)$ 为凸函数,$h_j(x)$ 为仿射函数。

    我们引入两种新的变量 $alpha_i$ 与 $eta_j$,构造拉格朗日函数 $$L(x,alpha,eta) = f(x) + sum_{i=1}^malpha_i g_i(x) + sum_{j=1}^neta_j h_j(x)$$ 帮助解决问题。接下来的所有式子中,要求 $alpha_i ge 0$。

    另外,由于 $f(x)$ 与 $g_i(x)$ 都是凸函数,$h_j(x)$ 是仿射函数(当然也是凸的),而凸函数的和仍然是凸函数,所以 $L(x,alpha,eta)$ 是关于 $x$ 的凸函数。

    原问题与对偶问题

    定义原问题(primal problem)为 $$min_x max_{alpha,eta}L(x,alpha,eta) = min_x heta_p(x)$$ 给定 $x$ 之后,$ heta_p(x)$ 要做的就是调整 $alpha$ 与 $eta$,使函数值最大。

    如果有一个 $g_i(x)$ 不符合限制条件(即 $g_i(x) > 0$),那么我们让对应的 $alpha_i$ 趋近于正无穷,就能让函数值趋近于正无穷;同理,如果有一个 $h_j(x)$ 不符合限制条件(即 $h_j(x) e 0$),那么我们让对应的 $eta_j$ 趋向与其同号的无穷,也可以让函数值趋近于正无穷;如果所有的限制条件都符合,由于 $g_i(x) le 0$,那么为了让 $ heta_p(x)$ 最大,只好让所有的 $alpha$ 都取 0,此时 $ heta_p(x) = f(x)$。也就是说,原问题通过新引入的两种变量,去掉了原来的限制条件。

    定于对偶问题(dual problem)为 $$max_{alpha,eta} min_x L(x,alpha,eta) = max_{alpha,eta} heta_d(alpha,eta)$$

    接下来我们将会证明,如果满足 KKT 条件,则对偶问题的解等于原问题的解。有时对偶问题与原问题相比,有一个更加高效的解决方法,此时我们就可以通过解对偶问题来获得原问题的解。

    KKT 条件

    KKT 条件陈述如下:如果存在 $x^*$,$alpha^*$ 与 $eta^*$ 满足
    1. $forall i = 1,2,dots,m quad g_i(x^*) le 0 $ 以及 $forall j = 1,2,dots,n quad h_j(x^*) = 0 $
    2. $forall i = 1,2,dots,m quad alpha_i^* ge 0$
    3. $ abla_{x^*}L(x^*,alpha^*,eta^*) = 0$
    4. $forall i = 1,2,dots,m quad alpha_i^*g_i(x^*) = 0$
    则 $x^*$ 是原问题的解,$alpha^*$ 与 $eta^*$ 是对偶问题的解,并且 $ heta_p(x^*) = heta_d(alpha^*,eta^*)$

    必要性证明

    由于 $x^*$ 是原问题的解,所以满足第 1 条;由于 $alpha^*$ 与 $eta^*$ 是对偶问题的解,所以满足第二条。

    $$ heta_p(x^*) = heta_d(alpha^*,eta^*) = min_xL(x,alpha^*,eta^*) \ = min_x(f(x) + sum_{i=1}^malpha_i^*g_i(x) + sum_{j=1}^neta_j^*h_j(x)) \ le f(x^*) + sum_{i=1}^malpha_i^*g_i(x^*) + sum_{j=1}^neta_j^*h_j(x^*) \ le max_{alpha,eta}(f(x^*) + sum_{i=1}^malpha_ig_i(x^*) + sum_{j=1}^neta_jh_j(x^*)) \ = f(x^*) = heta_p(x^*)$$ 由于第一项与最后一项相同,中间所有的小等于号都会取等。把第 3 行与第 5 行联系起来,我们有 $$sum_{i=1}^malpha_i^*g_i(x^*) + sum_{j=1}^neta_j^*h_j(x^*) = 0$$ 再联系 KKT 条件第 1 条,我们有 $$sum_{j=1}^neta_j^*h_j(x^*) = 0$$ 即 $$sum_{i=1}^malpha_i^*g_i(x^*) = 0$$ KKT 条件第 4 条得到满足。再由于拉格朗日函数是凸函数,所以要想让 $f(x^*) = heta_p(x^*)$ 取最小值,必须要让关于 $x$ 的梯度为 0,KKT 条件第 3 条得到满足。

    充分性证明

    如果没有 $ heta_p(x^*) = heta_d(alpha^*,eta^*)$,我们利用上一节的证明仍然可以得到 $ heta_d(alpha,eta) le heta_p(x)$。也就是说,对偶问题的值一定不大于原问题的值。

    由对偶问题的定义有 $$ heta_d(alpha^*,eta^*) = min_x(f(x) + sum_{i=1}^malpha_i^*g_i(x) + sum_{j=1}^neta_j^*h_j(x))$$ 而由 KKT 条件第 3 条,再加上 $L(x,alpha,eta)$ 是凸的,所以 $$min_x(f(x) + sum_{i=1}^malpha_i^*g_i(x) + sum_{j=1}^neta_j^*h_j(x)) \ = f(x^*) + sum_{i=1}^malpha_i^*g_i(x^*) + sum_{j=1}^neta_j^*h_j(x^*)$$ 再由 KKT 条件第 4 条有 $$ f(x^*) + sum_{i=1}^malpha_i^*g_i(x^*) + sum_{j=1}^neta_j^*h_j(x^*) = f(x^*) = heta_p(x^*)$$ 我们发现原问题的解和对偶问题的解竟然相等了,由于 $ heta_d(alpha,eta) le heta_p(x)$,我们就知道原问题肯定取到了最小值,而对偶问题肯定取到了最大值,说明我们找到了两者的解。

    可是说了半天,这个 $x^*$,$alpha^*$ 和 $eta^*$ 到底存不存在呢?事实上,这三个东西的存在性仍然要满足一定条件。其中一种条件就是 Slater's condition:如果存在一个原问题的可行解 $x$ 满足 $$forall i = 1,2,dots,m quad g_i(x) < 0$$ 那么就存在这样的 $x^*$,$alpha^*$ 与 $eta^*$。Slater's condition 的证明我还没有仔细思考过,先假定是成立的吧- -

    所以在遇到可以用拉格朗日对偶解决的问题时,我们只需要首先检查问题是否能满足 Slater's condition,如果满足就可以利用 KKT 条件求出问题的解。

  • 相关阅读:
    iSCSI又称为IPSAN
    文档类型定义DTD
    HDU 2971 Tower
    HDU 1588 Gauss Fibonacci
    URAL 1005 Stone Pile
    URAL 1003 Parity
    URAL 1002 Phone Numbers
    URAL 1007 Code Words
    HDU 3306 Another kind of Fibonacci
    FZU 1683 纪念SlingShot
  • 原文地址:https://www.cnblogs.com/tsreaper/p/lagrange-duality.html
Copyright © 2011-2022 走看看