zoukankan      html  css  js  c++  java
  • 拉格朗日对偶

    本文承接上一篇 约束优化方法之拉格朗日乘子法与KKT条件,将详解一些拉格朗日对偶的内容。都是一些在优化理论中比较简单的问题或者一些特例,复杂的没见过,但是简单的刚接触都感觉如洪水猛兽一般,所以当真是学海无涯。

    在优化理论中,目标函数 $f(x)$ 会有多种形式:如果目标函数和约束条件都为变量 $x$ 的线性函数, 称该问题为线性规划; 如果目标函数为二次函数, 约束条件为线性函数, 称该最优化问题为二次规划; 如果目标函数或者约束条件均为非线性函数, 称该最优化问题为非线性规划。每个线性规划问题都有一个与之对应的对偶问题,对偶问题有非常良好的性质,以下列举几个:

    • 对偶问题的对偶是原问题;
    • 无论原始问题是否是凸的,对偶问题都是凸优化问题;
    • 对偶问题可以给出原始问题一个下界;
    • 当满足一定条件时,原始问题与对偶问题的解是完全等价的;

    比如下边这个例子,虽然原始问题非凸,但是对偶问题是凸的:

    egin{aligned}
    &min_x left ( x^4-50x^2+100x  ight ) \
    & s.t. x ge 4.5
    end{aligned}

    1

    原始问题

    开始步入正题,首先给出不等式约束优化问题:

    egin{aligned}
    &min_x   f(x)  \
    &s.t.  h_i(x) = 0 ,   i = 1,2,...,m \
    &    g_j(x) le 0,   j = 1,2,...,n
    end{aligned}

    定义 Lagrangian 如下:

    [ L(x,alpha,eta) =f(x) + sum_{i=1}^m alpha_i h_i(x) + sum_{j=1}^neta_jg_j(x) ]

    根据以上 Lagrangian 便可以得到一个重要结论:

    [ f(x) =max_{alpha eta; eta_ige 0} L(x,alpha,eta) > L(x,alpha,eta) ag{*}]

    (*) 式很容易验证,因为满足约束条件的 $x$ 会使得 $h_i(x)=0$ ,因此第二项消掉了;而 $g_j(x) le 0$ ,并且使得 $eta_j ge 0$,因此会有 $eta_j g_j(x) le 0$ ,所以最大值只能在它们都取零的时候得到,这个时候就只剩下 $f(x)$ 了。反之如果有任意一个约束条件不满足,则只需令其相应的乘子 $ ightarrow +infty$ ,则会得到 $L(x,alpha,eta) ightarrow +infty $,这样将导致问题无解,因此必须满足约束条件。经过这样一转变,约束都融合到了一起而得到如下的无约束的优化目标:

    [min_x f(x)  = min_x max_{alpha,eta; eta_ige 0} L(x,alpha,eta) ]

    对偶问题

    上式与原优化目标等价,将之称作原始问题 , 将原始问题的解记做 $p^*$,如此便把带约束问题转化为了无约束的原始问题,其实只是一个形式上的重写,方便找到其对应的对偶问题,首先为对偶问题定义一个对偶函数(dual function)

    [ D(alpha,eta) = min_x  L(x,alpha,eta) ]

    有了对偶函数就可给出对偶问题了,与原始问题的形式非常类似,只是把 min 和 max 交换了一下:

    [max_{alpha ,eta; eta_ige 0} min_x  L(x,alpha,eta) ]

    然后定义对偶问题的最优解即关于 $alpha   eta$ 的函数:

    [ d^* = max_{alpha,eta; eta_ige 0} D(alpha,eta)]

    对偶问题和原始问题的最优解并不相等,而是满足的如下关系:

    [d^* le p^* ]

    直观地,可以理解为最小的里最大的那个要比最大的中最小的那个要大。具体的证明过程如下:

    证明在这里,首先这里的约束要全部满足,对偶问题与原始问题的关系如下:

    [ D(alpha,eta) =min_x  L(x,alpha,eta) le L(x,alpha,eta) le max_{alpha,eta,eta_i ge 0}L(x,alpha,eta) =f(x)]

    即 $D(alpha,eta) le f(x)$,所以自然而然可得:

    [d^*= max_{alpha,eta;eta_i ge 0} D(alpha,eta) le min_x f(x) =p^* ]

    即现在通过对偶性,为原始问题引入一个下界,$d^* le p^*$ .

    这个性质便叫做弱对偶性(weak duality),对于所有优化问题都成立,即使原始问题非凸。这里还有两个概念: $f(x) – D(alpha,eta)$ 叫做对偶间隔(duality gap), $p^* –d^*$ 叫做最优对偶间隔(optimal duality gap)。

    之前提过无论原始问题是什么形式,对偶问题总是一个凸优化的问题,这样对于那些难以求解的原始问题 (甚至是 NP 问题),均可以通过转化为偶问题,通过优化这个对偶问题来得到原始问题的一个下界, 与弱对偶性相对应的有一个强对偶性(strong duality) ,强对偶即满足:

    [d^* = p^*]

    强对偶是一个非常好的性质,因为在强对偶成立的情况下,可以通过求解对偶问题来得到原始问题的解,在 SVM 中就是这样做的。当然并不是所有的对偶问题都满足强对偶性 ,在 SVM 中是直接假定了强对偶性的成立,其实只要满足一些条件,强对偶性是成立的,比如说 Slater 条件与KKT条件。

    Slater 条件

    若原始问题为凸优化问题,且存在严格满足约束条件的点 $x$ ,这里的“严格”是指 $g_i(x)≤0$ 中的“$le$”严格取到“$<$”,即存在 $x$ 满足 $g_i(x)<0$ ,$i = 1,2,…,n$ ,则存在 $x^*,alpha^* ,eta^*$ 使得 $x^*$ 是原始问题的解, $alpha^* ,eta^*$ 是对偶问题的解,且满足:

    [p^* = d^* = L(x^*,alpha^* ,eta^*)]

    也就是说如果原始问题是凸优化问题并且满足 Slater 条件的话,那么强对偶性成立。需要注意的是,这里只是指出了强对偶成立的一种情况,并不是唯一的情况。例如,对于某些非凸优化的问题,强对偶也成立。SVM 中的原始问题 是一个凸优化问题(二次规划也属于凸优化问题),Slater 条件在 SVM 中指的是存在一个超平面可将数据分隔开,即数据是线性可分的。当数据不可分时,强对偶是不成立的,这个时候寻找分隔平面这个问题本身也就是没有意义了,所以对于不可分的情况预先加个 kernel 就可以了。

    KKT条件

    假设 $x^*$ 与 $alpha^*,eta^*$ 分别是原始问题(并不一定是凸的)和对偶问题的最优解,且满足强对偶性,则相应的极值的关系满足:

    egin{aligned}
    f(x^*) &= d^* = p^* =D(alpha^*,eta^*)  \
    &=min_x f(x)+ sum_{i = 1}^m alpha_i^*h_i(x) + sum_{j=1}^neta_j^*g_j(x) \
    & le f(x^*)+ sum_{i = 1}^m alpha_i^*h_i(x^*) + sum_{j=1}^neta_j^*g_j(x^*) \
    &le f(x^*)
    end{aligned}

    这里第一个不等式成立是因为 $x^*$ 为 $L(x,alpha^*,eta^*)$ 的一个极大值点,最后一个不等式成立是因为 $h_i(x^*) = 0$ ,且 $g_j(x^*) le 0 ,eta_j ge 0$,($eta_j ge 0$ 是之前 (*) 式的约束条件)因此这一系列的式子里的不等号全部都可以换成等号。根据公式还可以得到两个结论:

    1)第一个不等式成立是因为 $x^*$ 为 $L(x,alpha^*,eta^*)$ 的一个极大值点,由此可得:

    [ abla_{x^*} L(x,alpha^*,eta^*) = 0]

    2)第二个不等式其实就是之前的 (*)  式,$eta_j^*g_j(x^*)$ 都是非正的,所以这里有:

    [eta_j^* g_j(x^*)=0,    i=1,2,…,m]

    也就是说如果 $eta_j^*>0$,那么必定有 $g_j(x^*)=0$ ;反过来,如果 $g_j(x^*)<0$ 那么可以得到 $eta_j^*=0$ ,即:

    [left { egin{aligned}eta^*_j >0 Rightarrow g^*_j(x) = 0 \ g^*_j(x) < 0 Rightarroweta_j^*=0end{aligned} ight .]

    这些条件都似曾相识,把它们写到一起,哎?不就是传说中的 KKT (Karush-Kuhn-Tucker) 条件么:

    egin{align}  abla_x L(x,alpha,eta) &= 0   \ eta_jg_j(x) &= 0  , j=1,2,...,n\ h_i(x)&= 0 , i=1,2,...,m  \ g_j(x) &le 0  ,   j=1,2,...,n  \ eta_j &ge  0 , j=1,2,...,n  \ end{align}

    总结来说就是说任何满足强对偶性的优化问题,只要其目标函数与约束函数可微,任一对原始问题与对偶问题的解都是满足 KKT 条件的。即满足强对偶性的优化问题中,若 $x^*$ 为原始问题的最优解,$alpha^*,eta^*$ 为对偶问题的最优解,则可得 $x^*,alpha^*,eta^*$ 满足 KKT 条件。不知道够不够清楚,书中原话(P243)是这样的$^{7.1}$

    1

    上面只是说明了必要性,当满足原始问题为凸优化问题时,必要性也是满足的,也就是说当原始问题是凸优化问题,且存在 $x^*,alpha^*,eta^*$ 满足 KKT 条件,那么它们分别是原始问题和对偶问题的极值点并且强对偶性成立,证明如下:

    首先原始问题是凸优化问题,固定 $alpha^*,eta^*$ 之后对偶问题 $D(alpha^*,eta^*)$ 也是一个凸优化问题,$x^*$ 是 $L(x,alpha^*,eta^*)$ 的极值点:

    egin{aligned}
    D(alpha^*,eta^*)
    &= min_x L(x,alpha^*,eta^*) \
    &= L(x^*,alpha^*,eta^*) \
    & = f(x^*)+sum_{i=1}^malpha_i^*h_i(x^*)+sum_{j=1}^neta_j^*g_j(x^*) \
    &= f(x^*)
    end{aligned}

    最后一个式子是根据 KKT 条件中的 $h_i(x) = 0$ 与 $eta_jg_j(x) = 0$ 得到的。这样一来,就证明了对偶间隔为零,也就是说,强对偶成立。 所以当原始问题为凸优化问题时,书中的原话(P244)如下$^{7.1}$

    1

    关于对偶的问题到此为止,其实都是很优化方法中比较简单的内容。总结一下。本文介绍了对偶的基本概念,对于一个约束优化问题,找到其对偶问题,当弱对偶成立时,可以得到原始问题的一个下界。而如果强对偶成立,则可以直接求解对偶问题来解决原始问题。 SVM 就是这样的。对偶问题由于性质良好一般比原始问题更容易求解,在 SVM 中通过引入对偶问题可以将问题表示成数据的内积形式从而使得 kernel trick 的应用更加自然)。此外,还有一些情况会同时求解对偶问题与原始问题 ,比如在迭代求解的过程中,通过判断对偶间隔的大小,可以得出一个有效的迭代停止条件。

     

    参考文献

    1. https://www.cs.cmu.edu/~ggordon/10725-F12/slides/15-duality.pdf

       https://www.cs.cmu.edu/~ggordon/10725-F12/slides/16-kkt.pdf

    2. http://www.csc.kth.se/utbildning/kth/kurser/DD3364/Lectures/Duality.pdf

    4. http://www.cnblogs.com/jerrylead/archive/2011/03/13/1982684.html

    5. http://blog.pluskid.org/?p=702

    6. http://blog.pluskid.org/?p=702

    7.书籍 Convex Optimization Cambridge版 (7.1)|  统计学习方法 李航(7.2)

  • 相关阅读:
    Overloaded的方法是否可以改变返回值的类型
    parseXXX的用法
    java的类型转换问题。int a = 123456;short b = (short)a;System.out.println(b);为什么结果是-7616?
    UVA 10405 Longest Common Subsequence(简单DP)
    POJ 1001 Exponentiation(大数处理)
    POJ 2318 TOYS(计算几何)(二分)
    POJ 1265 Area (计算几何)(Pick定理)
    POJ 3371 Flesch Reading Ease (模拟题)
    POJ 3687 Labeling Balls(拓扑序列)
    POJ 1094 Sorting It All Out(拓扑序列)
  • 原文地址:https://www.cnblogs.com/ooon/p/5723725.html
Copyright © 2011-2022 走看看