1. 前言
支持向量机是机器学习算法中一个非常优秀且经典的特征分类器。在神经网络及深度学习非常火热的当下,支持向量机的热度仍然居高不下。
支持向量机的数学原理非常优美,它将对特征空间的划分转化为一个凸优化问题,求解目标函数的全局极小值。在人脸识别等机器学习应用中,将支持向量机作为深度神经网络的输出特征的分类器,往往能够取得不错的效果。
支持向量机可以说是我进入机器学习领域接触的第一个算法。从此,我被其优雅的数学、奇妙的“戏法”深深的吸引。从监督学习到强化学习、从算法原理到项目实战、从坚定从事人工智能行业到成为AI算法工程师,我走过的每一步,都离不开那一场美丽的邂逅。
我和机器学习的故事(机器学习算法原理详解系列文章),就从那场美丽的邂逅开始讲起吧!
2. 基本定义
2.1 线性可分与非线性可分
对于一个训练样本集{(X1,y1), (X2,y2), … , (Xn,yn)},若存在(W,b),使得对i=1~n有:
(1)若yi=+1,则WTXi+b>0;
(2)若yi=-1,则WTXi+b<0。
则该训练样本集在i=1~n线性可分,否则该训练样本集在i=1~n非线性可分。
其中Xi和W均为列向量,yi为样本i的标签。
假设空心点表示一类,实心点表示另一类。如图1所示,存在一条直线将两类分开,则图1中的样本是线性可分的;如图2所示,不存在一条直线将两类分开,则图2中的样本是非线性可分的。
2.2 凸优化问题
凸优化问题指的是在定义域内具有全局最优解的问题,其数理化定义为:
最 小 化 ( m i n i m i z e ) : f ( x ) ( 1 ) 最小化(minimize):~~~~f(x)~~~~~~~~~~~~~~~~(1) 最小化(minimize): f(x) (1)
限 制 条 件 ( s u b j e c t t o ) : h i ( x ) = 0 , i = 1 , 2 , . . . , m ( 2 ) 限制条件(subject~to):~~~~h_i(x)=0,\ i=1,2,...,m~~~~~~~~~~~~~~~~(2) 限制条件(subject to): hi(x)=0, i=1,2,...,m (2)
g j ( x ) < = 0 , j = 1 , 2 , . . . , n ( 3 ) g_j(x)<=0,~j=1,2,...,n~~~~~~~~~~~~~~~~(3) gj(x)<=0, j=1,2,...,n (3)
如果目标函数 f ( x ) f(x) f(x)、不等式约束 g j ( x ) g_j(x) gj(x)全为凸函数,以及等式约束 h i ( x ) h_i(x) hi(x)是仿射的(即为线性函数),那么这个优化问题就是凸优化问题。
若一个问题是凸优化问题,则该问题要么无解,有么有且仅有唯一解。
2.2.1 二次规划问题
若一个凸优化问题的目标函数是二次的,限制条件是一次的,则该凸优化问题为二次规划问题。
3. 支持向量机——线性可分情况
对于线性可分情况,即存在一条直线分开两类,显然则存在无数条直线分开两类,如图3所示。
支持向量机考虑的第一个问题是,在无数条分开两类的直线中,那一条最好?或者说最优的分开两类的直线应该满足什么性质?
支持向量机的创始人Vapnik等人指出,将任意一条分开两类的直线c分别向上向下平移,直至刚好使两类中的某一些样本点落在直线上,得到直线a、直线b。将直线a、直线b之间的距离称为间隔(Margin),位于直线a或直线b上的样本点称为支持向量(Support Vector),如图4所示,则最优分类直线应该满足如下3个性质:
(1)该直线分开了2类;
(2)该直线最大化间隔;
(3)该直线位于间隔的中间,到所有支持向量的距离相等。
在线性可分情况下,显然有且只有唯一一条直线满足上述三个条件。
设直线c的方程为 W T X + b = 0 W^TX+b=0 WTX+b=0,对于某个支持向量 X s X_s Xs,易知其与直线c的距离 d = ∣ W T X s + b ∣ ∣ ∣ W ∣ ∣ d=\frac{|W^TX_s+b|}{||W||} d=∣∣W∣∣∣WTXs+b∣。支持向量机寻找的是最大化间隔的直线,因此支持向量机的优化问题可以写成如下形式:
最 大 化 ( m a x i m i z e ) : ∣ W T X s + b ∣ ∣ ∣ W ∣ ∣ ( 4 ) 最大化(maximize):~~\frac{|W^TX_s+b|}{||W||}~~~~~~~~~~~~~~~~~~~~~(4) 最大化(maximize): ∣∣W∣∣∣WTXs+b∣ (4)
限 制 条 件 : ∣ W T X i + b ∣ ∣ ∣ W ∣ ∣ > = ∣ W T X s + b ∣ ∣ ∣ W ∣ ∣ , i = 1 ~ n ( 5 ) 限制条件:~~\frac{|W^TX_i+b|}{||W||}>=\frac{|W^TX_s+b|}{||W||},~~i=1\text{\textasciitilde}n~~~~~~~~~~~~~~~~~(5) 限制条件: ∣∣W∣∣∣WTXi+b∣>=∣∣W∣∣∣WTXs+b∣, i=1~n (5)
其中 X i X_i Xi表示样本集中的任意样本点, ∣ ∣ W ∣ ∣ ||W|| ∣∣W∣∣表示向量 W W W的模。由于支持向量到直线c的距离最短,因此任意样本点 X i X_i Xi到直线c的距离大于或等于支持向量 X s X_s Xs到直线c的距离。
将式(5)两边同时乘以 ∣ ∣ W ∣ ∣ ||W|| ∣∣W∣∣,可得式(6)如下:
∣ W T X i + b ∣ > = ∣ W T X s + b ∣ , i = 1 ~ n ( 6 ) |W^TX_i+b|>=|W^TX_s+b|,~~i=1\text{\textasciitilde}n~~~~~~~~~~~~~~~~~(6) ∣WTXi+b∣>=∣WTXs+b∣, i=1~n (6)
联立式(4)和式(6),可将支持向量机的优化问题写成如下形式:
最 大 化 : ∣ W T X s + b ∣ ∣ ∣ W ∣ ∣ ( 7 ) 最大化:~~\frac{|W^TX_s+b|}{||W||}~~~~~~~~~~~~~~~~~~~~~(7) 最大化: ∣∣W∣∣∣WTXs+b∣ (7)
限 制 条 件 : ∣ W T X i + b ∣ > = ∣ W T X s + b ∣ , i = 1 ~ n ( 8 ) 限制条件:~~|W^TX_i+b|>=|W^TX_s+b|,~~i=1\text{\textasciitilde}n~~~~~~~~~~~~~~~~~(8) 限制条件: ∣WTXi+b∣>=∣WTXs+b∣, i=1~n (8)
进一步,可将支持向量机的优化问题转化为如下形式,将该转化称为【转化一】:
最 大 化 : 1 ∣ ∣ W ∣ ∣ ( 9 ) 最大化:~~\frac{1}{||W||}~~~~~~~~~~~~~~~~~~~~~(9) 最大化: ∣∣W∣∣1 (9)
限 制 条 件 : ∣ W T X i + b ∣ > = 1 , i = 1 ~ n ( 10 ) 限制条件:~~|W^TX_i+b|>=1,~~i=1\text{\textasciitilde}n~~~~~~~~~~~~~~~~~(10) 限制条件: ∣WTXi+b∣>=1, i=1~n (10)
事实上,可以用严格的数学证明【转化一】前后的优化问题是同解的。在这里,我不用严格的数学证明一步步推导二者同解,而是采用如下方法直观理解两个优化问题同解:
易知方程 W T X + b = 0 W^TX+b=0 WTX+b=0和 a W T X + a b = 0 ( a > 0 ) aW^TX+ab=0~~(a>0) aWTX+ab=0 (a>0)表示的是同一条直线。因此,不论支持向量机优化问题求出来的直线所对应的 W 和 b W和b W和b为何值,均可使用一个a同时乘以 W 和 b W和b W和b,并令 a W 和 a b aW和ab aW和ab的值赋值给 W 和 b W和b W和b,使得 ∣ W T X s + b ∣ = 1 |W^TX_s+b|=1 ∣WTXs+b∣=1。此时,经过被赋值后的 W 和 b W和b W和b所对应的直线与原直线保持不变。
再反过来理解,令 ∣ W T X s + b ∣ = 1 |W^TX_s+b|=1 ∣WTXs+b∣=1,求解上述优化问题,会得到一个 W 和 b W和b W和b,令 ∣ W T X s + b ∣ = 2 |W^TX_s+b|=2 ∣WTXs+b∣=2,会得到另一个 W 和 b W和b W和b,令 ∣ W T X s + b ∣ = k ( 某 个 不 为 0 的 实 数 ) |W^TX_s+b|=k(某个不为0的实数) ∣WTXs+b∣=k(某个不为0的实数),又会得到一个 W 和 b W和b W和b。但是不论令 ∣ W T X s + b ∣ 等 于 几 |W^TX_s+b|等于几 ∣WTXs+b∣等于几,求解出来的 W 和 b W和b W和b所对应的直线均为同一条直线,只是这些 W 和 b W和b W和b等比例地扩大了a倍而已。
因此,可以令 ∣ W T X s + b ∣ = 1 |W^TX_s+b|=1 ∣WTXs+b∣=1。
综上所述,在线性可分情况下,支持向量机寻找最优直线的优化问题可描述如下:
最 小 化 : 1 2 ∣ ∣ W ∣ ∣ 2 ( 11 ) 最小化:~~\frac{1}{2}||W||^2~~~~~~~~~~~~~~~~~~~~~(11) 最小化: 21∣∣W∣∣2 (11)
限 制 条 件 : y i ( W T X i + b ) > = 1 , i = 1 ~ n ( 12 ) 限制条件:~~y_i(W^TX_i+b)>=1,~~i=1\text{\textasciitilde}n~~~~~~~~~~~~~~~~~(12) 限制条件: yi(WTXi+b)>=1, i=1~n (12)
说明:最大化 1 ∣ ∣ W ∣ ∣ \frac{1}{||W||} ∣∣W∣∣1与最小化 1 2 ∣ ∣ W ∣ ∣ 2 \frac{1}{2}||W||^2 21∣∣W∣∣2是等同的。乘以 1 2 \frac{1}{2} 21是为了后续求导简便。 y i y_i yi是人为规定的训练样本的标签,当令 y i ∈ { + 1 , − 1 } y_i\in\{+1,-1\} yi∈{+1,−1}时, y i ( W T X i + b ) 和 ∣ W T X i + b ∣ y_i(W^TX_i+b)和|W^TX_i+b| yi(WTXi+b)和∣WTXi+b∣是等同的。
上述优化问题中, ( X i , y i ) , i = 1 ~ n (X_i,y_i),~~i=1\text{\textasciitilde}n (Xi,yi), i=1~n是已知的, ( W , b ) (W,b) (W,b)是待求的。
该优化问题是典型的凸优化问题中的二次规划问题。在机器学习领域,如果一个问题是凸优化问题,那么该问题即可视为一个已解决的问题。可使用序列最小优化算法(Sequential minimal optimization, SMO)求解上述优化问题,得到 ( W , b ) (W,b) (W,b),从而得到线性可分情况下支持向量机优化问题的解。
为了便于理解,前文基于2维特征空间(即分开两类的线性函数平面上的直线)对线性可分情况支持向量机优化问题进行了推导,易知在特征空间维度大于2(即向量 X X X的分量数大于2,分开两类的线性函数是高维特征空间中的线性超平面)时,上述推导过程仍然成立。
4. 后记
本文详细推导了在线性可分情况下,支持向量机求解最优分类直线或线性超平面的过程。清晰地展现了支持向量机如何将寻找最优分类直线或线性超平面问题转化为一个凸优化问题。
后续我们将看到支持向量机如何在非线性可分情况下求解最优分类直线或线性超平面。届时我们将可以看到支持向量机创始人Vapnik等人极具创造性的做法,以及一个非常奇妙的“戏法”——核函数戏法。
后文:
支持向量机(SVM)详解(二)
支持向量机(SVM)详解(三)