SVM系列之核函数与KKT条件(二)

前言

前一篇文章中介绍的 SVM 基本型,其实还可以进行优化。主要是利用核函数对向量内积的计算进行优化。另外,我们还将详细分析拉格朗日乘子法与KKT条件,以及KKT条件对SVM分类的作用。那我们先来看看核函数是什么。

核函数

在异或问题中,由于 0 0 = 0 1 1 = 0 0 1 = 1 1 0 = 1 ,所有只有两类结果,我们将 0 标记为负号,将 1 标记为正号,并且将这四种情况形象地标注在下图左侧中。可以看到,对于这类样本点,我们无法找到线性可分的超平面,而只能绘制一条非线性曲线将他们划分开。那么有什么办法可以将他们划分开呢?这时候,核方法(kernel trick)就出场啦。

所谓的核方法,其实就是将样本从原始的特征空间映射到一个高维的特征空间,以使得样本在高维特征空间中仍然线性可分。正如下图中所示,我们对 x 使用一个映射函数 ϕ ,得到映射到高维特征空间的特征向量 ϕ ( x ) ,然后这些样本点在三维空间的确可以找到一个平面将样本点线性可分(黑色实线所画的平面)。幸运的是,如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。那么其实我们只要找到映射函数,就可以将线性不可分的样本转为线性可分的情况了。但是,这个映射函数很难寻找,SVM模型没有直接硬来,而是巧妙的引入核函数来间接地解决实现这种变换。

那么接下来我们看看核函数如何应用于模型上。

三维上的异或问题分类

在前一篇文章中的 SVM 对偶问题为:

max α i = 1 m α i 1 2 i = 1 m j = 1 m α i α j y i y j x i T x j α i 0

可以看到,我们需要计算第 i 和第 j 两个样本的内积。
另外,对应的分类决策函数的公式为:

f ( x ) = w T x + b = i = 1 m α i y i x i T x + b

我们也需要计算总样本 X 和样本 i之间的内积。我们发现,这里其实存在着重复的内积计算,并且在高维中内积计算非常耗时,可不可以只算一次?事实上,是可以的,我们完全可以提前将两两样本间以及样本与自身的内积都算出来并存储下来,下次使用时只需直接取出使用即可,这大大提高了计算效率。但是,现在问题是当样本点映射到高维空间中内积计算的问题。这里,就巧妙引入了核函数,替代了向量内积。它可表示为:

k ( x i , x j ) = ϕ ( x i ) T ϕ ( x j )

那么引入核函数后,对偶问题变为:
max α i = 1 m α i 1 2 i = 1 m j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) = max α i = 1 m α i 1 2 i = 1 m j = 1 m α i α j y i y j k ( x i , x j ) α i 0

分类决策函数变为:
f ( x ) = w T x + b = i = 1 m α i y i ϕ ( x i ) T ϕ ( x j ) + b = i = i m α i y i k ( x , x i ) + b

所以我们只需要计算核函数的值即可,而核函数的计算只需套用公式。常用的核函数有线性核( k ( x i , x j ) = x i T x j ,线性核代表了原始特征空间,为了统一写法,有了线性核)以及高斯核( k ( x i , x j ) = exp ( x i x j 2 2 σ 2 ) ) 等。

注意到大部分的拉格朗日乘子 α i 都是 0。因为大部分的样本都会被分类正确,只有少部分的样本被误分类,也就说只要被分类正确, α i = 0 ,该样本不会出现在分类决策函数的求和公式中,自然不会对最终的决策结果产生任何影响。

最后,支持向量机的决策过程也可以看做一种相似性比较的过程。首先,输入样本与一系列模板样本进行相似性比较,模板样本就是训练过程决定的支持向量,而采用的相似性度量就是核函数。样本与各支持向量比较后的得分进行加权后求和,权值就是训练时得到的各支持向量的系数 α i 和类别标号的成绩。最后根据加权求和值大小来进行决策。而采用不同的核函数,就相当于采用不同的相似度的衡量方法。

到这里,SVM的理论基础基本都介绍完了。总的来说,首先进行特征空间的非线性映射,然后在这个新的空间中求最优分类面即最大间隔分类面,而这种非线性映射是通过定义适当的内积核函数来巧妙实现的。

接下来,我们介绍下凸优化问题中涉及的KKT条件。

KKT条件(Karush–Kuhn–Tucker conditions)

什么是KKT

KKT 是一组不等式约束,主要应用在凸优化问题上。其实大家在高数中曾使用过拉格朗日乘子法求解带等式约束的优化问题,而KKT条件解优化问题就是升级版啦。

拉格朗日乘子法

假设有如下带等式约束的优化问题:

min f ( x ) s . t . h i ( x ) = 0 i = 1 , 2 , , m

我们使用拉格朗日乘子法通过引入拉格朗日乘子将等式约束的优化问题转化为无等式约束的优化问题。
所以我们通过一个拉格朗日乘子组成的行向量 α (其中 α = [ α 1 , α 2 , , α n ] ),将目标函数和等式约束组合成 L ( α , x ) = f ( x ) + α T h ,其中 h ( x ) = [ h 1 ( x ) , h 2 ( x ) , , h m ( x ) ] T 。然后就可以求最优值,也就是利用费马引理,将函数 L 对各个参数求导取零,然后等式联立进行求解。

KKT条件

假设有如下带不等式约束的优化问题:

min f ( x ) s . t . g i ( x ) 0 i = 1 , 2 , , n h j ( x ) = 0 j = 1 , 2 , , m

我们同样先将约束问题转化为无约束的优化问题,得到函数:
L ( α , β , x ) = f ( x ) + α g ( x ) + β h ( x )

其中 α β 为行向量, g ( x ) h ( x ) 均为列向量。那么KKT条件的作用就是,该问题的最优解必须满足以下条件:

  1. L ( α , β , x ) x 的导数为零;
  2. h ( x ) = 0
  3. α g ( x ) 0

这样之后就能求得最优值。其中第三个式子比较有意思。由于 g ( x ) 0 ,因此只有 α = 0 g ( x ) = 0 时,等式才成立。而这里是 SVM 中很多重要性质的来源,比如支持向量的概念。后面我们在介绍KKT条件与 SVM 的关系时再具体解释。那为什么拉格朗日乘子法和KKT条件能够得到最优值?

拉格朗日乘子法和KKT条件能够得到最优值的原因

拉格朗日求最优的几何分析

对于拉格朗日乘子法,假设目标函数为 α g ( x ) 0

这样之后就能求得最优值。其中第三个式子比较有意思。由于 g ( x ) 0 ,因此只有 α = 0 g ( x ) = 0 时,等式才成立。而这里是 SVM 中很多重要性质的来源,比如支持向量的概念。后面我们在介绍KKT条件与 SVM 的关系时再具体解释。那为什么拉格朗日乘子法和KKT条件能够得到最优值?

拉格朗日乘子法和KKT条件能够得到最优值的原因

拉格朗日求最优的几何分析

对于拉格朗日乘子法,假设目标函数为 f ( x , y ) ,要求其极值,且满足

相关文章
相关标签/搜索