zoukankan      html  css  js  c++  java
  • ML-对偶(Duality)问题初识

    Primal vs Dual

    为什么要把原始问题(primal) 转为 对偶问题(dual), 主要原因在于, 求解方便吧大概.

    对偶问题

    • 原始问题和其对偶问题, 都是对看待同一个问题的,从不同角度, 例如求解一个最小化问题, 然后通过对偶形式求解最大化问题等.
    • 原问题不好求解, 转为对偶问题, 有一种类似逼近的思想, 比如拉格朗日 或是 泰勒级数展开

    既然是对于同一个问题的不同角度来看, 假设就两个角度: primal 和 dual. 假设, 在primal 即原始问题下的最优解为 (p*), 在其dual的角度下, 最优解为 (d^*)则有

    • p* = d* (Strong duality), 强对偶, 比如SVM 的KKT条件
    • p* != d* (Week duality)

    从primal 转为 dual, 可以通过 拉格朗日乘子来实现.

    Lower bound property

    结论: p >= d**

    Standard Form:

    (minmize f_0(x) \ s.t. \ f_i(x) <=0, i=1,2,..m \ h_j(x) = 0, j = 1,2...p)

    通过拉格朗日乘子(将约束转为无约束求极值)

    why 拉格朗日乘子法?

    • 回顾多元函数求条件极值的思路(高数),

    • 假设2维, 曲线g(x,y) = 0 与f(x,y) =Ck, 的等值线(面) 相交, 那么沿着g(x,y)=0的方向两头向曲点靠近, 必然一个方向使得f(x,y)=Ck增大, 而另一个方向使CK减少, 必然在g(x,y)上存在一点使得Ck最小. 而这个点就是f(x,y)=a 与g(x,y)=0 相切的点, 切点处的两个法向量(梯度向量) 是平行的

    • 即: 在切点的法向量(梯度方向) 是平行的 (相乘(lambda) 倍常数, (lambda >0))

    假设切点是 ((x_0, y_0)), 根据f(x,y), g(x,y) 在该处的梯度是平行的, 即

    ( abla f(x_0, y_0) = (f_x(x_0, y_0), f_y (x_0, y_0)) \ abla g(x_0, y_0) = (g_x(x_0, y_0), g_y (x_0, y_0)))

    (由 abla f(x_0,y_0) // abla g(x_0,y_0) 得 \ frac { abla f(x_0,y_0) } { abla g(x_0,y_0)} = -lambda _0 因此得出:)

    (f_x(x_0, y_0) + lambda_0 g_x(x_0,y_0)) = 0 \ f_y(x_0, y_0) + lambda_0 g_y(x_0,y_0))=0 \ g(x_0, y_0) = 0)

    由此将条件极值问题通过拉格朗日乘子,转为了求解方程组的问题.

    为了求解,引入一个辅助函数 (L(x,y, lambda) = f(x,y) + lambda g(x,y))

    • 这个函数称为拉格朗日函数, (lambda) 称为拉格朗日乘子
    • 可微函数去极值的必要条件是梯度向量等于零

    即: ( abla L(x_0,y_0, lambda_0) = 0), 恰好对应上面的方程组, 巧了吗, 这不是.

    (ps, 当然也可以通过分析方法隐函数相关知识来推导出, 这里不展开了).

    通过拉格朗日, 将primal 转为dual 即

    (L(x, lambda, u) = f_0(x) + sum _{i=1}^{m} lambda_i f_i(x) + sum _{i=1}^p u_ih_i(x))

    转为拉格朗日的 dual 函数形式即:

    (g(lambda, u) = infimum_x L(x, lambda, u), inf..表示下界)

    (= inf_x [ f_0(x) + sum _{i=1}^{m} lambda_i f_i(x) + sum _{i=1}^p u_ih_i(x) ])

    即所谓的 lower bound property:

    即: (g(lambda, u) <= p* = f_0(x*) leftarrow forall lambda, u) (此乃最为关键一环),

    这种思想就是: (min primal ightleftharpoons max dual)

    证明如下:

    (minmize f_0(x) \ s.t. \ f_i(x) <=0, i=1,2,..m \ h_j(x) = 0, j = 1,2...p)

    假设 x' 是primal 问题的可行解, 即:

    (L(x', lambda, u) = f_0(x') + sum _{i=1}^{m} lambda_i f_i(x') + sum _{i=1}^p u_ih_i(x')) , 则必然有

    $f_0(x') >= L(x', lambda, u) >= inf_x (x,lambda, u) = g(lambda, u) $ (可证: (g(lambda, u) 是一个 凹函数 "cap"这样的) )

    • (sum _{i=1}^{m} lambda_i f_i(x') <= 0), 因为x'是可行解, 满足约束条件
    • (sum _{i=1}^p u_ih_i(x') = 0), 同样因为约束条件

    即证: $f_0(x') >= g(lambda, u), 即: p* >= d^* $

    case1: Least Norm Minimization

    (min x^Tx \ s.t. Ax=b)

    解:

    引入拉格朗日函数:

    (L(x, lambda) = x^Tx + lambda^T(Ax-b) \ 首先来"固定"x: \ abla_x L(x, lambda) = 0 = 2x+ A^Tlambda \ 得出 x = -frac {1}{2}A^T lambda \ 代入)

    (g(lambda) = inf_x [x^Tx + lambda ^T (Ax-b)] \ = (-frac {1}{2}A^T lambda) ^T (-frac {1}{2}A^T lambda) + lambda ^T[A( -frac {1}{2}A^T lambda)-b])

    (= frac {1}{4} lambda^T A A^T lambda - frac {1}{2} lambda^T AA^T lambda - lambda^Tb)

    $ = - frac{1}{4} lambda^T AA^T lambda - lambda^Tb $

    即: $ p* >= - frac{1}{4} lambda^T AA^T lambda - lambda^Tb $

    即对应的dual:

    (max z = - frac{1}{4} lambda^T AA^T lambda - lambda^Tb \ s.t. ..)

    case2: Linear Programing

    (min w^Tx \ s.t. \ Ax=b \ x succ =0)

    先进行标准化得到:

    (min w^Tx \ s.t. \ Ax=b \ -x <=0)

    引入拉格朗日函数得:

    (L(x, lambda, u) = w^Tx + lambda^T (Ax-b) + u ^T(-x))

    (= w^Tx + lambda^T Ax - lambda ^Tb - u^T x)

    (= (w + A^T lambda - u) x -lambda^Tb)

    同样首先"固定x:"

    ( abla_x L(x, lambda, u) = 0 = w + A^T lambda -v \ 得出: x 好像不影响哦)

    将不影响的x 代入g得到:

    (g(lambda, u) = inf_x ( -lambda^Tb))

    即对应的 daul:

    (max -lambda ^T b \ s.t. w+A^T lambda- u = 0)

    发现 ( u >0) 其实跟木目标函数无关, 即可转为:

    (max - u ^T b \ s.t. w+A^T >= 0)

    Strong and Weak duality

    由上, 关于primal 问题和 dual 问题, 如果其最优解分别是 p* 和 d* ,

    根据 lower bound property 的推导则有**p * >= d * ** :

    • if p* = d*, 则称为强对偶

    • if p* < d*, 则称为弱对偶

    强对偶(strong) ,一般情况下不会发生, 在凸函数下一般会成立; 对于non-convex 有时是会成立的. 针对于convex 判断其是强对偶的条件称为:

    slater's condtions

    即: (minmize f_0(x) \ s.t. \ f_i(x) <=0, i=1,2,..m \ h_j(x) = 0, j = 1,2...p)

    (exists x', f_i(x') <0, h_j(x')=0)

    则称满足 slater's conditons, 可判定该凸函数是强对偶的哦.

    complementary slackness

    暂时我也不知道该怎么进行翻译, "松弛条件?", 感觉也不大合理. 算了, 就英文吧, 反正都是一个符号而已. 假设, 我们来来*考虑强对偶的情况下(p * = d ):

    • x* 是 primal 问题的解
    • (lambda^*, u^*) 是dual 问题的解

    (minmize f_0(x) \ s.t. \ f_i(x) <=0, i=1,2,..m \ h_j(x) = 0, j = 1,2...p)

    即有

    (f_0(x^*) = g(lambda^*, u^*) \ 对于 \ inf_x [f_0(x) + sum _{i=1}^{m} lambda_i ^* f_i(x) + sum _{i=1}^p u_i^*h_i(x) ])

    必然:

    (<= inf_x [f_0(x^*) + sum _{i=1}^{m} lambda_i ^* f_i(x^*) + sum _{i=1}^p u_i^*h_i(x^*) ])

    • (h_i(x*) = 0)
    • (lambda^* f_i(x^*)<=0)

    (<= f_0(x^*))

    这就发现有点矛盾(= 和 <=)了, 要使不等式成立的话, 发现只能取等于哦, 即:

    (lambda^* f_i(x^*)=0), 这样也就意味着2种情况:

    • (lambda ^* = 0, 然后 lambda^* f_i(x^*)<=0)
    • (lambda ^* > 0, 然后 lambda^* f_i(x^*)=0)

    把这个条件: (lambda^* f_i(x^*)=0) 就称为 complementary slackness, 它是构成KKT条件的一部分, 后面再整一波KKT吧.

  • 相关阅读:
    [转] 关于hibernate的缓存使用
    周鸿祎,我的互联网方法论
    cwRsync window下的跨服务器的文件同步
    一个代价11万的bug
    批处理备份
    NodeJs环境部署
    spring接收参数
    @Autowired
    谈谈把网站迁移到阿里云的一些感想和其中遇到的一些问题
    HTML5+JS 《五子飞》游戏实现(一)规则
  • 原文地址:https://www.cnblogs.com/chenjieyouge/p/11925287.html
Copyright © 2011-2022 走看看