zoukankan      html  css  js  c++  java
  • 拉格朗日对偶性(Lagrange duality)

    拉格朗日对偶性(Lagrange duality)

    1. 从原始问题到对偶问题

     对偶性是优化理论中一个重要的部分,带约束的优化问题是机器学习中经常遇到的问题,这类问题都可以用如下形式表达

    [egin{aligned} min ;; &f(x) \ s.t.;; & g_i(x) le 0 ,;; i=1,cdots, m\ & h_i(x) = 0,;; i=1,cdots,n\ end{aligned} ]

    约束条件减少需要求解的空间,但在机器学习中,约束条件往往比较复杂并且较多。因此先计算约束条件再在约束空间中计算最优值非常不方便。于是用广义拉格朗日函数将带约束优化问题转化为无约束优化问题

    [L(x,lambda,eta) = f(x)+sum_i^m lambda_i g_i(x) + sum_i^n eta_i h_i(x) ]

     这时,若按照拉格朗日乘数法直接对(x、lambda、eta)求偏导的话,结果对简化复杂的约束条件没有益处。我们希望获取一种能够优化原问题,又能简化计算的方法。于是进一步挖掘(lambda、eta)能够带来的东西,当我们对广义拉格朗日函数作关于(lambda、eta) 的最大化时

    [ heta_P(x) = underset {lambda ge 0,eta} {max};L(x,lambda,eta) ]

    其中,要求(lambda ge 0) ,很容易发现,在这个最大化问题中,若(x) 不满足原问题中的约束,那么这个最大化的结果一定是正无穷。例如,(g_i(x)>0) ,在关于(lambda、eta) 最大化时,其系数便会趋于无穷大使得整个式子趋于无穷大。而当(x) 满足约束时,最大化的结果一定是(f(x)) 。依据这个特性,我们可以将原广义拉格朗日函数的极小化问题拆解为两步

    [underset x {min} ;L(x,lambda,eta) = underset x {min} ; heta_P(x) = underset x {min} ;underset {lambda ge 0,eta} {max};L(x,lambda,eta) ]

    拆解后的问题$ underset x {min} ;underset {lambda ge 0,eta} {max};L(x,lambda,eta)$ 称为广义拉格朗日函数的极小极大问题,它与原问题是完全等价的。在对偶性中,这个问题被称为原始问题(Primal problem)。

      通过原始问题的极小极大问题,可以引出它的对偶问题(Dual problem),其对偶问题就是极小极大问题交换一个位置而已。首先定义

    [ heta_D(lambda,eta) = underset {x} {min} L(x,lambda,eta) ]

    那么其对偶问题就是

    [underset {lambda ge 0,eta} {max} ; heta_D(lambda,eta)= underset {lambda ge 0,eta} {max} ;underset {x} {min} L(x,lambda,eta) ]

    这个问题是广义拉格朗日函数的极大极小问题,将其展开为约束最优化问题得到

    [underset {lambda ,eta} {max} ; heta_D(lambda,eta)= underset {lambda ,eta} {max} ;underset {x} {min} L(x,lambda,eta)\ s.t. lambda_i ge 0,;; i= 1,2,cdots,k ]

      可以看出两个函数的变量并不相同,对于原始问题,它的变量是(x),而对于对偶问题,它的变量是(lambda,;eta) 。并且,这两个问题并不等价,有时候甚至差的有点多。可以理解为其他国家最厉害的乒乓球队员,也没有中国最菜的乒乓球队员厉害,当然这比喻并不准确。

    2. 弱对偶与强对偶

      对偶函数可以理解为给原始函数找了一个下界,在原始函数计算困难的时候,可以通过解对偶函数来得到一个近似的值。并且在函数满足一定条件的时候,对偶函数的解与原始函数的解是等价的。具体来说,对偶 函数( heta_D(lambda,eta)=underset {x} {min} L(x,lambda,eta)) 确定了原始问题的一个下界,即

    [ heta_D(lambda,eta) =underset {x} {min} L(x,lambda,eta)le L(x,lambda,eta)le underset {lambda ge 0,eta} {max};L(x,lambda,eta)= heta_P(x) ag{2-a} ]

    [ heta_D(lambda,eta) le heta_P(x) ]

    其中,( heta_d(lambda,eta))看作其他国家乒乓球运动员,( heta_P(x))看作中国乒乓球运动员,那么其他国家最厉害的也不一定比得上中国最差的。即

    [d^* =underset {lambda ,eta} {max} ; heta_D(lambda,eta)le underset x {min} ; heta_P(x)=p^* ag{2-b} ]

    这个性质便是弱对偶性( weak duality )。弱对偶性对任何优化问题都成立,这似乎是显然的,因为这个下界并不严格,有时候甚至取到非常小,对近似原问题的解没多大帮助。既有弱对偶性,那么便有强对偶性,强对偶性是指

    [d^* = p^* ]

    显然这是一个令人惊喜的性质,这意味着可以通过求解较简单的对偶问题(因为对偶问题总是一个凸优化问题)来得到原问题的解。不过强对偶性在优化问题中是一个非常高深的问题,对我来说更是如此。因此我只能介绍关于强对偶的两个条件:严格条件和KKT条件。

    3. KKT条件

      严格条件是指原始问题是凸函数,约束条件是仿射函数,若此时不等式约束满足严格条件,即不等号是严格不等号,不能取等号,则强对偶性成立。这个条件在SVM中即变成了对任意一个点,都存在超平面能对其正确划分,也就是数据集是线性可分的。严格条件是强对偶性的充分条件,但并不是必要条件。有些不满足严格条件的可能也有强对偶性。

      KKT条件是在满足严格条件的情况下,推导出的变量取值的关系,假设原始问题和对偶问题的极值点分别是(x^*)(lambda^*,eta^*) ,对应的极值分别是(p^*)(d^*) 。由于满足强对偶性,有(p^*=d^*) 。将极值点带入得到

    [d^* = heta_D(lambda^*,eta^*) =underset x {min} L(x,lambda^*,eta^*) ag{3-a} ]

    这说明(x^*)(L(x,lambda^*,eta^*))的一个极值点,那么(L(x,lambda^*,eta^*))(x^*)处的梯度为0,即

    [ riangledown f(x^*)+sum_i^mlambda_i g_i(x^*) + sum_i^n eta_i h_i(x^*) = 0 ag{3-b} ]

    由式((2-a))

    [egin{aligned} d^* =& underset x {min} L(x,lambda^*,eta^*) \ le &L(x^*,lambda^*,eta^*)\ =& f(x^*) + sum_i^m lambda_i g_i(x^*) + sum_i^n eta_i h_i(x^*)\ le & p^* = f(x^*) end{aligned} ag{3-c} ]

    由于(p^*=d^*),因此上式不等号应取到等号,再与式((3-b))

    [sum_i^m lambda_i g_i(x^*) + sum_i^n eta_i h_i(x^*) = 0 ag{3-d} ]

    由于注意(x^*)作为该问题的解,是一定满足(h(x^*) = 0)的,因此

    [lambda_i g_i(x) = 0,;;;i=1,2,cdots,m ]

    这个条件叫做互补松弛性(complementary slackness)。

      其中,(lambda ge 0)称为对偶可行性。并且它似乎可以从原始问题到对偶问题的极小极大问题中总结出。不过这里可以有另一种解释,简化一下,考虑只有不等式约束的问题

    [egin{aligned} min ;; &f(x) \ s.t.;; & g(x) le 0 \ end{aligned} ]

    其中(g(x) le 0)称为原始可行性,由它确定的区间称为可行域。假设(x^*)为该问题的解,那么其位置有两种情况

    • (1) (g(x^*)<0)时,解在可行域中取得。这时解称为内部解,约束条件无效,原问题变为无约束问题。

    • (2) (g(x^*)=0)时,解在边界上取得, 这时解称为边界解,约束条件有效。

    内部解直接由梯度为0即可解得,这里主要讨论边界解。

      对于(g(x)=0)的约束问题,建立拉格朗日函数

    [L(x,lambda) = f(x) + lambda g(x) ]

    因为驻点(x^*)在其上取得,那么该函数在(x^*)处的梯度为0,即

    [ riangledown f(x^*) + lambda riangledown g(x^*) = 0 ]

    这里两个梯度的方向应该是可以确定的,(f(x))的极小值在边界取到,那么可行域内部的(f(x))应该都是大于这个极小值的,因此( riangledown f)的方向是可行域内部。而( riangledown g)的方向是可行域外部,因为约束条件是(g(x)le 0),也就是可行域外部都是(g(x)>0),所以梯度方向指向函数增加的方向。这说明两个函数的梯度方向相反,那上面这个等式要成立,(lambda)只能是大于等于0。这就是对偶可行性。

      再将其他的条件组合起来,便得到了KKT条件:

    [egin{aligned} riangledown _x L(x^*,lambda^*,eta^*) =0 \ g_i(x^*) le 0\ lambda_i ge 0\ lambda_i g_i(x^*) =0 end{aligned} ]

    Reference:

    [1] Convex Optimization

    [2] Pattern Recognition and Machine Learning.

    [3] 统计学习方法

    [4] 支持向量机:Duality

    [5] KKT条件

  • 相关阅读:
    Lambda
    Thread&线程池
    异常
    Map
    List and Set
    Collection和迭代器Iterator
    Object类,常用API
    (一)自定义 mybatis 之框架介绍
    Nginx三大功能及高并发分流
    http协议改为https
  • 原文地址:https://www.cnblogs.com/breezezz/p/11303722.html
Copyright © 2011-2022 走看看