∗
∗
∗
点
击
查
看
:
吴
恩
达
机
器
学
习
—
—
整
套
笔
记
+
编
程
作
业
详
解
∗
∗
∗
\color{#f00}{***\ 点击查看\ :吴恩达机器学习 \ —— \ 整套笔记+编程作业详解\ ***}
∗∗∗ 点击查看 :吴恩达机器学习 —— 整套笔记+编程作业详解 ∗∗∗
第一部分:支持向量机 1/3 —— 建立 SVM 基本型(超平面与间隔)
SVM求解——数学基础
SVM中涉及的数学知识较多:凸优化,拉格朗日乘子法,KKT条件,拉格朗日对偶等等。
建议先逐一了解这些概念(耐心看完):
对拉格朗日乘子法补充一点:马同学的模型是在二维空间上,下图补充三维空间上的理解: min f ( x , y ) = x y (椭圆)s.t. h i ( x , y ) = x 2 8 + y 2 2 − 1 = 0 \begin{aligned}&\min f(x,y)=xy\\ &\text {(椭圆)s.t. } h_{i(x,y)}=\frac{x^2}{8}+\frac{y^2}{2}-1=0\end{aligned} minf(x,y)=xy(椭圆)s.t. hi(x,y)=8x2+2y2−1=0下面是几何解释, f ( x , y ) = x y f(x,y)=x y f(x,y)=xy 的等高线图在最下面, 也就是双曲线 x y = c x y=c xy=c (c是相应的函数值), 椭圆 x 2 / 8 + y 2 / 2 = 1 x^2/8+y^2/2=1 x2/8+y2/2=1 在 f f f 函数曲面上为蓝色曲线。
从上图可知双曲线离开原点越远, f f f 的绝对值越大,需要在约束条件下:椭圆 x 2 / 8 + y 2 / 2 = 1 x^2/8+y^2/2=1 x2/8+y2/2=1 上使 f ( x , y ) f(x,y) f(x,y) 取极值点,也就是与椭圆相切的双曲线会距离原点最远。在这四个切点中,双曲线的法线也是椭圆的法线。观察下图动画, 可以看到黑色 ▽ f ▽f ▽f 是 ▽ g ▽g ▽g 的数值倍数,最大值处两个梯度向量方向相同, 最小值处方向相反。
线性SVM求解
在第一部分得到SVM的基本数学模型(基本型)后,我们现在要求解的就是一个最优化问题。
min
w
,
b
1
2
∥
w
∥
2
s.t.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
…
,
m
\begin{array}{l} \displaystyle\min _{w, b} \frac{1}{2}\|w\|^2\\ \text { s.t. } \ y_{i}\left(w^{T} x_{i}+b\right) \geq 1, \quad i=1,2, \ldots, m \end{array}
w,bmin21∥w∥2 s.t. yi(wTxi+b)≥1,i=1,2,…,m由于基本型的目标函数是二次的,且约束条件是线性的,这是一个 凸二次规划 问题。可以直接用现成的优化计算包求解,如scikit-learn
等,本节课配套的编程作业就是用的这种方法。(编程作业(python)| 支持向量机 SVM)
- 二次规划:
- 目标函数和约束条件都为变量的线性函数,叫做------线性规划问题。
- 目标函数为变量的二次函数,约束条件为变量的线性函数,叫做------二次规划问题(即本问题)。
- 目标函数和约束条件都为非线性函数,叫做------非线性规划问题。
除了用现成的优化计算包,我们还可以用其他方法来解决SVM的优化问题。在此之前,我们先来看下优化问题有哪些类别以及用什么方法解决:
优化问题及数学表达 | 优化方法 |
---|---|
无约束优化问题 min f ( x ) \min{f(x)} minf(x) | 费马大定理(Fermat),即使用求取函数f(x)的导数,然后令其为零,可以求得候选最优值,再在这些候选值中验证;如果是凸函数,可以保证是最优解。这也就是我们高中经常使用的求函数的极值的方法。 |
有等式约束的优化问题 min f ( x ) s.t. h i ( x ) = 0 , i = 1 , 2 , … , m \begin{aligned}&\min f(x)\\ &\text {s.t. } h_{i(x)}=0, \quad i=1,2, \ldots, m\end{aligned} minf(x)s.t. hi(x)=0,i=1,2,…,m | 拉格朗日乘子法(Lagrange Multiplier) ,即把等式约束 h i ( x ) h_i(x) hi(x)用一个系数与 f ( x ) f(x) f(x)写为一个式子,称为拉格朗日函数,而系数称为拉格朗日乘子。通过拉格朗日函数对各个变量求导,令其为零,可以求得候选值集合,然后验证求得最优值。 |
有不等式约束的优化问题 min f ( x ) s.t. g i ( x ) ≤ 0 , i = 1 , 2 , … , n h j ( x ) = 0 , j = 1 , 2 , … , m \begin{aligned}&\min f(x)\\&\text {s.t. } g_{i(x)} \leq 0, \quad i=1,2, \ldots, n\\&h_{j(x)}=0, \quad j=1,2, \ldots, m\end{aligned} minf(x)s.t. gi(x)≤0,i=1,2,…,nhj(x)=0,j=1,2,…,m | 同样地,我们把所有的等式、不等式约束与 f ( x ) f(x) f(x)写为一个式子,也叫拉格朗日函数,系数也称拉格朗日乘子,通过一些条件,可以求出最优值的必要条件,这个条件称为KKT条件。 |
了解到这些,显然SVM的优化问题是属于第三类:有不等式约束的优化问题。用 拉格朗日乘数法 和 KKT条件 可以解决此类问题。
深究SVM中的数学原理是件很痛苦的事,上述数学原理了解即可,主要是为了SVM的推导做铺垫。
- 总结将 原始问题 转化为 拉格朗日对偶问题 的步骤如下:
步骤 | 一般优化问题 | SVM |
---|---|---|
原始问题 | min x f ( x ) s.t. c i ( x ) ≤ 0 , i = 1 , 2 , … , m \begin{array}{l}\displaystyle\min _{x} f(x)\\ \text { s.t. } \ c_i(x) \leq 0, \quad i=1,2, \ldots, m\end{array} xminf(x) s.t. ci(x)≤0,i=1,2,…,m | min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , m \begin{array}{l} \displaystyle \min _{w, b} \frac{1}{2}\|w\|^2 \\ \text { s.t. } \ y_{i}\left(w^{T} x_{i}+b\right) \geq 1, \quad i=1,2, \ldots, m\end{array} w,bmin21∥w∥2 s.t. yi(wTxi+b)≥1,i=1,2,…,m |
拉格朗日函数 | L ( x , α ) = f ( x ) + ∑ i = 1 m α i c i ( x ) \mathcal{L}(x, \alpha)=f(x)+\sum_{i=1}^{m} \alpha_{i} c_{i}(x) L(x,α)=f(x)+i=1∑mαici(x) | L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 m α i ( y i ( w T x i + b ) − 1 ) \mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\alpha})=\frac{1}{2}\|\boldsymbol{w}\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left(y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right) L(w,b,α)=21∥w∥2−i=1∑mαi(yi(wTxi+b)−1) |
拉格朗日对偶(满足KKT条件) | max α i ≥ 0 min x ( L ( x , α ) ) \max_{\alpha_i≥0}\min _{x}\left(\mathcal{L}(x, \alpha)\right) αi≥0maxxmin(L(x,α)) | max α i ≥ 0 min w , b ( L ( w , b , α ) ) \max_{\alpha_i≥0}\min _{w, b}\left(\mathcal{L}(w, b, \alpha)\right) αi≥0maxw,bmin(L(w,b,α)) |
对偶问题求解
将原始问题转化为拉格朗日对偶问题后:
max
α
i
≥
0
min
w
,
b
(
L
(
w
,
b
,
α
)
)
L
(
w
,
b
,
α
)
=
1
2
∥
w
∥
2
−
∑
i
=
1
m
α
i
(
y
i
(
w
T
x
i
+
b
)
−
1
)
\begin{aligned} &\max_{\alpha_i≥0}\min _{w, b}\left(\mathcal{L}(w, b, \alpha)\right)\\ &\mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\alpha})=\frac{1}{2}\|\boldsymbol{w}\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left(y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right) \end{aligned}
αi≥0maxw,bmin(L(w,b,α))L(w,b,α)=21∥w∥2−i=1∑mαi(yi(wTxi+b)−1)我们的问题转化为:
-
首先固定 α \alpha α,使 L ( w , b , α ) \mathcal{L}(w, b, \alpha) L(w,b,α) 关于 w , b w,b w,b 最小化。分别对w和b偏导数,令其等于0,即:
∂ L ∂ w = 0 ⇒ w = ∑ i = 1 m α i y i x i ∂ L ∂ b = 0 ⇒ ∑ i = 1 m α i y i = 0 \begin{array}{l} \displaystyle\frac{\partial \mathcal{L}}{\partial \boldsymbol{w}}=0 \Rightarrow \boldsymbol{w}=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} \\ \displaystyle\frac{\partial \mathcal{L}}{\partial b}=0 \Rightarrow \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \end{array} ∂w∂L=0⇒w=i=1∑mαiyixi∂b∂L=0⇒i=1∑mαiyi=0将求导结果带回 L ( w , b , α ) \mathcal{L}(w, b, \alpha) L(w,b,α),得到
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 m α i [ y i ( w T x i + b ) − 1 ] = 1 2 w T w − w T ∑ i = 1 m α i y i x i − b ∑ i = 1 m α i y i + ∑ i = 1 m α i = 1 2 w T ∑ i = 1 m α i y i x i − w T ∑ i = 1 m α i y i x i − b ⋅ 0 + ∑ i = 1 m α i = ∑ i = 1 m α i − 1 2 ( ∑ i = 1 m α i y i x i ) T ∑ i = 1 m α i y i x i = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m α i α j y i y j x i T x j \begin{aligned} \mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\alpha}) &=\frac{1}{2}\|\boldsymbol{w}\|^{2}-\sum_{i=1}^{m} \alpha_{i}\left[y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right] \\ &=\frac{1}{2} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{w}-\boldsymbol{w}^{\mathrm{T}} \sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}-b \sum_{i=1}^{m} \alpha_{i} y_{i}+\sum_{i=1}^{m} \alpha_{i} \\ &=\frac{1}{2} \boldsymbol{w}^{\mathrm{T}} \sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}-\boldsymbol{w}^{\mathrm{T}} \sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}-b \cdot 0+\sum_{i=1}^{m} \alpha_{i} \\ &=\sum_{i=1}^{m} \alpha_{i}-\frac{1}{2}\left(\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}\right)^{\mathrm{T}} \sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i} \\ &=\sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} \end{aligned} L(w,b,α)=21∥w∥2−i=1∑mαi[yi(wTxi+b)−1]=21wTw−wTi=1∑mαiyixi−bi=1∑mαiyi+i=1∑mαi=21wTi=1∑mαiyixi−wTi=1∑mαiyixi−b⋅0+i=1∑mαi=i=1∑mαi−21(i=1∑mαiyixi)Ti=1∑mαiyixi=i=1∑mαi−21i,j=1∑mαiαjyiyjxiTxj此时的 L ( w , b , α ) \mathcal{L}(w, b, \alpha) L(w,b,α) 函数只含有一个变量,即 α i α_i αi,因此 max α i ≥ 0 min w , b ( L ( w , b , α ) ) = max α i ≥ 0 ( L ( w , b , α ) ) \max_{\alpha_i≥0}\min _{w, b}\left(\mathcal{L}(w, b, \alpha)\right)=\max_{\alpha_i≥0}\left(\mathcal{L}(w, b, \alpha)\right) αi≥0maxw,bmin(L(w,b,α))=αi≥0max(L(w,b,α)) -
再对 α \alpha α 求 L ( w , b , α ) \mathcal{L}(w, b, \alpha) L(w,b,α) 最大,对偶问题可以进一步转化为:
max α ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m α i α j y i y j x i T x j s.t. α i ≥ 0 , i = 1 , 2 , ⋯ , m ∑ i = 1 m α i y i = 0 \begin{aligned} &\displaystyle\max _{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} \\ &\text {s.t.} \ \alpha_{i} \geq 0, i=1,2, \cdots, m \\ &\quad \displaystyle\sum_{i=1}^{m} \alpha_{i} y_{i}=0 \end{aligned} αmaxi=1∑mαi−21i,j=1∑mαiαjyiyjxiTxjs.t. αi≥0,i=1,2,⋯,mi=1∑mαiyi=0
现在我们的优化问题变成了如上的形式。对于这个问题,我们有更高效的优化算法,即 序列最小优化(Sequential Minimal Optimizaion-SMO)算法。我们通过这个优化算法能得到 α α α,再根据 α α α,我们就可以求解出 w w w 和 b b b,进而求得我们最初的目的:找到超平面,即"决策边界"。
解得
α
\alpha
α 后,即可求出
w
w
w 和
b
b
b,得到线性SVM的超平面:
f
(
x
)
=
w
T
x
+
b
=
∑
i
=
1
m
α
i
y
i
x
i
T
x
+
b
\begin{aligned} f(x) &=w^{T} x+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} x_{i}^{T} x+b \end{aligned}
f(x)=wTx+b=i=1∑mαiyixiTx+b
注:上述过程均要满足KKT条件,即:
{
α
i
≥
0
y
i
f
(
x
)
−
1
≥
0
α
i
(
y
i
f
(
x
)
−
1
)
=
0
\left\{\begin{array}{c} \alpha_{i} \geq 0 \\ y_{i} f(x)-1 \geq 0 \\ \alpha_{i}\left(y_{i} f(x)-1\right)=0 \end{array}\right.
⎩⎨⎧αi≥0yif(x)−1≥0αi(yif(x)−1)=0
因此对于任意训练样本
(
x
i
,
y
i
)
(x_i, y_i)
(xi,yi) ,总有
α
i
=
0
\alpha_i=0
αi=0 或
y
i
f
(
x
)
−
1
=
0
y_if(x)-1=0
yif(x)−1=0。
- 当 α i = 0 \alpha_i=0 αi=0 时, f ( x ) = b f(x)= b f(x)=b,则该样本不会对 f ( x ) f(x) f(x) 产生影响;
- 当 y i f ( x ) − 1 = 0 y_if(x)-1=0 yif(x)−1=0,此时 α i ≥ 0 \alpha_i≥0 αi≥0,对应样本点落在最大间隔边界上,即为支持向量。同时这也是支持向量的一个重要性质:模 型训练完成后,大部分的训练样本不需要保留,最终的模型参数仅与支持向量有关。
推荐阅读:
支持向量机原理篇之手撕线性SVM
陈东岳老师:零基础学SVM—Support Vector Machine(一)
陈东岳老师:零基础学SVM—Support Vector Machine(二)