【线性分类器】(四)万字长文解释拉格朗日乘子与支持向量机

本文深入浅出地介绍了拉格朗日乘子法在多元函数极值问题中的应用,并详细探讨了支持向量机的原理、结构风险最小化准则及其在线性不可分情况下的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【线性分类器】(一)线性判别

【线性判别器】(二)“深度学习”的鼻祖——感知器

【线性分类器】(三)线性分类器的松弛求解: LEMS 算法,H-K 算法

拉格朗日乘子与支持向量机

背景介绍:1963 年,Vapnik 等人在研究线性分类器的优化时发现了支持向量,1971 年Vapnik 和Chervonenkis(切沃那尼克斯)共同提出了 VC 维的概念,并于 1974年提出了结构风险最小化原则,开始形成了统计学习理论(Statistical Learning Theory)。在取得一系列研究进展之后,Vapnik 于 1995 年出版了《统计学习理论的本质》(The Nature of Statistical Learning Theory)一书,完整介绍了包括结构风险最小化准则和支持向量机在内的统计学习理论。

本文分为两个部分,第一部分将由浅入深介绍支持向量机中使用的拉格朗日乘子,第二部分将详细介绍支持向量机。

1 高数中的拉格朗日乘子[1]

1.1 多元函数的极值

下面我们以二元函数为例来讨论多元函数的极值问题。

1.1.1 二元函数极值的概念

定义:设函数 z = f ( x , y ) z=f(x,y) z=f(xy)在点 ( x 0 , y 0 ) (x0,y0) (x0y0)的某一邻域内有定义,对于该邻域内异于 ( x 0 , y 0 ) (x0,y0) (x0y0)的任意一点 ( x , y ) (x,y) (xy),如果 f ( x , y ) < f ( x 0 , y 0 ) f(x,y)<f(x0,y0) f(xy)<f(x0y0)
则称函数在 ( x 0 , y 0 ) (x_0,y_0) (x0y0)有极大值 f ( x 0 , y 0 ) f(x_0,y_0) f(x0y0)

如果 f ( x , y ) > f ( x 0 , y 0 ) f(x,y)>f(x_0,y_0) f(xy)>f(x0y0)

则称函数在 ( x 0 , y 0 ) (x_0,y_0) (x0y0)有极小值 f ( x 0 , y 0 ) f(x_0,y_0) f(x0y0);极大值、极小值统称为极值,使函数取得极值的点称为极值点

例1 函数 z = 2 x 2 + 3 y 2 z=2x^2+3y^2 z=2x2+3y2在点(0,0)处有极小值.从几何上看, z = 2 x 2 + 3 y 2 z=2x^2+3y^2 z=2x2+3y2表示一开口向上的椭圆抛物面,点(0,0,0)是它的顶点。

在这里插入图片描述

例2 函数 z = − x 2 + y 2 z=-\sqrt{x^2+y^2} z=x2+y2 在点(0,0)处有极大值.从几何上看, z = − x 2 + y 2 z=-\sqrt{x^2+y^2} z=x2+y2 表示一开口向下的半圆锥面,点(0,0,0)是它的顶点。

在这里插入图片描述

例3 函数 z = x z=x z=x在点(0,0)处无极值.从几何上看,它表示过原点的平面

在这里插入图片描述

二元函数的极值问题,一般可以用偏导数来解决.下面给出二元函数有极值的必要条件.

定理1(必要条件) 设函数 z = f ( x , y ) z=f(x,y) z=f(xy)在点 ( x 0 , y 0 ) (x_0,y_0) (x0y0)具有偏导数,且在点 ( x 0 , y 0 ) (x_0,y_0) (x0y0)处有极值,则它在该点的偏导数必然为零,即
f x ( x 0 , y 0 ) = 0 , f y ( x 0 , y 0 ) = 0 f_x(x_0,y_0)=0,f_y(x_0,y_0)=0 fx(x0y0)=0fy(x0y0)=0

对于多元函数,凡是能使一阶偏导数同时为零的点称为函数的驻点.

从定理1可知,具有偏导数的函数的极值点必为函数的驻点.但函数的驻点不一定是极值点,例如函数 z = x y z=xy z=xy,在点(0,0)处的两个偏导数为
f x ( 0 , 0 ) = y ∣ x = 0 , y = 0 = 0 , f y ( 0 , 0 ) = x ∣ x = 0 , y = 0 = 0 f_x(0,0)=y|_{x=0,y=0}=0,f_y(0,0)=x|_{x=0,y=0}=0 fx(0,0)=yx=0,y=0=0,fy(0,0)=xx=0,y=0=0

怎样判定驻点是否为极值点呢?下面的定理给出了答案.

定理2(充分条件) 设函数 z = f ( x , y ) z=f(x,y) z=f(xy)在点 ( x 0 , y 0 ) (x_0,y_0) (x0y0)的某邻域内有直到二阶的连续偏导数,又 f x ( x 0 , y 0 ) = 0 , f y ( x 0 , y 0 ) = 0 f_x(x_0,y_0)=0,f_y(x_0,y_0)=0 fx(x0y0)=0fy(x0y0)=0.令 f x x ( x 0 , y 0 ) = A , f x y ( x 0 , y 0 ) = B , f y y ( x 0 , y 0 ) = C f_{xx}(x_0,y_0)=A,f_{xy}(x_0,y_0)=B,f_{yy}(x_0,y_0)=C fxx(x0y0)=Afxy(x0y0)=Bfyy(x0y0)=C.

  • (1)当 A C - B 2 > 0 AC-B^2>0 ACB2>0时,函数 f ( x , y ) f(x,y) f(xy) ( x 0 , y 0 ) (x_0,y_0) (x0y0)处有极值,且当 A > 0 A>0 A>0时有极小值 f ( x 0 , y 0 ) f(x_0,y_0) f(x0y0) A < 0 A<0 A<0时有极大值 f ( x 0 , y 0 ) f(x_0,y_0) f(x0y0)

  • (2)当 A C - B 2 < 0 AC-B^2<0 ACB2<0时,函数 f ( x , y ) f(x,y) f(xy) ( x 0 , y 0 ) (x_0,y_0) (x0y0)处没有极值;

  • (3)当 A C - B 2 = 0 AC-B^2=0 ACB2=0时,函数 f ( x , y ) f(x,y) f(xy) ( x 0 , y 0 ) (x_0,y_0) (x0y0)处可能有极值,也可能没有极值.

根据定理1与定理2,如果函数 f ( x , y ) f(x,y) f(xy)具有二阶连续偏导数,则求 z = f ( x , y ) z=f(x,y) z=f(xy)的极值的一般步骤如下.

  • 第一步:解方程组 f x ( x , y ) = 0 , f y ( x , y ) = 0 f_x(x,y)=0,f_y(x,y)=0 fx(xy)=0fy(xy)=0,求出 f ( x , y ) f(x,y) f(xy)的所有驻点.

  • 第二步:求出函数 f ( x , y ) f(x,y) f(xy)的二阶偏导数,依次确定各驻点处 A 、 B 、 C A、B、C ABC的值,并根据 A C - B 2 AC-B^2 ACB2的符号判定驻点是否为极值点.最后求出函数 f ( x , y ) f(x,y) f(xy)在极值点处的极值.

注 讨论函数的极值问题时,如果函数在所讨论的区域内具有偏导数,那么由定理1可知,极值只能在驻点处取得.然而,如果函数在个别点处的偏导数不存在,这些点当然不是驻点,但可能是极值点.例如函数 z = − x 2 + y 2 z=-\sqrt{x^2+y^2} z=x2+y2 在点(0,0)处的偏导数不存在,但在该点处具有极大值.因此,在考虑函数的极值问题时,除了考虑函数的驻点外,如果有偏导数不存在的点,那么对这些点也应当考虑.

1.1.2 条件极值与拉格朗日乘数法

前面所讨论的极值问题,对于函数的自变量一般只要求落在定义域内,并无其他限制条件,这类极值我们称为无条件极值.但在实际问题中,常会遇到对函数的自变量还有附加条件的极值问题.对自变量有附加条件的极值称为条件极值.下面介绍一种直接求条件极值的方法——拉格朗日乘数法.
设二元函数 f ( x , y ) f(x,y) f(xy) φ ( x , y ) φ(x,y) φ(xy)在区域 D D D内有一阶连续偏导数,则求 z = f ( x , y ) z=f(x,y) z=f(xy) D D D内满足条件 φ ( x , y ) = 0 φ(x,y)=0 φ(xy)=0的极值问题,可以转化为求拉格朗日函数
L ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) ( 其 中 λ 为 某 一 常 数 ) L(x,y,λ)=f(x,y)+λφ(x,y)(其中λ为某一常数) L(xyλ)=f(xy)+λφ(xy)(λ)

