来源:原始 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,α)=21∥w∥2−i=1∑nαi(yi(wTxi+b)−1)其中,引入了一个新的变量 α,这个变量就是 拉格朗日乘子。所以支持向量机的优化目标可以写成:
\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),很显然,这是一个最小值问题,直接使用求导的方法,我们对 w 和 b 分别求偏导:
∂w∂L(w,b,α)=w−i=1∑nαiyixi∂b∂L(w,b,α)=i=1∑nαiyi令偏导等于 0,可以得到:
w=i=1∑nαiyixii=1∑nαiyi=0将这两个结果带入 L(w,b,α) 有:
L(w,b,α)=21∥w∥2−i=1∑nαi(yi(wTxi+b)−1)=21wTw−wTi=1∑nαiyixi−bi=1∑nαiyi+i=1∑nαi=21wTw−wTw−b0+i=1∑nαi=i=1∑nαi−21wTw=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyjxixj所以问题转换为求:
\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}解出 α 后,从而得到划分超平面:
f(x)=wTx+b=i=1∑nαiyixiTx+b