在上一节我们得到了转换后的优化问题:
\[\min_{w,b} \frac{1}{2}||w||^2\\
s.t. \hat\gamma^{(i)}\ge \hat\gamma = 1
\]
To be more general, 它具有这样的形式:
\[min_{w} \quad f(w)\\
s.t. g_{i}(w) \le 0\\
h_{j}(w) = 0
\]
这是一类带约束,且约束里面有不等式的最优化问题。(等式约束的问题可以通过拉格朗日乘子法来解决)
为了解决这个问题,定义广义拉格朗日函数
\[\mathfrak{L}(w, \alpha, \beta) = f(w) + \sum^{k}_{i=1}\alpha_i g_{i}(w) + \sum_{j=1}^l \beta_jh_{j}(w)\\
\alpha_i \ge 0
\]
定义:
\[\theta_P(w) = max_{\alpha, \beta}\quad \mathfrak{L}(w,\alpha,\beta)
\]
可以发现,在那些满足约束条件的 \(w\) 处,\(\theta_P(w) = f(w)\), 在那些不满足的地方,\(\theta_P(w) = +inf\)
这是因为在那些不满足的点处,可以取一些 \(\alpha_i\) 或者 \(\beta_j\) 使得后两项中的某一项趋向无穷。
因此,原问题与如下问题同解:
\[min_{w}\quad \theta_P(w)
\]
记\(min\quad \theta_P(w) = p^*\), 为原问题的解的值。
考虑对偶的形式:
\[\theta_D(\alpha, \beta) = \min_{w}\quad \mathfrak{L}(w, \alpha, \beta)
\]
以及对偶问题:
\[max_{\alpha, \beta}\quad \theta_D(\alpha, \beta)
\]
记 \(max_\quad \theta_D(\alpha, \beta) = d^*\), 为对偶问题的值。
而如下不等式显然成立:
\[d^* \le p^*
\]
推导:
\[\theta_D(\alpha, \beta) \le \mathfrak{L} \le \theta_P(w)\\
\max \quad\theta_D(\alpha, \beta) \le min\quad \theta_P(w)
\]
因此,若 \(w^*, \alpha^*, \beta^*\) 同时是对偶问题和原问题的解,且 \(d^* = p^*\), 那么它们分别是原问题和对偶问题的最优解。
这告诉我们,在有些条件下,原问题的解与对偶问题的解相同,这使得我们可以将求解原问题转化为求解对偶问题,因为对偶问题有时候比较容易求解。
下面给出这样的条件:
- 假设 \(f(w), g_i(w)\) 是凸函数,\(h_j(w)\) 是仿射函数,不等式约束 \(g_i(w)\) 是严格可行的,则存在 \(w^*, \alpha^*, \beta^*\) ,使得 \(w^*\) 是原问题的解,\(\alpha^*,\beta^*\) 是对偶问题的解,并且
\[p^* = d^* = \mathfrak{L}(w^*, \alpha^*,\beta^*)
\]
- 假设 \(f(w), g_i(w)\) 是凸函数,\(h_j(w)\) 是仿射函数,不等式约束 \(g_i(w)\) 是严格可行的,则 \(w^*,\alpha^*,\beta^*\) 分别是原问题和对偶问题的解的充要条件是满足 KKT 条件。
\[\nabla_{w}\mathfrak{L} = 0\\
\alpha^*_ig_i(w) = 0\\
g_i(w) \le 0\\
\alpha^*_i \ge 0\\
h_j(w) = 0
\]
其中第二条称为 KKT 的对偶互补条件,由此条件可知,若 \(\alpha^*_i \gt 0\), 则 \(g_i(w) = 0\)
有了上面的基础,下面来看 SVM 的对偶学习算法,把上面的定理用于 SVM 的最优化目标,写出广义拉格朗日函数:
\[\mathfrak{L} = \frac{1}{2}||w||^2 + \sum_{i=1}^m\alpha_i(-y^{(i)}(w^Tx^{(i)} + b) + 1)
\]
根据拉格朗日对偶性,原问题等价于求解如下问题:
\[\max_{\alpha} \min_{w,b} \mathfrak{L}(w,b,\alpha)
\]
先求解极小问题:
\[\nabla_{w}\mathfrak{L} = w - \sum_{i=1}^m \alpha_i y^{(i)}x^{(i)} = 0\\
\nabla_{b}\mathfrak{L} = -\sum_{i=1}^m \alpha_iy^{(i)} = 0
\]
带入拉格朗日函数得
\[\mathfrak{L} = -\frac{1}{2}\sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y^{(i)}y^{(j)}(x^{(i)},x^{(j)}) + \sum_{i=1}^m\alpha_i
\]
接下来求它对 \(\alpha\) 的极大,即
\[max_{\alpha}\quad -\frac{1}{2}\sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y^{(i)}y^{(j)}(x^{(i)},x^{(j)}) + \sum_{i=1}^m\alpha_i\\
s.t.\sum_{i=1}^m \alpha_iy^{(i)} = 0\\
\alpha_i \ge 0
\]
假设最后解得 \(\alpha = [\alpha_1,...,\alpha_m] ^T\),
\[w^* = \sum_{i=1}^m \alpha^*_i y^{(i)}x^{(i)}\\
b^* = y_j - \sum_{i=1}^m \alpha_i^*y^{(i)}(x^{(i)}, x^{(j)})\\
\alpha_j > 0
\]
分类决策函数即:
\[f(x) = sign(\sum_{i=1}^m \alpha^*_i y^{(i)}(x^{(i)}, x) + b^*)
\]
注意到在上面我们最后都写成内积的表达方式,这为我们使用核方法提供了便利。
在之前的讨论我们都假设了数据集是线性可分的,有时候可能在当前维度下决策边界是一个比较复杂的 "曲线", 这时我们如果将输入 x 通过线性映射 \(\phi\), 映射到高维空间,就可能化为在高维空间线性可分的情况。然而在高维空间计算向量的内积是 computationally expensive 的,如果我们能有一个函数 \(K(x,z) = \phi(x)^T\phi(z)\), 能够比较快的算出向量在高维空间的内积,那么将会十分方便。应用核方法只需要先将算法表示为内积的形式,再用 \(K(x,z)\) 替换即可。常用的核包括多项式核和高斯核。
到现在为止,我们可以用一句话概括一下 SVM : 最大间隔分类器 + kernel