的无条件极值问题.

设点 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0y0)是函数 z = f ( x , y ) z=f(x,y) z=f(xy)在条件 φ ( x , y ) = 0 φ(x,y)=0 φ(xy)=0下的极值点,即函数 z = f ( x , y ) z=f(x,y) z=f(xy) P 0 P_0 P0处有极值,且 φ ( x 0 , y 0 ) = 0 φ(x_0,y_0)=0 φ(x0y0)=0,我们现在讨论取得极值的必要条件.

设函数 f ( x , y ) f(x,y) f(xy) φ ( x , y ) φ(x,y) φ(xy)在点 P 0 P_0 P0处具有连续的偏导数,且 φ y ( x 0 , y 0 ) ≠ 0 φ_y(x_0,y_0)≠0 φy(x0y0)=0,再 y = g ( x ) y=g(x) y=g(x)是由方程 φ ( x , y ) = 0 φ(x,y)=0 φ(xy)=0所确定的隐函数,则有 y 0 = g ( x 0 ) y_0=g(x_0) y0=g(x0).将它代入方程 z = f ( x , y ) z=f(x,y) z=f(xy)中,得
z = f [ x , g ( x ) ] z=f[x,g(x)] z=fxg(x)

由点 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0y0)是函数 z = f ( x , y ) z=f(x,y) z=f(xy)的极值点可知,点 x = x 0 x=x_0 x=x0是一元函数 z = f [ x , g ( x ) ] z=f[x,g(x)] z=fxg(x)的极值点.于是,根据一元函数极值的必要条件,有
d z d x ∣ x = x 0 = f x ( x 0 , y 0 ) + f y ( x 0 , y 0 ) g ′ ( x 0 ) = 0 \frac{dz}{dx}|_{x=x_0}=f_x(x_0,y_0)+f_y(x_0,y_0)g'(x_0)=0 dxdzx=x0=fx(x0,y0)+fy(x0,y0)g(x0)=0

又由隐函数求导公式,知
g ′ ( x ) = − φ x ( x 0 , y 0 ) φ y ( x 0 , y 0 ) g'(x)=-\frac{\varphi_x(x_0,y_0)}{\varphi_y(x_0,y_0)} g(x)=φy(x0,y0)φx(x0,y0)
所以,函数 z = f ( x , y ) z=f(x,y) z=f(xy)在条件 φ ( x , y ) = 0 φ(x,y)=0 φ(xy)=0下,在 P 0 ( x 0 , y 0 ) P_0(x_0,y_0) P0(x0y0)处有极值的必要条件为

