SMO算法详细推导(Sequential Minimal Optimization)

本文针对一般性的“软判断的核函数的对偶问题的SVM”,形如下式:

上式问题所在:当采样点 xix_i 选取50000个点时,则基于核函数变量Θ(xi,xj)\bm{\Theta(x_i,x_j)}将需要大约10GB的RAM来存储Θ(xi,xj)\bm{\Theta(x_i,x_j)}。这里介绍前人所提的SMO算法,以降低存储空间。

一. 算法流程框架

首先,先给出SMO算法的算法流程,如下:
在这里插入图片描述
意思是:第一步,选取一对αi\alpha_iαj\alpha_j,选取方法使用启发式方法。第二步,固定除αi\alpha_iαj\alpha_j之外的其他参数,确定目标函数(即:W(α)W(\alpha)。图片中用W(α)W(\alpha)表示整个目标函数)取得最大值时的αi\alpha_i^*的取值,并由αi\alpha_i^*计算出αj\alpha_j^*。重复迭代上述两步,直到收敛。

SMO之所以高效就是因为在固定其他参数后,对一个参数优化过程很高效。

二. 符号定义与基础回顾

(1)先定义下述三个符号,以便后文表述:

(2)若为线性核函数分类,由基本二分类SVM可知,最后的分类是根据wTxi+bw^{*T}x_i+b^*来判断的:若wTxi+b>0w^{*T}x_i+b^*>0则判断yiy_i属于某一类,若wTxi+b<0w^{*T}x_i+b^*<0则判断yiy_i属于另一类。如果是非线性核函数分类,则是wTϕ(xi)+bw^{*T}\phi(x_i)+b^*与0的大小比较(但是,在实际核函数模型中,我们没有ϕ(xi)\phi(\bm x_i)的表达式,往往都是直接给出Θ(xi,xj)\bm{\Theta(x_i,x_j)}(而:Θ(xi,xj)\bm{\Theta(x_i,x_j)}=ϕ(xi)Tϕ(xj)\phi(\bm x_i)^T\phi(\bm x_j))。因此,wTxi+bw^{*T}x_i+b^*仅用于线性核函数中,而在非线性核函数里,并不用ww^{*}来判断分类的结果。虽然不用,但为了完整性,这里还是给出核函数下的ww^{*}),w\bm w^*的具体表达式为:

w=iαiyiϕ(xi) \begin{aligned} \bm{w^*}=\sum_{i}^{}\alpha_i^*y_i\phi(\bm x_i) \end{aligned}

而对标量bb^*的计算,书上式子(2.75)写道:

(3)符号EiE_i定义如下:

Ei=f(xi)yi=(j=1nyjαjKij+b)yi=(j=1nyjαjϕ(xj)Tϕ(xi)+b)yi=(wTϕ(xi)+b)yi \begin{aligned} E_i &=f(\bm x_i)-y_i\\&=(\sum_{j=1}^{n}y_j\alpha_jK_{ij}+b)-y_i \\&=(\sum_{j=1}^{n}y_j\alpha_j\phi(x_j)^T\phi(x_i)+b)-y_i \\&=(w^{*T}\phi(x_i)+b)-y_i \end{aligned}

