在学习支持向量机(SVM)的过程中遇到了拉格朗日对偶问题与 KKT 条件,这里简单介绍一下拉格朗日对偶问题的推导。
拉格朗日对偶
拉格朗日对偶求解的问题为:$$\min_x f(x) \\ \text{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$ 与 $\beta_j$,构造拉格朗日函数 $$L(x,\alpha,\beta) = f(x) + \sum_{i=1}^m\alpha_i g_i(x) + \sum_{j=1}^n\beta_j h_j(x)$$ 帮助解决问题。接下来的所有式子中,要求 $\alpha_i \ge 0$。
另外,由于 $f(x)$ 与 $g_i(x)$ 都是凸函数,$h_j(x)$ 是仿射函数(当然也是凸的),而凸函数的和仍然是凸函数,所以 $L(x,\alpha,\beta)$ 是关于 $x$ 的凸函数。
原问题与对偶问题
定义原问题(primal problem)为 $$\min_x \max_{\alpha,\beta}L(x,\alpha,\beta) = \min_x\theta_p(x)$$ 给定 $x$ 之后,$\theta_p(x)$ 要做的就是调整 $\alpha$ 与 $\beta$,使函数值最大。
如果有一个 $g_i(x)$ 不符合限制条件(即 $g_i(x) > 0$),那么我们让对应的 $\alpha_i$ 趋近于正无穷,就能让函数值趋近于正无穷;同理,如果有一个 $h_j(x)$ 不符合限制条件(即 $h_j(x) \ne 0$),那么我们让对应的 $\beta_j$ 趋向与其同号的无穷,也可以让函数值趋近于正无穷;如果所有的限制条件都符合,由于 $g_i(x) \le 0$,那么为了让 $\theta_p(x)$ 最大,只好让所有的 $\alpha$ 都取 0,此时 $\theta_p(x) = f(x)$。也就是说,原问题通过新引入的两种变量,去掉了原来的限制条件。
定于对偶问题(dual problem)为 $$\max_{\alpha,\beta} \min_x L(x,\alpha,\beta) = \max_{\alpha,\beta} \theta_d(\alpha,\beta)$$
接下来我们将会证明,如果满足 KKT 条件,则对偶问题的解等于原问题的解。有时对偶问题与原问题相比,有一个更加高效的解决方法,此时我们就可以通过解对偶问题来获得原问题的解。
KKT 条件
KKT 条件陈述如下:如果存在 $x^*$,$\alpha^*$ 与 $\beta^*$ 满足
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. $\nabla_{x^*}L(x^*,\alpha^*,\beta^*) = 0$
4. $\forall i = 1,2,\dots,m \quad \alpha_i^*g_i(x^*) = 0$
则 $x^*$ 是原问题的解,$\alpha^*$ 与 $\beta^*$ 是对偶问题的解,并且 $\theta_p(x^*) = \theta_d(\alpha^*,\beta^*)$
必要性证明
由于 $x^*$ 是原问题的解,所以满足第 1 条;由于 $\alpha^*$ 与 $\beta^*$ 是对偶问题的解,所以满足第二条。
$$\theta_p(x^*) = \theta_d(\alpha^*,\beta^*) = \min_xL(x,\alpha^*,\beta^*) \\ = \min_x(f(x) + \sum_{i=1}^m\alpha_i^*g_i(x) + \sum_{j=1}^n\beta_j^*h_j(x)) \\ \le f(x^*) + \sum_{i=1}^m\alpha_i^*g_i(x^*) + \sum_{j=1}^n\beta_j^*h_j(x^*) \\ \le \max_{\alpha,\beta}(f(x^*) + \sum_{i=1}^m\alpha_ig_i(x^*) + \sum_{j=1}^n\beta_jh_j(x^*)) \\ = f(x^*) = \theta_p(x^*)$$ 由于第一项与最后一项相同,中间所有的小等于号都会取等。把第 3 行与第 5 行联系起来,我们有 $$\sum_{i=1}^m\alpha_i^*g_i(x^*) + \sum_{j=1}^n\beta_j^*h_j(x^*) = 0$$ 再联系 KKT 条件第 1 条,我们有 $$\sum_{j=1}^n\beta_j^*h_j(x^*) = 0$$ 即 $$\sum_{i=1}^m\alpha_i^*g_i(x^*) = 0$$ KKT 条件第 4 条得到满足。再由于拉格朗日函数是凸函数,所以要想让 $f(x^*) = \theta_p(x^*)$ 取最小值,必须要让关于 $x$ 的梯度为 0,KKT 条件第 3 条得到满足。
充分性证明
如果没有 $\theta_p(x^*) = \theta_d(\alpha^*,\beta^*)$,我们利用上一节的证明仍然可以得到 $\theta_d(\alpha,\beta) \le \theta_p(x)$。也就是说,对偶问题的值一定不大于原问题的值。
由对偶问题的定义有 $$\theta_d(\alpha^*,\beta^*) = \min_x(f(x) + \sum_{i=1}^m\alpha_i^*g_i(x) + \sum_{j=1}^n\beta_j^*h_j(x))$$ 而由 KKT 条件第 3 条,再加上 $L(x,\alpha,\beta)$ 是凸的,所以 $$\min_x(f(x) + \sum_{i=1}^m\alpha_i^*g_i(x) + \sum_{j=1}^n\beta_j^*h_j(x)) \\ = f(x^*) + \sum_{i=1}^m\alpha_i^*g_i(x^*) + \sum_{j=1}^n\beta_j^*h_j(x^*)$$ 再由 KKT 条件第 4 条有 $$ f(x^*) + \sum_{i=1}^m\alpha_i^*g_i(x^*) + \sum_{j=1}^n\beta_j^*h_j(x^*) = f(x^*) = \theta_p(x^*)$$ 我们发现原问题的解和对偶问题的解竟然相等了,由于 $\theta_d(\alpha,\beta) \le \theta_p(x)$,我们就知道原问题肯定取到了最小值,而对偶问题肯定取到了最大值,说明我们找到了两者的解。
可是说了半天,这个 $x^*$,$\alpha^*$ 和 $\beta^*$ 到底存不存在呢?事实上,这三个东西的存在性仍然要满足一定条件。其中一种条件就是 Slater‘s condition:如果存在一个原问题的可行解 $x$ 满足 $$\forall i = 1,2,\dots,m \quad g_i(x) < 0$$ 那么就存在这样的 $x^*$,$\alpha^*$ 与 $\beta^*$。Slater‘s condition 的证明我还没有仔细思考过,先假定是成立的吧- -
所以在遇到可以用拉格朗日对偶解决的问题时,我们只需要首先检查问题是否能满足 Slater‘s condition,如果满足就可以利用 KKT 条件求出问题的解。