{ f x ( x 0 , y 0 ) − f y ( x 0 , y 0 ) φ x ( x 0 , y 0 ) φ y ( x 0 , y 0 ) = 0 φ ( x 0 , y 0 ) = 0 \begin{cases}f_x(x_0,y_0)-f_y(x_0,y_0)\frac{\varphi_x(x_0,y_0)}{\varphi_y(x_0,y_0)}=0\\\varphi(x_0,y_0)=0\end{cases} {fx(x0,y0)fy(x0,y0)φy(x0,y0)φx(x0,y0)=0φ(x0,y0)=0
引入比例系数 λ = − f y ( x 0 , y 0 ) φ y ( x 0 , y 0 ) \lambda=-\frac{f_y(x_0,y_0)}{\varphi_y(x_0,y_0)} λ=φy(x0,y0)fy(x0,y0)( λ λ λ称为拉格朗日乘子,变换得到下面第二个表达式),那么,上述必要条件又可写成
{ f x ( x 0 , y 0 ) + λ φ x ( x 0 , y 0 ) = 0 f y ( x 0 , y 0 ) + λ φ y ( x 0 , y 0 ) = 0 φ ( x 0 , y 0 ) = 0 \begin{cases}f_x(x_0,y_0)+\lambda\varphi_x(x_0,y_0)=0\\f_y(x_0,y_0)+\lambda\varphi_y(x_0,y_0)=0\\\varphi(x_0,y_0)=0\end{cases} fx(x0,y0)+λφx(x0,y0)=0fy(x0,y0)+λφy(x0,y0)=0φ(x0,y0)=0

上式左端恰好是拉格朗日函数分别对 x 、 y 、 λ x、y、λ xyλ的偏导数!

于是,求函数 z = f ( x , y ) z=f(x,y) z=f(xy)在条件 φ ( x , y ) = 0 φ(x,y)=0 φ(xy)=0下的极值的拉格朗日乘数法的基本步骤如下.

(1)构造拉格朗日函数
L ( x , y , λ ) = f ( x , y ) + λ φ ( x , y ) L(x,y,λ)=f(x,y)+λφ(x,y) L(xyλ)=f(xy)+λφ(xy)

其中 λ λ λ为某一常数.

(2)由方程组
{ L x = f x ( x 0 , y 0 ) + λ φ x ( x 0 , y 0 ) = 0 L y = f y ( x 0 , y 0 ) + λ φ y ( x 0 , y 0 ) = 0 \begin{cases}L_x=f_x(x_0,y_0)+\lambda\varphi_x(x_0,y_0)=0\\L_y=f_y(x_0,y_0)+\lambda\varphi_y(x_0,y_0)=0\end{cases} {Lx=fx(x0,y0)+λφx(x0,y0)=0Ly=fy(x0,y0)+λφy(x0,y0)=0

解出 x 、 y , ( x , y ) x、y,(x,y) xy(xy)就是所求条件极值的可能的极值点

注 拉格朗日乘数法只给出函数取极值的必要条件,因此按照这种方法求出来的点是否为极值点,还需要加以讨论.不过在实际问题中,往往可以根据问题本身的性质来判定所求的点是不是极值点.

拉格朗日乘数法可推广到自变量多于两个而条件多于一个的情形:

 求表面积为 a 2 a^2 a2而体积为最大的长方体的体积.

解 设长方体的三边长为 x 、 y 、 z x、y、z xyz,则问题就是在条件
φ ( x , y , z ) = 2 x y + 2 y z + 2 x z - a 2 = 0   φ(x,y,z)=2xy+2yz+2xz-a^2=0  φ(xyz)=2xy+2yz+2xza2=0 
下,求函数 V = x y z ( x > 0 , y > 0 , z > 0 ) V=xyz(x>0,y>0,z>0) V=xyz(x>0y>0z>0)的最大值.作拉格朗日函数
L ( x , y , z ) = x y z + λ ( 2 x y + 2 y z + 2 x z − a 2 ) L(x,y,z)=xyz+\lambda(2xy+2yz+2xz-a^2) L(x,y,z)=xyz+λ(2xy+2yz+2xza2)
由:
{ L x = y z + 2 λ ( y + z ) = 0 L y = x z + 2 λ ( x + z ) = 0 L z = x y + 2 λ ( y + x ) = 0 \begin{cases}L_x=yz+2\lambda(y+z)=0\\L_y=xz+2\lambda(x+z)=0\\L_z=xy+2\lambda(y+x)=0\end{cases} Lx=yz+2λ(y+z)=0Ly=xz+2λ(x+z)=0Lz=xy+2λ(y+x)=0
解得:
x y = x + z y + z , y z = x + y x + z \frac{x}{y}=\frac{x+z}{y+z},\frac{y}{z}=\frac{x+y}{x+z} yx=y+zx+z,zy=x+zx+y

x = y = z x=y=z x=y=z
得唯一可能的极值点:
x = y = z = 6 a 6 x=y=z=\frac{\sqrt{6}a}{6} x=y=z=66 a

由问题本身意义知,此点就是所求最大值点.即表面积为 a 2 a^2 a2的长方体中,以棱长为 6 a 6 \frac{\sqrt{6}a}{6} 66 a的正方体的体积为最大,最大体积 V = 6 36 a 3 V=\frac{\sqrt{6}}{36}a^3 V=366 a3

2 矩阵分析里的拉格朗日乘子[2]

2.1 含有等式约束拉格朗日乘子法

2.1.1 只含一个等式约束的最优化

实函数 f ( w ) f(w) f(w)是参数向量 w w w的函数,约束条件是:
w T x = b w^Tx=b wTx=b
其中 x x x是已知向量, b b b是常数。令 h ( w ) = w T x − b = 0 h(w)=w^Tx−b=0 h(w)=wTxb=0,最小化问题可以描述为:
min ⁡ f ( w ) \min f(w) minf(w)
s . t . h ( w ) = 0 s.t.\quad h(w)=0 s.t.h(w)=0
引入拉格朗日乘子:将上述约束最小化问题转化为无约束问题,定义一个新的实函数:
L ( w , λ ) = f ( w ) + λ h ( w ) L(w,\lambda)=f(w)+\lambda h(w) L(w,λ)=f(w)+λh(w)
至此,无约束优化问题转化完成,利用偏导求参即可。

2.1.2 包含多个等式约束的最优化

实函数 f ( w ) f(w) f(w)是参数向量 w w w的二次函数,约束条件是:
w T x k = b k w^Tx_k=b_k wTxk=bk
其中 k = 1 , 2... K k=1,2...K k=1,2...K
其中 x x x是已知向量, b k b_k bk是常数。令 h k ( w ) = w T x k − b k = 0 h_k(w)=w^Tx_k−b_k=0 hk(w)=wTxkbk=0,最小化问题可以描述为:
min ⁡ f ( w ) \min f(w) minf(w)
s . t . h k ( w ) = 0 , k = 1 , 2... K s.t.\quad h_k(w)=0,k=1,2...K s.t.hk(w)=0,k=1,2...K

引入拉格朗日乘子:将上述约束最小化问题转化为无约束问题,定义一个新的实函数:
L ( w , λ ) = f ( w ) + ∑ k = 1 K λ k h k ( w ) L(w,\lambda)=f(w)+\sum_{k=1}^K\lambda_k h_k(w) L(w,λ)=f(w)+k=1Kλkhk(w)
求解方法同单个约束情况相同,求偏导:
∂ f ( w ) w ∗ + ∑ k = 1 K ∂ ∂ w ∗ λ k h k ( w ) \frac{\partial f(w)}{w*}+\sum_{k=1}^K\frac{\partial}{\partial w*}\lambda_k h_k(w) wf(w)+k=1Kwλkhk(w)
此时与多个等式约束联合成方程组,这个方程组定义了 w w w和拉格朗日乘子 λ 1 、 λ 2 . . . λ K \lambda_1、\lambda_2...\lambda_K λ1λ2...λK的解。

如果含有不等式约束,或者说既有等式约束、又有不等式约束呢?

2.2 拉格朗日对偶问题(Lagrange duality)

首先给出两点重要性质:max为凸函数,min为凹函数,与 f ( . ) f(.) f.内部形式无关。

2.2.1 原始问题

给出约束优化问题模型:
min ⁡ x f 0 ( x ) \min_x f_0(x) xminf0(x)
s . t . f i ( x ) ≤ 0 , i = 1 , . . . m s.t.\quad f_i(x)\le 0,i=1,...m s.t.fi(x)0,i=1,...m
h i ( x ) = 0 , i = 1 , . . . q h_i(x)=0,i=1,...q hi(x)=0,i=1,...q
其中 h i ( x ) = 0 , i = 1 , . . . q h_i(x)=0,i=1,...q hi(x)=0,i=1,...q也可写成矩阵形式: A x = b Ax=b Ax=b.该模型为原始问题
该模型利用拉格朗日乘子可以松弛为无约束优化问题:
min ⁡ L ( x , λ , v ) = f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 q v i h i ( x ) \min L(x,λ,v)=f_0(x)+\sum_{i=1}^mλ_if_i(x)+\sum_{i=1}^qv_ih_i(x) minL(x,λ,v)=f0(x)+i=1mλifi(x)+i=1qvihi(x)
该模型为对偶问题。约束 λ i ≥ 0 λ_i≥0 λi0,则 ∑ i = 1 m λ i f i ( x ) ≤ 0 \sum_{i=1}^mλ_if_i(x)≤0 i=1mλifi(x)0,即:
即:
L ( x , λ , v ) ≤ f 0 ( x ) L(x,\lambda,v)\le f_0(x) L(x,λ,v)f0(x)
为了逼近 f 0 ( x ) f_0(x) f0(x),首先针对 λ λ λ, v v v对其最大化:
J 1 ( x ) = max ⁡ λ ≥ 0 , v ( f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 q v i h i ( x ) ) J_1(x)=\max_{\lambda\ge 0,v}(f_0(x)+\sum_{i=1}^m\lambda_i f_i(x)+\sum_{i=1}^qv_ih_i(x)) J1(x)=λ0,vmax(f0(x)+i=1mλifi(x)+i=1qvihi(x))

但由于该问题只是对 λ , v λ,v λ,v的约束,无法避免违反约束 f i ( x ) > 0 f_i(x)>0 fi(x)>0,从而导致 J 1 ( x ) J_1(x) J1(x)无穷大:
J 1 ( x ) = { 若 x 满 足 原 始 全 部 约 束 : f 0 ( x ) 否 则 : ( f 0 ( x ) , + ∞ ) J_1(x)=\begin{cases}若x满足原始全部约束:f_0(x)\qquad\\ 否则:(f_0(x),+\infty)\end{cases} J1(x)={xf0(x)(f0(x),+)
可以看出将 J 1 ( x ) J_1(x) J1(x)极小化即可得解:
J P ( x ) = min ⁡ x J 1 ( x ) = min ⁡ x max ⁡ λ ≥ 0 , v L ( x , λ , v ) J_P(x)=\min_xJ_1(x)=\min_x\max_{\lambda\ge 0,v}L(x,\lambda,v) JP(x)=xminJ1(x)=xminλ0,vmaxL(x,λ,v)
这是原始约束极小化问题变成无约束极小化问题后的代价函数,简称原始代价函数

定义原始约束极小化问题的最优解:
p ∗ = J P ( x ∗ ) = min ⁡ x f 0 ( x ) = f 0 ( x ∗ ) p*=J_P(x*)=\min_xf_0(x)=f_0(x*) p=JP(x)=xminf0(x)=f0(x)
这就是原始最优解(Optimal primal value).

给出两点凸函数性质:

  • 性质1:无约束凸函数 f ( x ) f(x) f(x)的任何局部极小点 x ∗ x∗ x都是该函数的一个全局极小点;
  • 性质2:如果 f ( x ) f(x) f(x)是强凸函数,则极小化问题 m i n f ( x ) minf(x) minf(x)可解,且其解 x x x唯一。

但这里存在一个问题:如果 f 0 ( x ) f_0(x) f0(x)不是凸函数(也非凹),便没有性质1、性质2,即使设计了优化算法,可以得到某个局部极值点,但不能保证它是一个全局极值点。

如果可以:将非凸目标函数的极小化转换成凹目标函数的极大化,局部极值点便是全局极值点。实现转换的手段便是——对偶方法

2.2.2 对偶方法

考虑构造另一个目标函数:
J 2 ( λ , v ) = min ⁡ x L ( x , λ , v ) = min ⁡ x ( f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 q v i h i ( x ) J_2(\lambda,v)=\min_xL(x,\lambda,v)=\min_{x}(f_0(x)+\sum_{i=1}^m\lambda_i f_i(x)+\sum_{i=1}^qv_ih_i(x) J2(λ,v)=xminL(x,λ,v)=xmin(f0(x)+i=1mλifi(x)+i=1qvihi(x)

这个模型是原问题的对偶问题,根据上式:
min ⁡ x L ( x , λ , v ) = { 若 x 满 足 原 始 全 部 约 束 : min ⁡ x f 0 ( x ) 否 则 : ( − ∞ , min ⁡ x f 0 ( x ) ) \min_x L(x,\lambda,v)=\begin{cases}若x满足原始全部约束:\min\limits_{x} f_0(x) \\否则: (-\infty,\min\limits_{x}f_0(x))\end{cases} xminL(x,λ,v)=xxminf0(x)(,xminf0(x))
得到对偶目标函数:

J D ( λ , v ) = max ⁡ v ≥ 0 , v J 2 ( λ , v ) = max ⁡ λ ≥ 0 , v min ⁡ x L ( x , λ , v ) J_D(\lambda,v)=\max_{v\ge 0,v}J_2(\lambda,v)=\max_{\lambda\ge 0,v}\min_{x}L(x,\lambda,v) JD(λ,v)=v0,vmaxJ2(λ,v)=λ0,vmaxxminL(x,λ,v)

由此可见: J D ( λ , v ) J_D(λ,v) JD(λ,v) x x x的凹函数【 m a x max max为凸函数, m i n min min为凹函数,与 f ( . ) f(.) f.内部形式无关, J D J_D JD中是 min ⁡ x \min_x minx】,即使 f 0 ( x ) f_0(x) f0(x)不是凸函数(凹函数同理,本文仅以凸为例).此时任何一个局部极值点都是一个全局极值点。至此:原约束极小化问题转化为对偶目标函数的无约束极大化算法设计,这一方法就是:拉格朗日对偶法

2.2.3 对偶目标函数与原目标函数关系

对偶目标函数与原目标函数关系
d ∗ = J D ( λ ∗ , v ∗ ) = max ⁡ λ ≥ 0 , v min ⁡ x L ( x , λ , v ) ≤ min ⁡ x max ⁡ λ ≥ 0 , v L ( x , λ , v ) = J P ( x ∗ ) = p ∗ = f 0 ( x ∗ ) d^*=J_D(\lambda^*,v^*)=\max_{\lambda\ge 0,v}\min_xL(x,\lambda,v)\le \min_x\max_{\lambda\ge0,v}L(x,\lambda,v)=J_P(x^*)=p^*=f_0(x^*) d=JD(λ,v)=λ0,vmaxxminL(x,λ,v)xminλ0,vmaxL(x,λ,v)=JP(x)=p=f0(x)

字面理解:瘦子里的胖子,体重不会超过胖子里的瘦子。分析其理论:
p ∗ = f 0 ( x ∗ ) ≥ L ( x ∗ , λ , v ) = f 0 ( x ∗ ) + ∑ i = 0 m λ i f i ( x ∗ ) + ∑ i = 1 q v i h i ( x ∗ ) ≥ min ⁡ x L ( x , λ , v ) p^*=f_0(x^*)\ge L(x^*,\lambda,v)=f_0(x^*)+\sum_{i=0}^{m}\lambda_if_i(x^*)+\sum_{i=1}^qv_ih_i(x^*)\ge\min_x L(x,\lambda,v) p=f0(x)L(x,λ,v)=f0(x)+i=0mλifi(x)+i=1qvihi(x)xminL(x,λ,v)

对于极值点 x ∗ x∗ x,恒有:
p ∗ ≥ d ∗ = max ⁡ λ ≥ 0 , v min ⁡ x L ( x , λ , v ) p^*\ge d^*=\max_{\lambda\ge0,v}\min_x L(x,\lambda,v) pd=λ0,vmaxxminL(x,λ,v)

可以看出 min ⁡ x L ( x , λ , v ) \min_xL(x,λ,v) minxL(x,λ,v) p ∗ p∗ p的下界,而 d ∗ d∗ d自然是下界中最大的那个(最接近原始最优解):

事实上对任何一个非负实值函数 f ( x , y ) f(x,y) f(x,y),总有:
max ⁡ x min ⁡ y f ( x , y ) ≤ min ⁡ y max ⁡ x f ( x , y ) \max_x\min_y f(x,y)\le\min_y\max_x f(x,y) xmaxyminf(x,y)yminxmaxf(x,y)

既然是下界,就必然有差距,定义 p ∗ − d ∗ p∗−d∗ pd为对偶间隙(duality gap).我们称 p ∗ ≥ d ∗ p∗≥d∗ pd为弱对偶性(weak duality)

2.2.4 Slater定理

首先给出凸优化定义:
min ⁡ x f 0 ( x ) \min_x f_0(x) xminf0(x)
s . t . f i ∗ ( x ) ≤ 0 , i = 1 , . . . m s.t.f_i*(x)\le 0,i=1,...m s.t.fi(x)0,i=1,...m
h i ( x ) = 0 , i = 1 , . . . q h_i(x)=0,i=1,...q hi(x)=0,i=1,...q
其中 h i ( x ) h_i(x) hi(x)是形如 h i ( x ) = a i T x = b i h_i(x)=a^T_ix=b_i hi(x)=aiTx=bi的仿射函数。相对上面讨论的优化问题,凸优化问题有三个附加要求:

  • 目标函数必须是凸的;
  • 不等式函数约束必须是凸的;
  • 等式约束必须是仿射的

凹凸可以转化:对于凹函数 f f f − f −f f即为凸函数。

与weak duality对应的是strong duality(强对偶性):
p ∗ = d ∗ p*=d* p=d,给出Slater定理:
如果原不等式优化问题为凸优化问题,且满足Slater条件:

  • f i ( x ) < 0 , i = 1 , 2 , . . . , m f_i(x)<0 ,i=1,2,...,m fi(x)<0i=1,2,...,m
  • h i ( x ) = 0 , i = 1 , 2 , . . . , q h_i(x)=0 ,i=1,2,...,q hi(x)=0i=1,2,...,q

p ∗ = d ∗ p∗=d∗ p=d

2.2.5 KKT条件

首先给出KKT(Karush-Kuth-Tucker,KKT)条件:
1 ) f i ( x ∗ ) ≤ 0 , i = 1 , 2 , . . . , m ( 原 始 不 等 式 约 束 ) 1) f_i(x^*)\le 0,i=1,2,...,m(原始不等式约束) 1)fi(x)0i=1,2,...,m() 2 ) h i ( x ∗ ) = 0 , i = 1 , 2 , . . . , q ( 原 始 等 式 约 束 ) 2) h_i(x^*)=0,i=1,2,...,q(原始等式约束) 2)hi(x)=0i=1,2,...,q() 3 ) λ i ∗ ≥ 0 , i = 1 , 2 , . . . , m ( 非 负 性 ) 3) \lambda_i^*\ge 0,i=1,2,...,m(非负性) 3)λi0i=1,2,...,m() 4 ) λ i ∗ f i ( x ∗ ) = 0 , i = 1 , 2 , . . . , m ( 互 补 松 驰 性 ) 4)\lambda_i^*f_i(x^*)=0,i=1,2,...,m(互补松驰性) 4)λifi(x)=0i=1,2,...,m 5 ) ∇ f 0 ( x ∗ ) + ∑ i = 1 m λ i ∗ ∇ f i ( x ∗ ) + ∑ i = 1 q v i ∗ ∇ h i ( x ∗ ) = 0 5)\nabla f_0(x^*)+\sum^m_{i=1}\lambda_i^*\nabla f_i(x^*)+\sum^q_{i=1}v_i^*\nabla h_i(x^*) =0 5)f0(x)+i=1mλifi(x)+i=1qvihi(x)=0