显然,EiE_i是函数f(x)f(x)对输入xix_i的预测值与真实输出值yiy_i之差。(备注:1998年原始参考文献中,预测值f(xi)f(x_i)uiu_i表示的,即Ei=uiyiE_i=u_i-y_i

三. 整理目标函数

四. α2new\alpha_2^{new}的推导(不考虑范围约束时)

由于下述约束条件成立:

因此,有

其中,CC'是常数。根据式子(2.142),可知:
α1=γsα2 \begin{aligned} \alpha_1 = \gamma -s\alpha_2 \end{aligned}

其中γ=Cy1\gamma=C'y_1s=y1y2s=y_1y_2 (因为y1y_1只能取+1或-1,因此,除以y1y_1等价于乘以y1y_1)。带入消除α1\alpha_1后,我们可将式子(2.141)重新整理为下式:

将上式对α2\alpha_2求导,并令其为0,得到下式:

解出上式中的α2\alpha_2为:

上式(2.145)中,α2\alpha_2有个上角标,是表示此为更新后的α2\alpha_2,或者说是最优的α2\alpha_2,用α2new\alpha_2^{new}表示。

上式经过下面照片中的推导可以化简,详细推导过程见照片(可省略不看):

推导结果为:(此结果也是1998年中论文的结果)

五. α2new,revised\alpha_2^{new,revised}的推导

显然,上述分析没有考虑式子(2.97)的约束条件,换句话说,α2new\alpha_2^{new}很可能不在指定区域[0,C][0,C]内,而由于此时已经转化为一元函数求极值问题,所有,如果极点不在区域内,那么最值一定取在边界点,所有,最优的α2\alpha_2的取值不再是α2new\alpha_2^{new},应该换符号表示,文中采用α2new,revised\alpha_2^{new,revised}表示考虑式子(2.97)中约束的新更新变量。故为了分析式子(2.97)的约束条件,有下述两个公式:

(1)当y1y_1y2y_2同号时

(2)当y1y_1y2y_2异号时

解释一下上述公式:
首先将式子(2.142)两侧同时乘以y1y_1,由于y1y_1只能取正负1,故,分类讨论:
(1)解释:当y1y_1y2y_2同号,所以有:
α1+α2=γ \begin{aligned} \alpha_1+\alpha_2=\gamma \end{aligned}

由于α1\alpha_1α2\alpha_2只能取[0,C]之间的box内,所以,此时有两种情况,如图:

(2)解释:当y1y_1y2y_2异号时,有:

综合上述两种情况,我们有:

此时得到的α2new,revised\alpha_2^{new,revised}是完全符合题意的最优的α2\alpha_2值!下面回带如公式,反求最优的α1\alpha_1

六. α1new\alpha_1^{new}的推导

由于式子 (2.142)成立(且,算法流程中已提及,叠代α1\alpha_1α2\alpha_2时,需要固定其余参数,即α3\alpha_3αn\alpha_n是固定不变的,只叠代α1\alpha_1α2\alpha_2),因此,迭代前后的α1\alpha_1α2\alpha_2都满足下式:

y1α1old+y2α2old=C \begin{aligned} y_1\alpha_1^{old}+y_2\alpha_2^{old}=C' \end{aligned}

y1α1new+y2α2new=C \begin{aligned} y_1\alpha_1^{new}+y_2\alpha_2^{new}=C' \end{aligned}

所以有:

y1α1old+y2α2old=y1α1new+y2α2new \begin{aligned} y_1\alpha_1^{old}+y_2\alpha_2^{old}=y_1\alpha_1^{new}+y_2\alpha_2^{new} \end{aligned}

上述左右同时乘以 y1,可解出α1new\alpha_1^{new}如下:

七. KKT条件

下式KKT条件中的f(xi)f(x_i),代表在当前ww这个分类准则下,输入为xix_i时,输出的分类预测结果。

(但我不太清楚这个是怎么推出来的,求解释)这个KKT条件说明,在两条间隔线外面的点,对应前面的系数αi\alpha_i为0(即距离线很远且不起作用的点),在两条间隔线里面的对应αi\alpha_i为C,在两条间隔线上的对应的系数αi\alpha_i在0和C之间。

八. bb的推导

(1)先说结论:

(2)再说结论的证明过程:

之所以要更新EiE_i,是因为这个变量有两个作用,一是用以作为第二个乘子的选取因子;二是用以作为判断算法终止的条件!

九. SMO应用流程

下面是SMO算法详细流程,该流程比本文第一节中的要详细,可用于实际应用中:

其中,用启发式算法选取点的原则为:

十. 其余说明:

(1)论文中说,如果采用的是线性核函数,那么久按照如下方式更新wnew\bm w^{new}

wnew=w+y1(α1newα1)x1+y2(α2new,revisedα2)x2 \begin{aligned} \bm w^{new}=\bm w+y_1(\alpha_1^{new}-\alpha_1)\bm x_1+y_2(\alpha_2^{new,revised}-\alpha_2)\bm x_2 \end{aligned}

上式的结论依据以下两个公式便可得到:

看完这句话以后我误会了好久,仔细看公式才发现,之所以文中说“线性核函数”才更新wnew\bm w^{new},是因为这里的更新公式中没有ϕ(.)\phi(.),换言之,并不是w\bm w只能用于线性,而是这里的公式没有加核,所以,这个公式里的w\bm w只能用于线性。若改为下式,则任何满足题意的核,都可以用此式来分类:

wnew=w+y1(α1newα1)ϕ(x1)+y2(α2new,revisedα2)ϕ(x2) \begin{aligned} \bm w^{new}=\bm w+y_1(\alpha_1^{new}-\alpha_1)\bm \phi(x_1)+y_2(\alpha_2^{new,revised}-\alpha_2)\bm \phi(x_2) \end{aligned}

(按照更新α1\alpha_1α2\alpha_2的方式,来更新所有需要更新的αi\alpha_i,全部训练并更新完后,便可将该模型用于分类,最终的wnew\bm w^{new}可按照上述更新两个参数的方式来推导,但是正如前文所述说,实际中直接给出的是Θ(xi,xj)\bm{\Theta(x_i,x_j)}的矩阵取值(Θ(xi,xj)\bm{\Theta(x_i,x_j)}=ϕ(xi)Tϕ(xj)\phi(\bm x_i)^T\phi(\bm x_j)),并非ϕ(xi)\phi(\bm x_i)。因此,非线性核函数下的wnew\bm w^{new}没有实际用处,仅用于求解bnewb^{new}

(2)另外一个待更新资料:

下文中,迭代的终止条件是两次叠代的αold\alpha_{old}αnew\alpha_{new}所对应的fioldf_i^{old}finewf_i^{new}之间的数值小于某个数时,则终止叠代。毕竟选取的α1\alpha_1都是那些不满足KKT条件的,当都满足以后,自然每次叠代α\alpha后,其ff改进就会很小了。

算法中,各个所需的阿尔法求解完毕后(即样本训练结束以后),最终应用时分类的原则为:

参考资料:
[1] 《Sequential Minimal Optimization:
A Fast Algorithm for Training Support Vector Machines》 作者:John C. Platt 时间:1998 (SMO原文)
[2] 《Selected Applications of Convex Optimization》作者:Li Li
[3] 学习网址1
[4] 学习网址2
[5] SMO算法的matiab代码下载网址1
[6] SMO算法的matiab代码下载网址2

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