拉格朗日对偶问题与 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 条件求出问题的解。

原文地址:https://www.cnblogs.com/tsreaper/p/lagrange-duality.html