回顾
通过定义训练集S={(x(i),y(i));i=1,2,...,m}与线性决策平面(w,b)之间的function margin γ^和geometric margin γ 、好的分类决策平面特点得到了一个最优化问题:
max(γ,w,b)γ s.t. y(i)(wTx(i)+b)≥γ, ||w||=1
下面要介绍的就是如何解决这个最优化问题,一个思路就是将这个没有“现货”可以解决的优化问题,转变为off-the-shelf的最优化问题的形式,以便直接拿来使用。
最优化问题推导过程
约束条件中的||w||=1是一个nasty(非凸)的目标,于是进行第一步的演变:
- 将最大化geometric margin转变为最大化function margin
max(γ^,w,b)γ^ s.t. y(i)(wTx(i)+b)≥γ^,i=1,2,...,m
虽然没有了||w||=1的约束,但这个优化目标则变为了一个nasty(non-convex)函数,需要进行第二步的演变:
- 引入(w,b)的尺度限制,使function margin γ^=1
考虑到最大化γ^/||w||=1/||w||等效于最小化||w||2,于是第二步演变后得到的优化问题为:
max(γ,w,b)12||w||2 s.t. y(i)(wTx(i)+b)≥1,i=1,2,...,m
经过两步的推导,问题转变为了一个典型的凸二次目标与线性约束的优化问题,这类问题可以通过成熟的software解决,不必深究。
虽然通过上面的推导过程能够解决并得到一个好的分类决策超平面,但是还得介绍一下Lagrange duality,通过上面优化问题的对偶形式,可以引入kernel trick得到在高维空间表现很好的optimal margin classifiers,另外,dual form将得到比上面解普通二次优化问题更加有效的方法。
Lagrange duality
1. Lagrange multiplier
考虑下面形式的优化问题:
minw f(w) s.t. hi(w)=0, i=1,...,l.
解决方法之一就是Lagrange multipliers,定义Lagrangian为:
L(w,β)=f(w)+sumli=1βihi(w)
βi那一项叫做Lagrange multipliers。通过求解偏微分来得到对应的w、β。
2. primal optimization problem
将如下形式的优化问题成为primal optimization问题:
minw f(w) s.t. gi(w)≤0,i=1,...,k hi(w)=0, i=1,...,l.
为了解决这个问题,开始进行相关的推导:
- generalized Lagrangian:
L(w,α,β)=f(w)+sumki=1αigi(w)+sumli=1βihi(w)
- objective θP(w):
θP(w)=maxα,β:αi≥0L(w,α,β)=maxα,β:αi≥0 f(w)+sumki=1αigi(w)+sumli=1βihi(w)
讨论一下,如果gi(w)>0 or hi(w)≠0,则objective就变为了无穷大,因此maximize就是为了使gi(w)、hi(w)满足约束条件。当它们满足约束条件时,为了使objective就等于了f(w)。这里P的含义代表的是primal。
- final optimization form:
minwθP(w)=minw maxα,β:αi≥0L(w,α,β)
- final optimal solution:
p?=minwθP(w)
3. 对偶问题dual optimization problem
- objective θD(α,β):
θD(α,β)=minwL(w,α,β)
这里D代表的是dual。
- dual optimization problem:
maxα,β:αi≥0θD(α,β)=maxα,β:αi≥0 minwL(w,α,β)
- dual solution:
d?=maxα,β:αi≥0θD(w)
4. 耦合primal和dual问题
不加约束地,两者有如下形式的关系:
d?=maxα,β:αi≥0 minwL(w,α,β)≤minw maxα,β:αi≥0L(w,α,β)=p?
我们期望是在满足某些条件时,令d?=p?。而这个条件就是著名的KKT条件,这里不再详述,只是进行稍微的解释说明:f、gi(w)是凸函数,而hi(w)需为affine,即形如hi(w)=aTiw+bi。同时,如果(w,α,β)满足KKT条件,它就是primal和dual问题的解。
- KKT formulation
?L(w?,α?,β?)?wi=0,i=1,...n?L(w?,α?,β?)?βi=0,i=1,...lα?gi(w?)=0,i=1,...,kgi(w?)≤0,i=1,...,kα?≥0,i=1,...,k
另外值得注意的条件就是,α?gi(w?)=0,i=1,...,k,叫做KKT dual complementary condition,它表明了如果α?>0,那么gi(w?)=0。后续引入到maximize marge问题中,会推导出support vector的定义。
optimal margin classifiers
这里重写margin最大化的问题:
max(γ,w,b)12||w||2 s.t. y(i)(wTx(i)+b)≥1,i=1,2,...,m
- support vector
通过定义gi(w)这个约束项为如下形式:
gi(w)=?y(i)(wTx(i)+b)+1≤0
这样这个问题就转变为了上面所介绍的那些预备问题了。从KKT dual complementary condition中可知,α?>0对应训练样本中那些functional margin等于1的样本点,即使得gi(w?)=0,这些点就叫做support vector。
2. 构造对偶问题
- 构造Lagrangian
按照上面的介绍的Lagrangian,构造如下形式:
L(w,b,α)=12||w||2?∑i=1mαi[y(i)(wTx(i)+b)?1]
- 构造θD
按照上面介绍的dual问题的步骤,进行构造,然后求解。对w求解偏微分,得到如下的对应的w:
w=∑i=1mαiy(i)x(i)
这个公式很重要,还记得刚才提到的support vector,实际上最后得到的w就是support vectors的样本点的线性组合。这一现象被称为??表示定理??。实际上知道了决策超平面w之后,很容易得到b的表达式为:
b?=?maxi:y(i)=?1w?Tx(i)+mini:y(i)=+1w?Tx(i)2
实际上的含义就是当知道斜率之后,求截距b就是不断地进行平移,移动到两个样本的正中间。其实比较困难的地方时在求斜率上。
- 对偶问题
最后推出的dual问题的形式如下:
maxα W(α)=∑i=1mαi?12∑i,j=1my(i)y(j)αiαj<x(i),x(j)>s.t. αi≥0,i=1,...,m∑i=1mαiy(i)=0
当然这样进行dual问题转化,需要先验证KKT条件,否则两者primal和dual问题的解不等,转化就没意义了。这样问题转化为了求解参数为αi的最大化问题。
到此,假设已经得到了对应的解,那么模型在进行工作时,计算wTx+b时,可以进行如下的转换:
wTx+b=(∑i+1mαiy(i)x(i))Tx+b=∑i+1mαiy(i)<x,x(i)>+b
所以,计算中只需要计算新输入的x与训练集中的x的内积就好了。还记得support vector吧,实际上只需要计算新输入x与support vcetors的内积就好了。上面的那种形式,有助于我们引出kernel trick。
Kernels核
回顾linear regression,通过features x,x2,x3...,xn来获取更加powerful的曲线。实际上是通过特征一声,将原始特征映射到高维空间,随着n的增大,模型的能力越强,复杂度越高,可以拟合的曲线也越弯曲,但是随着自由度的增加,模型很有可能overfitting。常规的方法是不可能达到无穷多维度的拟合的。特征映射记为?,映射后的特征记为?(x)。而kernel的定义为:对应给定的特征映射?(x),K(x,z)=?(x)T?(z)。给定一个kernel就表达了两层信息,一是特征映射函数,二是内积。Kernel的好处是容易计算,如果对应的特征映射?(x)是一个高维度的矢量,那么计算内积就比较费劲,而通常直接利用Kernel能够获得更有效率的计算。另一方面,kernel具有内积的特性,表示了经过特征转换后的特征相似度。比如:
K(x,z)=exp(?||x?z||22σ2)
当x,z距离很近时,接近为值接近为1;当x,z距离很远时,接近为值接近为0;这个Kernel叫做Gaussian kernel。定义Kernel matrix为Kij=K(xi,xj)。K得是半正定的对称矩阵。这是一个充分条件,被称为Mercer Theorem。
将Kernel应用与SVM是非常明显的,而kernel不仅仅能应用于SVM,特别地,当学习算法中需要以输入特征矢量的内积形式时,使用kernel代替将会在高维特征空间非常高效地工作。所以,称这种技能为kernel trick。
2015-8-26
艺少
版权声明:本文为博主原创文章,未经博主允许不得转载。