1)、2)、3)都容易理解,对于4)主要是防止 f i ( x ) > 0 f_i(x)>0 fi(x)>0的出现,从而设置一个障碍;5)因为 x ∗ x* x是最优值,只要偏导存在,该式成立——平稳点存在。
可以得出:
对于一般性优化问题:

  • KKT是原问题转化为对偶优化问题的必要条件(局部极小解一阶必要条件);
  • 如果约束条件满足凸优化定义,而 f 0 ( x ) f_0(x) f0(x)仅仅为一般函数,则 原问题准则函数对偶准则函数 的极值点通常不一致

对于凸优化问题:

  • 满足KKT条件的点,那么它们分别是 原问题准则函数对偶准则函数极值点并且 strong duality 成立

3 支持向量机[3][4]

3.1 支持向量机的原理

对于线性可分的两类问题,其分类决策边界为一 n n n 维特征空间中的超平面 H H H,一般情况下会有无穷多个解。当我们确定了一个解对应的权向量 w w w,超平面的斜率和朝向就是确定的了,可以在一定的范围内平移超平面 H H H,只要不达到或者越过两类中距离 H H H 最近的样本,分类决策边界都可以正确地实现线性分类。所以,任何一个求解得到的权向量 w w w,都会带来一系列平行的分类决策边界,其可平移的范围具有一定的宽度,称为分类间隔 d d d(Margin of Classification)。

显然,当我们改变 w w w,使分类决策边界的斜率和朝向随之变化时,我们得到的分类间隔是不同的。那么,分类间隔究竟是大还是小更好呢?当然是越大越好。因为分类间隔越大,两类样本做分类决策时的裕量也就越大,由于样本采集所带来的特征值误差所造成的分类错误也就越少。所以,在所有能够实现正确分类的权向量 w w w 中,去求取到分类间隔最大的一个 w ∗ w^* w,就是对线性分类器进行优化求解的一个很好的指标。这就是“支持向量机”这种线性分类器训练算法的出发点。

从这种优化求解的过程我们还能有一个十分重要的发现:那就是分类间隔是由所有训练集样本所决定的吗?不是!分类间隔是由距离分类决策边界最近的那些少量样本决定的,而比这些样本距离分类决策边界更远的大量样本,其实都不会影响到最优权向量的求取,这些作用十分特殊的样本,就被称为“支持向量(Support Vector)”,表示是他们支撑起了线性分类器在最大分类间隔意义下的最优解。这也是为什么这种算法被称为“支持向量机(Support Vector Machine,SVM)”的原因。

下面我们来看一看支持向量机是如何解决求取最大分类间隔对应的权向量这一问题的。

支持向量机的优化求解目标是求取能带来最大分类间隔的权向量 w w w,而如果我们始终将分类决策边界居中放置的话,分类间隔 d d d 就等于 2 倍的支持向量 x s x_s xs到分类决策边界的距离。从我们前面介绍过的判别函数的几何意义,我们知道样本到分类决策边界的距离为(推导见【线性分类器】(一)线性判别)
r = G ( x ) ∣ ∣ w ∣ ∣ r=\frac{G(x)}{||w||} r=wG(x)
所以
d = 2 ∣ G i j ( x s ) ∣ ∣ ∣ w ∣ ∣ d=2\frac{|G_{ij}(x_s)|}{||w||} d=2wGij(xs)
求取最大的分类间隔 d,就是求取 d = 2 ∣ G i j ( x s ) ∣ ∣ ∣ w ∣ ∣ d=2\frac{|G_{ij}(x_s)|}{||w||} d=2wGij(xs)的最大值。

