码迷,mamicode.com
首页 > 其他好文 > 详细

拉格朗日乘子法与对偶问题

时间:2017-10-22 22:02:11      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:拉格朗日乘子   优化   求导   svm   ant   学习   baidu   mat   sla   

主问题 (primal problem)

具有 \(m\) 个等式约束和 \(n\) 个不等式约束,且可行域 \(\mathbb{D} \subset \mathbb{R}^d\)的非空优化问题

\[\begin{align} \min_x \ f(\boldsymbol{x}) \notag\\ s.t.\ h_i(\boldsymbol{x}) &= 0 \ {(i=1,\cdots ,m)},\g_j(\boldsymbol{x}) &\leqslant 0 \ {(j = 1,\cdots ,n)}.\notag \end{align}\]

引入拉格朗日乘子 \(\boldsymbol{\lambda} = (\lambda_1,\cdots ,\lambda_m)^T\) 和 \(\boldsymbol{\mu} = (\mu_1,\cdots ,\mu_n)^T\),得到拉格朗日函数如下

\[\begin{equation} \boldsymbol{L(x,\lambda,\mu)} = f(\boldsymbol{x})+\sum_{i=1}^{m}\lambda_ih_i(\boldsymbol{x}) + \sum_{j=1}^{n}\mu_jg_j(\boldsymbol{x}) \end{equation}\]
由不等式约束引入的 KKT 条件为
\[\begin{equation} \begin{cases} g_j(\boldsymbol{x}) \leqslant 0;\\mu_j \geqslant 0;\\mu_jg_j(\boldsymbol{x}) = 0 \end{cases} \end{equation}\]
只需要求解拉格朗日函数的极小值即可。

对拉格朗日乘式的理解

假设目标函数在 \(\boldsymbol{x^*}\) 处取得极值,那么对于这个点,所有的\(h_i(\boldsymbol{x^*})=0\),某些\(g_j(\boldsymbol{x^*})=0\),某些\(g_j(\boldsymbol{x^*})<0\)。

  1. 对于所有的\(h_i(\boldsymbol{x})\)都有如下结论:

    • 对于任意点,\(\nabla h(\boldsymbol{x})\) 和约束曲面正交。
    • 在最优点,\(\nabla f(\boldsymbol{x^*})\) 也和约束曲面正交。

    结合以上两点,存在\(\lambda\),使得
    \[\begin{equation} \nabla f(\boldsymbol{x^*}) + \lambda \nabla h(\boldsymbol{x^*}) = 0 \end{equation}\]
    对 \((2)\) 式的前两项对 \(\boldsymbol{x}\) 求导,即可得到上面的式子;对 \(\lambda\) 求导得到约束条件 \(h(\boldsymbol{x}) = 0\)。即当 \((2)\) 式前两项取得极值时,必满足条件\(h_i(\boldsymbol{x}) = 0\)。

  2. 对于某些 \(g_j(\boldsymbol{x})\),满足\(g_j(\boldsymbol{x^*}) = 0\),此时必定对应的 \(\mu_j>0\)
    由于在 \(\boldsymbol{x^*}\)处取得极值,因此必定有\( \nabla f(\boldsymbol{x^*}) + \mu_j \nabla g(\boldsymbol{x^*}) = 0\)。
    如果\(\mu_j < 0\),即两个函数的梯度方向相同,那么可以沿着\(g_j(\boldsymbol{x})\leqslant0\) 的方向移动\(\boldsymbol{x}\),此时\(f(\boldsymbol{x})\)必定会减小,不符合已取得极小值的假设。

  3. 对于某些 \(g_j(\boldsymbol{x})\),满足\(g_j(\boldsymbol{x^*}) < 0\),此时必定对应的 \(\mu_j=0\)
    若\(\mu_j\neq0\) ,则\(\boldsymbol{L(x,\lambda,\mu)}\)和\(f(\boldsymbol{x})\)值不相同。

对偶问题 (dual problem)

\((2)\) 式的对偶函数\(\Gamma: \mathbb{R}^m\times \mathbb{R}^m\mapsto \mathbb{R}\)定义为:
\[\begin{align} \Gamma(\boldsymbol{\lambda,\mu}) &=\inf_{\boldsymbol{x}\in \mathbb{D}}\boldsymbol{L(x,\lambda,\mu)}\notag\\ &=\inf_{\boldsymbol{x}\in \mathbb{D}}(f(\boldsymbol{x})+\sum_{i=1}^{m}\lambda_ih_i(\boldsymbol{x}) + \sum_{j=1}^{n}\mu_jg_j(\boldsymbol{x}) ) \end{align}\]
即给定\(\boldsymbol{\lambda,\mu}\)之后,在可行域上拉格朗日函数的下确界。
对于任意的 \(\boldsymbol{\mu}\geqslant 0\) 和 \(\boldsymbol{\lambda}\),都有

\[\sum_{i=1}^{m}\lambda_ih_i(\boldsymbol{x}) + \sum_{j=1}^{n}\mu_jg_j(\boldsymbol{x}) \leqslant 0\]
因此对于可行域上的任意一点\(\boldsymbol{\tilde{x}}\),都有
\[\Gamma(\boldsymbol{\lambda,\mu}) =\inf_{\boldsymbol{x}\in \mathbb{D}}\boldsymbol{L(x,\lambda,\mu)}\leqslant \boldsymbol{L(\tilde{x},\lambda,\mu)} \leqslant f(\boldsymbol{\tilde{x}})\]
若主问题的最优解是\(p^*\),则对于任意的 \(\boldsymbol{\mu}\geqslant 0\) 和 \(\boldsymbol{\lambda}\),都有
\[\Gamma(\boldsymbol{\lambda,\mu}) \leqslant p^*\]
对偶函数给出了主问题最优解的下界。那么下界最大是什么,这就是主问题的对偶问题,即
\[\begin{equation} \max_{\boldsymbol{\lambda,\mu}}\Gamma(\boldsymbol{\lambda,\mu})\ s.t.\ \boldsymbol{\mu}\geqslant 0 \end{equation}\]

\((6)\) 式是\((1)\) 式的对偶问题。无论主问题的凸性如何,对偶问题始终是凸优化问题。
假设\((6)\)式的最优值是 \(d^*\),显然 \(d^* \leqslant q^*\)。如果 \(d^* = q^*\),那么称为“强对偶性成立”,可以由对偶问题求得主问题的最优下界。
如果主问题是凸优化问题,那么强对偶性成立。
此时可由对偶问题获得原问题的解。
SVM 即用到了对偶问题。

参考

拉格朗日乘子法与对偶问题

标签:拉格朗日乘子   优化   求导   svm   ant   学习   baidu   mat   sla   

原文地址:http://www.cnblogs.com/huahuahu/p/la-ge-lang-ri-cheng-zi-fa-yu-dui-ou-wen-ti.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!