笔记(总结)-SVM(支持向量机)的理解-4

前三篇主要是介绍SVM的原理。最初SVM的原问题是凸二次优化问题,有现成的算法可以求解,费尽周折转换到对偶问题,一是在对偶问题形势下可以使用核函数,二是对偶问题我们可以高效求解。本篇主要介绍如何求解SVM。

SMO:Sequential Minimal Optimization


Coordinate Ascent(座标上升法)

回到我们的对偶问题:

maxW(α)=iαi12ijαiαjyiyjxiTxj

s.t. iαiyi=0, 0αiC

上述问题仅仅是关于一系列α 的优化问题,即:

maxαW(α1,...,αm)

考虑使用座标上升法解决该问题:
这里写图片描述
算法内层循环将αi 看做变量,其他的α 看做常量进行优化。在二维情况下,函数等高线图的优化路线如下:
这里写图片描述
可以看到,每一步优化中,都固定了一个变量,让另一个变量取值使目标函数“最优”,交替更新两个变量直到收敛或达到某种停止条件。然而由于如下限制,无法在对偶问题中使用座标上升法求解:

α1=y1i=2nαiyi

假如我们想固定其他变量,更新α1 ,由于对偶问题的约束,固定其他变量后α1 为常量。

SMO Algorithm

只选取一个αi 更新是不行的,那么考虑一次至少更新两个变量。这便是SMO算法的动机由来,算法如下:
这里写图片描述

算法思想很简洁,先按某种方式选定要更新的两个变量αi,αj ,然后固定其它变量对αi,αj 进行更新来优化W(α)

优化步骤

例如我们现在想优化α1,α2 ,由约束可以得到:

α1y1+α2y2=i=3nαiyi=,ζ

又由对偶问题约束0αiC 可以得到可行解如下图,α1,α2 必须位于直线α1y1+α2y2=ζ 被矩形区域[0,C]×[0,C] 截断的线段上:
这里写图片描述

由直线约束可以将α1 表示为α2 的函数,即:

α1=(ζα2y2)y1

由此得到目标函数的表达式为:

W=W((ζα2y2)y1,α2,...,αm)

将目标函数展开,得到一个关于α2 的开口向下的二次函数,当不考虑矩形区域约束时可以直接求导,得到最优解α2opt 。然而实际情况中由于矩形约束,α2 通常有取值区间[L,H] ,考虑最优解和取值区间的关系,更新得到实际最优值:

α2={H,    α2opt>Hα2opt, Lα2optHL,    α2opt<H

当得到α2 后,可以依据直线约束更新α1

选择步骤

选择违反KKT条件最多的样本对应的α 作为第一个变量,即对于每个训练样本,检查是否满足KKT条件(可参考SVM第2篇),选择不满足中程度最大者:

          αi=0xiyi(wTx+b)1

0<αi<Cxiyi(wTx+b)=1

                 αi=Cxiyi(wTx+b)1

对于第二个变量,应该选择一个使目标函数数值增长最快的变量,但由于比较各变量所对应的目标函数值增幅的复杂度过高,SMO采用启发式规则,使选取的两变量对应样本之间间隔最大,直观上看,这样选取的两个变量差异较大,相比于对两个相似变量进行更新,差异更大的变量能对目标函数带来更大的变化。

至此我们得到了SMO的完整算法。


四篇过后,SVM基本讲述清楚。参考来源之前的总结博客有记述传送门,同时还参考了国科大《模式识别与机器学习》091M4042H课程兰艳艳老师slides。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章