来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件

上一节我们学习了支持向量机的优化目标为:

\begin{align} &\mathop \min_{w,b} \frac{1}{2}\|w\|^2 \\ &s.t. y_i(w^Tx_i + b) \geq 1, i = 1,2,\dots,n \end{align}

这是一个 凸二次规划(convex quadratic programming) 问题,可以用现成的 QP 优化包来求解。(TODO)

另外,还可以通过 拉格朗日乘子法 将其转换为解法更高效的对偶形式,其主要思想是将约束条件函数与原函数联系到一起,使之配成与变量数量相等的等式方程,从而求出原函数极值的各个变量的解。转换的方法简单来说就是对每一个约束条件加上一个 拉格朗日乘子(Lagrange multiplier),定义出 拉格朗日函数 如下:

L(w,b,α)=12w2i=1nαi(yi(wTxi+b)1) L(w,b,\alpha) = \frac{1}{2}\|w\|^2 - \sum_{i=1}^n \alpha_i (y_i(w^Tx_i + b) - 1)

其中,引入了一个新的变量 α\alpha,这个变量就是 拉格朗日乘子。所以支持向量机的优化目标可以写成:

\mathop \min_{w,b} \mathop \max_{\alpha} L(w,b,\alpha)

根据 拉格郎日对偶性,可以得到该优化目标的 对偶问题(dual problem):

\mathop \max_{\alpha} \mathop \min_{w,b} L(w,b,\alpha)

为了求解这个问题,我们可以先求 \mathop \min_{w,b} L(w,b,\alpha),很显然,这是一个最小值问题,直接使用求导的方法,我们对 wwbb 分别求偏导:

L(w,b,α)w=wi=1nαiyixi \frac{\partial L(w,b,\alpha)}{\partial w} = w - \sum_{i=1}^n \alpha_i y_i x_i L(w,b,α)b=i=1nαiyi \frac{\partial L(w,b,\alpha)}{\partial b} = \sum_{i=1}^n \alpha_i y_i

令偏导等于 0,可以得到:

w=i=1nαiyixi w = \sum_{i=1}^n \alpha_i y_i x_i i=1nαiyi=0 \sum_{i=1}^n \alpha_i y_i = 0

将这两个结果带入 L(w,b,α)L(w,b,\alpha) 有:

L(w,b,α)=12w2i=1nαi(yi(wTxi+b)1)=12wTwwTi=1nαiyixibi=1nαiyi+i=1nαi=12wTwwTwb0+i=1nαi=i=1nαi12wTw=i=1nαi12i=1nj=1nαiαjyiyjxixj \begin{align} L(w,b,\alpha) &= \frac{1}{2}\|w\|^2 - \sum_{i=1}^n \alpha_i (y_i(w^Tx_i + b) - 1) \\ &= \frac{1}{2}w^Tw - w^T \sum_{i=1}^n \alpha_i y_i x_i - b \sum_{i=1}^n \alpha_i y_i + \sum_{i=1}^n \alpha_i \\ &= \frac{1}{2}w^Tw - w^Tw - b 0 + \sum_{i=1}^n \alpha_i \\ &= \sum_{i=1}^n \alpha_i - \frac{1}{2}w^Tw \\ &= \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i x_j \\ \end{align}

所以问题转换为求:

\begin{align} \mathop \max_{\alpha} \mathop \min_{w,b} L(w,b,\alpha) &= \mathop \max_{\alpha} \sum_{i=1}^n \alpha_i - \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i x_j \\ &s.t. \sum_{i=1}^n \alpha_i y_i = 0, \alpha_i \geq 0, i = 1,2,\dots,n \end{align}

转换符号变成求最小值:

\begin{align} &\mathop \min_{\alpha} \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j x_i x_j - \sum_{i=1}^n \alpha_i \\ &s.t. \sum_{i=1}^n \alpha_i y_i = 0, \alpha_i \geq 0, i = 1,2,\dots,n \end{align}

解出 α\alpha 后,从而得到划分超平面:

f(x)=wTx+b=i=1nαiyixiTx+b f(x) = w^Tx+b = \sum_{i=1}^n \alpha_i y_i x_i^T x + b