权向量 w w w 代表的是分类决策边界的法向方向,它自身的长度是可以任意伸缩的。因此,求取最大的 d d d,可以固定 w w w 的长度,求取使 ∣ G i j ( x s ) ∣ |G_{ij}(x_s)| Gij(xs)最大的 w w w,也可以固定 ∣ G i j ( x s ) ∣ |G_{ij}(x_s)| Gij(xs),求取长度最短的 w w w。支持向量机算法采用的是后一种方法,即固定 ∣ G i j ( x s ) = 1 ∣ |G_{ij}(x_s)=1| Gij(xs)=1,将 m a x d max d maxd 的问题转化成 m i n ∣ ∣ w ∣ ∣ min||w|| minw的问题。为后续推导方便,进一步转化为二次优化问题 m i n 1 2 ∣ ∣ w ∣ ∣ 2 min\frac{1}{2}||w||^2 min21w2

当然,优化目标 m i n 1 2 ∣ ∣ w ∣ ∣ 2 min\frac{1}{2}||w||^2 min21w2是有条件的,就是两类的所有样本到分类决策边界的距离都要比支持向量更大,因为对于支持向量来说 ∣ G i j ( x s ) ∣ = 1 |G_{ij}(x_s)|=1 Gij(xs)=1,所以对于其他向量,判别函数的绝对值都需要大于 1,即有如下的不等式约束条件。
在这里插入图片描述

用取值为+1、-1 的符号函数 s g n sgn sgn,可以将约束条件规范化为统一的形式。
在这里插入图片描述

由此,求取最优的权向量 w w w,就转化成为了一个带约束的二次优化问题。支持向量机使用拉格朗日乘子法将其转化为无约束优化问题来求解,即通过将所有约束条件与拉格朗日乘子相乘后添加到优化目标中,在求取使 L L L最大值的拉格朗日乘子条件下(是为了使得 L L L逼近 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2,原因见2.2),求取最短的权向量 w w w

将以上原问题转化为对偶问题:
max ⁡ α min ⁡ ∣ ∣ w ∣ ∣ L ( w , w 0 , α ) \max_{\alpha}\min_{||w||}L(w,w_0,\alpha) αmaxwminL(w,w0,α)

对于 min ⁡ ∣ ∣ w ∣ ∣ L ( w , w 0 , α ) \min_{||w||}L(w,w_0,\alpha) wminL(w,w0,α)
L ( w , w 0 , α ) L(w,w_0,\alpha) L(w,w0,α)展开:
L ( w , w 0 , α ) = 1 2 w T w + ∑ i = 1 l α ( i ) ( 1 − s g n ( G i j ( x ( i ) ) ) ( w T x ( i ) + w 0 ) ) L(w,w_0,\alpha)=\frac{1}{2}w^Tw+\sum_{i=1}^l\alpha^{(i)}(1-sgn(G_{ij}(x^{(i)}))(w^Tx^{(i)}+w_0)) L(w,w0,α)=21wTw+i=1lα(i)(1sgn(Gij(x(i)))(wTx(i)+w0)) = 1 2 w T w + ∑ i = 1 l ( α ( i ) − α ( i ) s g n ( G i j ( x ( i ) ) ) w T x ( i ) − α ( i ) s g n ( G i j ( x ( i ) ) ) w 0 ) =\frac{1}{2}w^Tw+\sum_{i=1}^l(\alpha^{(i)}-\alpha^{(i)}sgn(G_{ij}(x^{(i)}))w^Tx^{(i)}-\alpha^{(i)}sgn(G_{ij}(x^{(i)}))w_0) =21wTw+i=1l(α(i)α(i)sgn(Gij(x(i)))wTx(i)α(i)sgn(Gij(x(i)))w0) = 1 2 w T w + ∑ i = 1 l α ( i ) − ∑ i = 1 l α ( i ) s g n ( G i j ( x ( i ) ) ) w T x ( i ) − ∑ i = 1 l α ( i ) s g n ( G i j ( x ( i ) ) ) w 0 =\frac{1}{2}w^Tw+\sum_{i=1}^l\alpha^{(i)}-\sum_{i=1}^l\alpha^{(i)}sgn(G_{ij}(x^{(i)}))w^Tx^{(i)}-\sum_{i=1}^l\alpha^{(i)}sgn(G_{ij}(x^{(i)}))w_0 =21wTw+i=1lα(i)i=1lα(i)sgn(Gij(x(i)))wTx(i)i=1lα(i)sgn(Gij(x(i)))w0
这一二次优化问题是个凸规划问题,存在唯一解,其充要条件可以通过拉格朗日函数分别对权向量 w w w 和偏置量 w 0 w_0 w0 求偏导来得到(对应2.2.5KKT条件的(5)),即
w w w求偏导
∂ L ∂ w = 1 2 × 2 ⋅ w + 0 − ∑ i = 1 l α ( i ) s g n ( G i j ( x ( i ) ) ) x ( i ) − 0 = 0 \frac{\partial L}{\partial w}=\frac{1}{2}\times 2\cdot w+0-\sum_{i=1}^l\alpha^{(i)}sgn(G_{ij}(x^{(i)}))x^{(i)}-0=0 wL=21×2w+0i=1lα(i)sgn(Gij(x(i)))x(i)0=0
得到:
w = ∑ i = 1 l α ( i ) s g n ( G i j ( x ( i ) ) ) x ( i ) w=\sum_{i=1}^l\alpha^{(i)}sgn(G_{ij}(x^{(i)}))x^{(i)} w=i=1lα(i)sgn(Gij(x(i)))x(i)
w 0 w_0 w0求偏导
∂ L ∂ w 0 = 0 + 0 − 0 − ∑ i = 1 l α ( i ) s g n ( G i j ( x ( i ) ) ) = 0 \frac{\partial L}{\partial w_0}=0+0-0-\sum_{i=1}^l\alpha^{(i)}sgn(G_{ij}(x^{(i)}))=0 w0L=0+00i=1lα(i)sgn(Gij(x(i)))=0
得到:
∑ i = 1 l α ( i ) s g n ( G i j ( x ( i ) ) ) = 0 \sum_{i=1}^l\alpha^{(i)}sgn(G_{ij}(x^{(i)}))=0 i=1lα(i)sgn(Gij(x(i)))=0

w w w代入 L L L
L ( w , b , α ) = 1 2 w T w + ∑ i = 1 l α ( i ) − ∑ i = 1 l α ( i ) s g n ( ⋅ ) w T x ( i ) − ∑ i = 1 l α ( i ) s g n ( ⋅ ) w 0 L(w,b,\alpha)=\frac{1}{2}w^Tw+\sum_{i=1}^l\alpha^{(i)}-\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)w^Tx^{(i)}-\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)w_0 L(w,b,α)=21wTw+i=1lα(i)i=1lα(i)sgn()wTx(i)i=1lα(i)sgn()w0 = 1 2 w T ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) − w T ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) + ∑ i = 1 l α ( i ) − w 0 ∑ i = 1 l α ( i ) s g n ( ⋅ ) =\frac{1}{2}w^T\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)}-w^T\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)}+\sum_{i=1}^l\alpha^{(i)}-w_0\sum_{i=1}^l\alpha^{(i)}sgn(\cdot) =21wTi=1lα(i)sgn()x(i)wTi=1lα(i)sgn()x(i)+i=1lα(i)w0i=1lα(i)sgn() = − 1 2 w T ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) + ∑ i = 1 l α ( i ) − w 0 ∑ i = 1 l α ( i ) s g n ( ⋅ ) =-\frac{1}{2}w^T\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)}+\sum_{i=1}^l\alpha^{(i)}-w_0\sum_{i=1}^l\alpha^{(i)}sgn(\cdot) =21wTi=1lα(i)sgn()x(i)+i=1lα(i)w0i=1lα(i)sgn()

再将 ∑ i = 1 l α ( i ) s g n ( ⋅ ) = 0 \sum_{i=1}^l\alpha^{(i)}sgn(\cdot)=0 i=1lα(i)sgn()=0代入上式:
L ( w , b , α ) = − 1 2 w T ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) + ∑ i = 1 l α ( i ) L(w,b,\alpha)=-\frac{1}{2}w^T\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)}+\sum_{i=1}^l\alpha^{(i)} L(w,b,α)=21wTi=1lα(i)sgn()x(i)+i=1lα(i) = − 1 2 ( ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) ) T ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) + ∑ i = 1 l α ( i ) =-\frac{1}{2}(\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)})^T\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)}+\sum_{i=1}^l\alpha^{(i)} =21(i=1lα(i)sgn()x(i))Ti=1lα(i)sgn()x(i)+i=1lα(i) = − 1 2 ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) T ∑ i = 1 l α ( i ) s g n ( ⋅ ) x ( i ) + ∑ i = 1 l α ( i ) =-\frac{1}{2}\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)T}\sum_{i=1}^l\alpha^{(i)}sgn(\cdot)x^{(i)}+\sum_{i=1}^l\alpha^{(i)} =21i=1lα(i)sgn()x(i)Ti=1lα(i)sgn()x(i)+i=1lα(i) = ∑ i = 1 l α ( i ) − 1 2 ∑ i = 1 l ∑ j = 1 l α ( i ) α ( j ) s g n ( G i j ( x ( i ) ) s g n ( G i j ( x ( j ) ) ) x ( i ) T x ( j ) =\sum_{i=1}^l\alpha^{(i)}-\frac{1}{2}\sum_{i=1}^l\sum_{j=1}^l\alpha^{(i)}\alpha^{(j)}sgn(G_{ij}(x^{(i)})sgn(G_{ij}(x^{(j)}))x^{(i)T}x^{(j)} =i=1lα(i)21i=1lj=1lα(i)α(j)sgn(Gij(x(i))sgn(Gij(x(j)))x(i)Tx(j)

因此原问题可以转化为:
max ⁡ α ( ∑ i = 1 l α ( i ) − 1 2 ∑ i = 1 l ∑ j = 1 l α ( i ) α ( j ) s g n ( G i j ( x ( i ) ) s g n ( G i j ( x ( j ) ) ) x ( i ) T x ( j ) ) \max_{\alpha}(\sum_{i=1}^l\alpha^{(i)}-\frac{1}{2}\sum_{i=1}^l\sum_{j=1}^l\alpha^{(i)}\alpha^{(j)}sgn(G_{ij}(x^{(i)})sgn(G_{ij}(x^{(j)}))x^{(i)T}x^{(j)}) αmax(i=1lα(i)21i=1lj=1lα(i)α(j)sgn(Gij(x(i))sgn(Gij(x(j)))x(i)Tx(j))

s . t . ∑ i = 1 l α ( i ) G i j ( x ( i ) ) = 0 s.t.\quad \sum_{i=1}^l\alpha^{(i)}G_{ij}(x^{(i)})=0 s.t.i=1lα(i)Gij(x(i))=0
α ( i ) ≥ 0 i = 1 , 2 , . . . , l \alpha^{(i)}\ge 0\quad i=1,2,...,l α(i)0i=1,2,...,l

注意到支持向量机的基本型中有不等式约束,因此上述过程需满足KKT(Karush-Kuhn-Tucker)条件,即要求

{ α ( i ) ≥ 0 sgn ⁡ ( G i j ( x ( i ) ) ) ( w T x ( i ) + w 0 ) − 1 ≥ 0 ∑ α ( i ) ( sgn ⁡ ( G i j ( x ( i ) ) ) ( w T x ( i ) + w 0 ) − 1 ) = 0 \left\{\begin{array}{c}\alpha^{(i)} \geq 0 \\\operatorname{sgn}\left(G_{i j}\left(x^{(i)}\right)\right)\left(w^{T} x^{(i)}+w_{0}\right)-1 \geq 0 \\\sum \alpha^{(i)}\left(\operatorname{sgn}\left(G_{i j}\left(x^{(i)}\right)\right)\left(w^{T} x^{(i)}+w_{0}\right)-1\right)=0\end{array}\right. α(i)0sgn(Gij(x(i)))(wTx(i)+w0)10α(i)(sgn(Gij(x(i)))(wTx(i)+w0)1)=0

所有 α i \alpha i αi 大于等于 0,所有样本可分,以及:
∑ α ( i ) ( s g n ( G i j ( x ( i ) ) ) ( w T x ( i ) + w 0 ) − 1 ) = 0 ( 互 补 松 驰 性 ) \sum\alpha^{(i)}(sgn(G_{ij}(x^{(i)}))(w^Tx^{(i)}+w_0)-1)=0(互补松驰性) α(i)(sgn(Gij(x(i)))(wTx(i)+w0)1)=0

要同时满足这 3 个条件,或者 α i = 0 \alpha i=0 αi=0,或者
s g n ( G i j ( x ( i ) ) ) ( w T x ( i ) + w 0 ) − 1 = 0 sgn(G_{ij}(x^{(i)}))(w^Tx^{(i)}+w_0)-1=0 sgn(Gij(x(i)))(wTx(i)+w0)1=0

α i = 0 \alpha i=0 αi=0,对应的样本对最优的 w w w 没有作用,是分类间隔区以外的那些样本

s g n ( G i j ( x ( i ) ) ) ( w T x ( i ) + w 0 ) − 1 = 0 sgn(G_{ij}(x^{(i)}))(w^Tx^{(i)}+w_0)-1=0 sgn(Gij(x(i)))(wTx(i)+w0)1=0

时,对应的样本正好位于分类间隔区边界上,就是我们说过的“支持向量”。

求解得到 α \alpha α后,就可以根据对 w w w求偏导的式子,最终可以求解到以支持向量的线性组合构成的权向量 w ∗ w^* w
w ∗ = ∑ i = 1 l s s g n ( G i j ( x s ( i ) ) ) α ( i ) x s ( i ) w^*=\sum_{i=1}^{l_s}sgn(G_{ij}(x_s^{(i)}))\alpha^{(i)}x_s^{(i)} w=i=1lssgn(Gij(xs(i)))α(i)xs(i)
将某一个或几个支持向量一起代入判别函数
G i j ( x ) = w ∗ T x + w 0 G_{ij}(x)=w^{*T}x+w_0 Gij(x)=wTx+w0
中,就可以求得偏置量 w 0 w_0 w0,也就得到了所要求的分类间隔最大的线性判别函数。

3.2 结构风险最小化准则

前面,我们学习了支持向量机的基本原理。SVM 将线性分类器的训练转化为一个带约束的最优化问题来求解。什么是最优解呢?就是使得分类间隔 d d d 取得最大值的权向量 w w w。SVM 用拉格朗日乘子法得到了这个问题的解。

SVM 的性能是十分优越的,这使它自提出以来,得到了非常广泛的应用。它的显著优点,首先是不需要大量的样本(因为最终的解仅由少数支持向量决定),另外就是有很强的泛化能力。

为什么 SVM 有很强的泛化能力?我们可以从分类器训练的一般思路来看一看。

如果给定了一个有类别标注的训练集,那么,训练分类器的过程,就是寻找到一条分类决策边界,能够把训练集中的样本正确地分类。训练之后的分类器,错误分类训练集中的样本的比例,称为经验风险 Remp (Empirical Risk)。显然,我们通常追求的目标,是经验风险最小化,就是训练集中的样本被错分的越少越好,最好是没有,就是 R e m p = 0 Remp=0 Remp=0

例如这个训练集,

我们能找到一条线性的分类决策边界来实现经验风险最小化。

而这个训练集

找不到线性解,但我们可以找到一条弯弯曲曲的分类决策边界,同样实现经验风险最小化。

那这两种解哪一个更好呢?虽然它们都实现了经验风险最小化,但显然第二种解在面对新的未知样本时,效果并不一定好。为什么?因为只有当训练集的样本数趋近于无穷,也就是训练集中样本的分布趋近于样本的真实分布时。经验风险才会趋近于真实样本分类的风险。当样本数不够多时,前面这些犬牙交错的点,可能根本就不是样本在特征空间中的真实位置,而仅仅是由于模式采集时噪声干扰带来的误差数据。如果我们仅仅追求训练集中样本一个都不能分错,那么面对未知新样本时,分错的可能性反倒增加了,这就是我们前面提到过的“过拟合”。

为了从根本上解决过拟合的问题,Vapnik 等人提出了一个与经验风险最小化不同的理论,叫做“结构风险最小化”,即 Structure Risk Minimization,SRM。

所谓的结构风险,就是一个训练好的分类器在面对未知样本时分类错误的概率。因为自然界真实的样本分布情况我们并不知道,所以,我们也很难准确地计算出结构风险是多少。但是,Vapnik 的 SRM 理论能够给我们一个它的上界,也称为泛化误差界,即
R ( w ) ≤ R e m p + φ ( h / l ) R(w)\le R_{emp}+\varphi(h/l) R(w)Remp+φ(h/l)
这里面第一项 R e m p ( w ) R_emp (w) Remp(w)就是我们训练得到分类器参数后的经验风险,第二项称为“置信风险”,它由两个参数决定: l l l 是训练集中的样本数 h h h 为分类器形式的 VC 维。而 ϕ ( h / l ) ϕ(h/l) ϕ(h/l)具体的计算公式是:
ϕ ( h l ) = h ( l n ( 2 l h ) + 1 ) − l n ( η 4 ) l \phi(\frac{h}{l})=\sqrt{\frac{h(ln(\frac{2l}{h})+1)-ln(\frac{\eta}{4})}{l}} ϕ(lh)=lh(ln(h2l)+1)ln(4η)
其中 η η η随机噪声带来的样本误差。

从结构风险表达式来看,如果分类器函数形式已经确定,当然样本数 l l l越大,置信风险就越小,同时结构风险也就越小。(样本大,不太容易过拟合。所以置信风险就比较小,对应的结构风险也较小。)

但是如果训练集中的样本数不够多,那么结构风险的大小就受置信风险大小的很大影响,而此时置信风险的大小取决于分类器函数形式本身具有的 VC 维。函数的 VC 维 h h h 越大(函数越复杂),则置信风险也就越大(过拟合可能越大),相应的结构风险也越大,分类器的泛化能力就越差。(样本小模型复杂,泛化能力就得不到保障。所以置信风险就比较大,对应的结构风险也越大)。

什么是 VC 维?VC 维是一类函数所具有的分类能力。它的值就是这类函数能够打散(Shatter)的两分类样本集中最大样本数量。例如:在二维特征空间中,如果样本集中有 2 个样本,那么可能有 2 2 = 4 2^2=4 22=4 (每个样本的类别都有两种可能)种不同的类别标注可能性。
在这里插入图片描述

无论是哪一种情况,都可以用任何形式的一条曲线正确地做类别分隔;如果样本集中有3 类样本,也是一样的;如果样本集中有 4 个样本,那么总计 2 4 = 16 2^4=16 24=16 种不同的类别标注可能性中,总有一些是线性形式的分类器无法分隔的(例如这种两类样本交错的情况)
在这里插入图片描述
所以,线性分类器的 VC 维就是 3。而什么函数能够把 4 个样本的样本集打散呢?显然,二次曲线是可以的。所以,二次函数的分类器 VC 维至少是 4。

由此可见,在相同维度的特征空间中,分类器函数形式的阶次越低,其 VC维也就越小,即使在样本集样本数量有限的情况下,训练后的分类器结构风险也就越小,泛化能力也能很强。而支持向量机是什么函数形式?是阶次最低的线性函数!这就是为什么支持向量机在不需要大量训练集样本的情况下,也能取得泛化能力非常强的分类器训练结果的主要原因。

所以,支持向量机并不是 Vapnik 突发奇想所提出的某个孤立的算法,而是应用结构风险最小化准则的一个结果。要实现结构风险最小化,

  • 或者是加大训练集的规模,但会带来计算量的问题;
  • 或者就是先选择 VC 维低的分类器形式,以降低置信风险,再通过分类器参数的优化来降低经验风险。

支持向量机采用的就是后一种思路,并取得了成功。当前非常热门的深度学习,其实采用的是前一种思路

3.3 线性不可分时的 SVM

我们前面介绍的支持向量机算法,也被称为“线性支持向量机”。因为它有解的一个前提条件,就是样本集是线性可分的,能够用一个线性分类决策边界把不同的类分开。然后才是在可能的线性判别函数中,去找到分类间隔最大的那一个。其最终解是由支持向量的线性组合所构成的。

但是在实际的模式识别问题中,线性可分的问题毕竟是少数,并且还还很难去预先判别一个样本集是否具有线性可分性。如果支持向量机只能处理线性可分的模式识别问题,那么可想而知,其应用范围必然会受到巨大的制。

但实际情况不是这样。支持向量机算法应用范围非常广,非常成功。所以,它必然有独门绝技,能够处理线性不可分的模式识别问题。

支持向量机面临的线性不可分问题,可能有两种情形:

  • 一种是由于样本集中的异常点带来的线性不可分,
  • 另一种是问题本质上的线性不可分。
3.3.1 样本集中的异常点带来的线性不可分 ——软间隔支持向量机

如果一个模式识别问题,所有样本的采集过程没有噪声干扰,都是真实数据,并且样本集是线性可分的,那么,支持向量机的求解就是一个有约束的二次规划问题,能够得到最优解。

如果一个模式识别问题,其本质上是线性可分的,但是由于模式采集的过程中各种噪声干扰和采样误差,造成了一些异常点。这些异常点会带来最优解求取的偏差,甚至有可能使线性可分的问题变成了线性不可分的问题,从而无法用线性支持向量机求解。

这种情况该如何处理呢?

我们知道,线性支持向量机是把具有最大分类间隔的最优线性判别函数求解,转化为求解最短权向量的二次规划问题,而这个二次规划问题的约束条件,就是所有样本都在分类间隔区域以外,即判别函数的绝对值大于等于 1

如果我们考虑异常点是噪声干扰下的数据,不能完全以异常点为基准来求解最优权向量,那么,如果求取到了不考虑异常点的最优权向量,则异常点到线性分类器决策边界的距离一定比支持向量到分类决策边界的距离更近,也就是说,异常点的判别函数值的绝对值,一定是小于 1 的。所以,如果要把异常点考虑进去,又不希望它们影响到合理的最优权向量求解,就可以在约束条件中减去一项正数 ξ ξ ξ,使判别函数的绝对值允许小于 1:
sgn ⁡ ( G i j ( x ( l i ) ) ) ( w T x ( l i ) + w 0 ) ≥ 1 − ξ ( l i ) \operatorname{sgn}\left(\boldsymbol{G}_{i j}\left(\boldsymbol{x}^{\left(l_{i}\right)}\right)\right)\left(\boldsymbol{w}^{T} \boldsymbol{x}^{\left(\boldsymbol{l}_{i}\right)}+\boldsymbol{w}_{0}\right) \geq \mathbf{1}-\xi^{\left(l_{i}\right)} sgn(Gij(x(li)))(wTx(li)+w0)1ξ(li)
ξ ξ ξ就称为松弛变量

ξ ξ ξ的取值是多少?是由我们预先给定吗?显然不是,因为在支持向量机训练之前,我们根本不知道哪些样本是异常点,哪些是真正的支持向量。所以,我们希望把 ξ ξ ξ也作为优化的目标,就是希望 ξ ξ ξ越少越好,越小越好。最理想的情况,绝大多数支持向量外侧的样本(包括支持向量),对应的松弛变量都应该是为 0的。只有少数在支持向量内侧的异常点,才有一个尽可能小的松弛变量。因此,我们可以把所有松弛变量的和值也作为优化目标的一个分项,即在原来的最短权向量的二次优化目标基础上,再加上一项 C ∑ i = 1 l ξ ( i ) C\sum_{i=1}^l\xi^{(i)} Ci=1lξ(i)
在这里插入图片描述

使它们的和能够取得最小值。松弛变量和值之前的这个 C C C,称为惩罚因子,表示我们对分类器中存在异常点的容忍程度。

  • C C C 越小,松弛变量的存在对整体优化过程的影响越小,说明对异常点的容忍度越高;

  • C C C 越大,松弛变量的存在对整体优化过程的影响越大,说明对异常点的容忍度较低,在结果中有较重的惩罚。



极端情况,当 C C C 为无穷大时,说明根本不能允许任何大于 0 的松弛变量存在,就回到了严格的线性支持向量机。您可以再设想一下,如果 C C C 取 0,会出现什么情况呢?是的,如果 C C C 取 0,松弛变量的大小根本对最终的优化毫无影响,或者说,线性分类决策边界简直可以随便乱画,无所谓对各个类别的样本是否能正确分类,因为约束条件被彻底破坏掉了。

含有松弛变量项的最短权向量求解问题仍然是凸二次规划的问题,其求解的过程与线性支持向量机无异。但是求解过程中拉格朗日乘子除了有大于等于 0 的约束外,还会有不能大于惩罚因子 C C C 的约束。最后得到的最优权向量 w ∗ w* w,仍然是由一组支持向量 x s xs xs 的线性组合所构成的。只是其中拉格朗日乘子取到最大值 C C C 时所对应的样本,其优化得到的松弛变量ξ可能不为 0, 而此时对应的样本就是被划分到最大分类间隔内部的那些异常点,甚至是被错误分类的异常点。

所以,采用松弛变量和惩罚因子的支持向量机,仍然是一个线性分类器,只是付出了经验风险不为 0(就是不能对所有训练集样本都正确分类)的代价,来减小了模式采样误差和噪声干扰对分类器训练的影响,得到的是性能更好、泛化能力更强的分类器。这种支持向量机,也被称为采用“软间隔”的支持向量机

3.3.2 问题本质上的线性不可分——非线性支持向量机

对于问题本质上的线性不可分的情形,例如二维特征空间中的异或问题,它本质上就无法用一个线性分类器来实现正确的分类。
那么,支持向量机能够处理这种情况吗?答案是肯定的,支持向量机面对这种非线性分类的问题,所采用的方法就是广义线性化(详细见【线性分类器】(一)线性判别)。

广义线性化就是将低维空间中的一个非线性分类问题往高维空间映射,从而转化为一个线性分类问题。例如这个一维空间中的非线性判别问题,通过映射到二维空间,就变成了一个线性判别问题。

异或问题也是一样。二维空间中的异或问题,映射到三维空间中后,可以成为一个线性分类的问题。


可用一平面将其分类。

那么,如果将一个非线性分类问题,映射到高维空间中变成一个线性问题,不是就可以用线性支持向量机算法来加以解决了吗?

假设原始特征空间中样本的特征向量为 x ( i ) x(i) x(i),向高维特征空间映射变换为 ,则 x ( i ) x(i) x(i)在高维空间中的映射 y ( i ) y(i) y(i) φ ( x ( i ) ) \varphi(x^{(i)}) φ(x(i)),判别函数也从 G i j ( x ( i ) ) G_{ij}(x(i)) Gij(x(i)),映射成为了 F i j ( y ( i ) F_{ij}(y(i) Fij(y(i)。但是请注意,因为样本的类别标签没有改变,所以判别函数的符号也没有改变,即
s g n ( F i j ( y ( i ) ) ) = s g n ( G i j ( x ( i ) ) sgn(F_{ij(y(i))})=sgn(G_{ij}(x(i)) sgn(Fij(y(i)))=sgn(Gij(x(i))

max ⁡ α ( ∑ i = 1 l α ( i ) − 1 2 ∑ i = 1 l ∑ j = 1 l α ( i ) α ( j ) s g n ( G i j ( x ( i ) ) s g n ( G i j ( x ( j ) ) ) x ( i ) T x ( j ) ) \max_{\alpha}(\sum_{i=1}^l\alpha^{(i)}-\frac{1}{2}\sum_{i=1}^l\sum_{j=1}^l\alpha^{(i)}\alpha^{(j)}sgn(G_{ij}(x^{(i)})sgn(G_{ij}(x^{(j)}))x^{(i)T}x^{(j)}) αmax(i=1lα(i)21i=1lj=1lα(i)α(j)sgn(Gij(x(i))sgn(Gij(x(j)))x(i)Tx(j))
变换为:
max ⁡ α ( ∑ i = 1 l α ( i ) − 1 2 ∑ i = 1 l ∑ j = 1 l α ( i ) α ( j ) s g n ( G i j ( x ( i ) ) s g n ( G i j ( x ( j ) ) ) ϕ ( x ( ( i ) ) ) T ϕ ( x ( j ) ) ) \max_{\alpha}(\sum_{i=1}^l\alpha^{(i)}-\frac{1}{2}\sum_{i=1}^l\sum_{j=1}^l\alpha^{(i)}\alpha^{(j)}sgn(G_{ij}(x^{(i)})sgn(G_{ij}(x^{(j)}))\phi(x^{((i))})^T\phi(x^{(j)})) αmax(i=1lα(i)21i=1lj=1lα(i)α(j)sgn(Gij(x(i))sgn(Gij(x(j)))ϕ(x((i)))Tϕ(x(j)))

如果在高维空间中原始的非线性可分模式识别问题转化为了一个线性可分的模式识别问题,那么,其在高维特征空间中的支持向量机解,同样是求取最短权向量对应的线性分类决策边界,采用拉格朗日乘子法来求解时,最终是求解这样的一个无约束最优化问题,其解得的线性判别函数为(对应上文未采用核方法的求解结果):

在这里插入图片描述

看起来似乎我们通过广义线性化,可以用支持向量机来解决低维空间中的非线性分类问题了。但是另一个问题来了:我们怎么知道应该映射到多少维的特征空间,非线性分类问题才会转化成线性分类问题呢?又如何找到合适的映射函数呢?更不用说将问题转化到高维空间中后,会带来巨大的计算量问题,甚至会因为维度灾难造成问题根本无法解决。

我们可以发现,无论是在高维空间的线性支持向量机求解过程中,还是在最终得到的线性判别函数中,除了类别标签以外,我们并没有用到原始空间中的样本 x ( i ) x(i) x(i)映射到高维空间中的像 y ( i ) y(i) y(i),我们用到的只是高维空间中两个向量的内积。换句话说,如果我们能够不经过原始特征空间到高维特征空间的映射过程,就能够计算出两个低维空间的向量在高维空间中的内积,就可以实现非线性支持向量机求解的目标。

核函数是这样一类函数,它的输入是低维空间中的两个向量,输出是这两个向量经过同一个映射到另一个空间以后的内积。换句话说,使用核函数,可以在低维空间中直接计算某一些高维空间中的向量内积,而无需进行向量从低维空间到高维空间的映射变换。
可以证明,当有一个形为
K ( x ( i ) , x ( j ) ) K(x^{(i)},x^{(j)}) K(x(i),x(j))

标量函数,对样本集中所有样本间的函数值构成的矩阵是半正定的,那么这个函数就是一个核函数。这个条件称为“Mercer 定理”。

所以,核函数的数量是非常多的,并且有不同的形式。常用的核函数形式包括:多项式核函数,
K ( x ( i ) , x ( j ) ) = ( x ( i ) T + c ) d , d = 1 , 2 , . . . K(x^{(i)},x^{(j)})=(x^{(i)T}+c)^d,d=1,2,... K(x(i),x(j))=(x(i)T+c)d,d=1,2,...

它直接基于两个向量的内积,隐含着多项式展开后每一项向高维空间映射为一个新的维度,因此有一定的几何意义,但是随着 n n n 的增加稳定性会逐渐变差;

sigmoid 核函数
K ( x ( i ) , x ( j ) ) = t a n h ( β x ( i ) T x ( j ) + γ ) K(x^{(i),x^{(j)}})=tanh(\beta x^{(i)T}x^{(j)}+\gamma) K(x(i),x(j))=tanh(βx(i)Tx(j)+γ)

来自于人工神经网络,是激活函数的一种常见形式;径向基核函数

K ( x ( i ) , x ( j ) ) = e x p ( − ∣ ∣ x i − x ( j ) ∣ ∣ 2 2 σ 2 ) , 高 斯 型 K(x^{(i)},x^{(j)})=exp(-\frac{||x^{i}-x^{(j)}||^2}{2\sigma^2}),高斯型 K(x(i),x(j))=exp(2σ2xix(j)2),

是指核函数值只与两个样本之间的距离有关,距离越远核函数值越小。径向基核函数包括许多形式,高斯核函数就是一种常用的径向基核函数。径向基核函数最有特点的是,它隐含着低维空间向高维空间的映射,而且可能是无限维的高维特征空间映射。

使用核函数以后,我们就可以假定在低维原始特征空间中的一个非线性分类问题
在这里插入图片描述

映射到某个高维空间变成了一个线性可分的问题(虽然我们并不知道究竟是怎么映射的)
在这里插入图片描述

然后我们就可以进行线性支持向量机的求解了。求解过程中需要用到样本集中样本之间的内积,就用核函数来计算,最后得到的高维空间中的线性判别函数,也用同样的核函数代入,就得到了低维空间中的判别函数。请注意,此时的判别函数还是线性的吗?不是了,而是一个非线性判别函数。这就是完整的非线性支持向量机算法。

最后一个问题就是:如何选择核函数? 遗憾的是,无论是核函数的形式还是参数,都没有确定的选择方法,只能依靠经验来试。这里面深层次的问题是,我们并不知道一个低维空间中的非线性分类问题,映射到多高的维度、如何映射才能变成一个线性可分的问题。甚至是不是永远都无法变成一个线性可分的问题。所以,核函数方法只是提供给我们一种可能,如果可以通过广义线性化来解决某一个非线性分类问题,那么这个问题的求解过程中,可以通过与所需的映射相一致的某个核函数方便地计算在高维空间中的向量内积,从而方便地得出分类器训练结果。如果我们试来试去都没有找到支持向量机的解,我们也无法确定是没找到合适的核函数?还是该问题本身就没有线性分类器的解。

不过一般情况下,核函数方法配合软间隔方法,能够为大多数问题都找到支持向量机的解,因此支持向量机才获得了那么大的成功,并且这种成功一直延续到面临深度学习的挑战为止。

参考:
[1]:高等数学(下) 同济大学数学系 人民邮电出版社
[2] https://www.cnblogs.com/xingshansi/p/6628785.html
[3] https://blog.csdn.net/abcdrachel/article/details/95842833
[4] 中国大学mooc 人工智能之模式识别 高琪,李位星,冯肖雪, 北京理工大学

THE END.
感谢阅读。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二进制人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值