5.6 SMO-机器学习笔记-斯坦福吴恩达教授
SMO(Sequential minimal optimization)
引子
前面章節(jié)中,我們使用了核函數(shù)的軟間隔支持向量機(jī)的優(yōu)化模型為:
max?a∑i=1ma(i)?12∑i=1m∑j=1ma(i)a(j)y(i)y(j)κ(x(i),x(j))\max_a \sum_{i=1}^m a^{(i)}-\frac12 \sum_{i=1}^m \sum_{j=1}^m a^{(i)} a^{(j)} y^{(i)} y^{(j)} κ(x^{(i)}, x^{(j)})amax?i=1∑m?a(i)?21?i=1∑m?j=1∑m?a(i)a(j)y(i)y(j)κ(x(i),x(j))s.t.∑i=1ma(i)y(i)=0,s.t. \quad\quad \sum_{i=1}^ma^{(i)}y^{(i)}=0,s.t.i=1∑m?a(i)y(i)=0,0≤α(i)≤C,i=1,2,3,...,m(1)0≤α^{(i)}≤C,\quad i=1,2,3,...,m\tag{1}0≤α(i)≤C,i=1,2,3,...,m(1)
式 (1) 需要滿足的 KKT 條件為:
a(i)=0?y(i)f(x(i))≥1,a^{(i)}=0 ? y^{(i)} f(x^{(i)})≥1,a(i)=0?y(i)f(x(i))≥1,0≤α(i)≤C?f(x(i))=10≤α^{(i)}≤C ? f(x^{(i)})=10≤α(i)≤C?f(x(i))=1α(i)=C?y(i)f(x(i))≤1(2)α^{(i)}=C ? y^{(i)} f(x^{(i)})≤1\tag{2}α(i)=C?y(i)f(x(i))≤1(2)
在 SMO(序列最小化)方法出現(xiàn)之前,人們依賴于二次規(guī)劃求解工具來解決上述的優(yōu)化問題,訓(xùn)練 SVM。這些工具需要具有強(qiáng)大計(jì)算能力的計(jì)算機(jī)進(jìn)行支撐,實(shí)現(xiàn)也比較復(fù)雜。1998 年,微軟研究院的 John Platt 提出了 SMO 算法將優(yōu)化問題分解為容易求解的若干小的優(yōu)化問題,來訓(xùn)練 SVM。簡言之,SMO 僅關(guān)注 alphaalphaalpha 對(duì) 和 偏置 bbb 的求解更新,進(jìn)而求解出權(quán)值向量 www ,得到?jīng)Q策邊界(分割超平面),從而大大減少了運(yùn)算復(fù)雜度。
算法介紹
SMO 會(huì)選擇一對(duì) α(i)α^{(i)}α(i) 及 α(j)α^{(j)}α(j) ,并固定住其他參數(shù),即將其他參數(shù)認(rèn)為是常數(shù),則式 (1)中的約束條件就可寫為:
a(i)y(i)+a(j)y(j)=ka^{(i)} y^{(i)} + a^{(j)} y^{(j)}=ka(i)y(i)+a(j)y(j)=k0≤α(i)≤C0≤α^{(i)}≤C0≤α(i)≤C0≤α(j)≤C(3)0≤α^{(j)}≤C\tag30≤α(j)≤C(3)
其中:
k=?∑k≠i,ja(k)y(k)(4)k=-\sum_{k\ne i,j}a^{(k)}y^{(k)}\tag4k=?k?=i,j∑?a(k)y(k)(4)
那么,式 (1) 的優(yōu)化問題可以推導(dǎo):
max?{a(i)a(j)}(a(i)+a(j))?[12Kii(a(i))2+12Kjj(a(j))2+y(i)y(j)Kija(i)a(j)]\max_{\{a^{(i)}a^{(j)}\}}(a^{(i)}+a^{(j)})-[\frac12K_{ii}(a^{(i)})^2+\frac12K_{jj}(a^{(j)})^2+y^{(i)}y^{(j)}K_{ij}a^{(i)}a^{(j)}]{a(i)a(j)}max?(a(i)+a(j))?[21?Kii?(a(i))2+21?Kjj?(a(j))2+y(i)y(j)Kij?a(i)a(j)]?[y(i)a(i)∑k=3my(k)a(k)Kki+y(j)a(j)∑k=3my(k)a(k)Kkj]-[y^{(i)}a^{(i)}\sum_{k=3}^my^{(k)}a^{(k)}K_{ki} + y^{(j)}a^{(j)}\sum_{k=3}^my^{(k)}a^{(k)}K_{kj}]?[y(i)a(i)k=3∑m?y(k)a(k)Kki?+y(j)a(j)k=3∑m?y(k)a(k)Kkj?]s.t.a(i)y(i)+a(j)y(j)=?∑k≠i,ja(k)y(k)=k,s.t. \quad\quad a^{(i)}y^{(i)}+a^{(j)}y^{(j)}=-\sum_{k\ne i,j}a^{(k)}y^{(k)}=k,s.t.a(i)y(i)+a(j)y(j)=?k?=i,j∑?a(k)y(k)=k,0≤α(i)≤C,0≤α(j)≤C(5)0≤α^{(i)}≤C,\quad 0≤α^{(j)}≤C\tag50≤α(i)≤C,0≤α(j)≤C(5)
- 由 0≤α(i)≤C,0≤α(j)≤C0≤α^{(i)}≤C,\quad 0≤α^{(j)}≤C0≤α(i)≤C,0≤α(j)≤C 知,α(i)α^{(i)}α(i) 及 α(i)α^{(i)}α(i) 的取值需要落在正方形中。
- 由 α(i)y(i)+α(j)y(j)=kα^{(i)}y^{(i)} + α^{(j)}y^{(j)} =kα(i)y(i)+α(j)y(j)=k 知,α(i)α^{(i)}α(i) 及 α(j)α^{(j)}α(j) 的取值需要落在正方形中取值還需要落到圖示的斜線段上。
假設(shè)我們放縮了 α(i)α^{(i)}α(i) 的取值:
L≤α(i)≤H(6)L≤α^{(i)}≤H\tag6L≤α(i)≤H(6)
我們可以確定出 α(i)α^{(i)}α(i) 的上下界為:
-
y(i)≠y(j)y^{(i)} \ne y^{(j)}y(i)?=y(j) 時(shí):
L=max?(0,α(j)?α(i)),H=min?(C,C+α(j)?α(i))(7)L=\max(0,\ α^{(j)}-α^{(i)}),\ H=\min(C,\ C+α^{(j)}-α^{(i)})\tag7L=max(0,?α(j)?α(i)),?H=min(C,?C+α(j)?α(i))(7) -
y(i)=y(j)y^{(i)} = y^{(j)}y(i)=y(j) 時(shí):
L=max?(0,α(j)+α(i)?C),H=min?(C,α(j)+α(i))(8)L=\max(0,\ α^{(j)}+α^{(i)}-C),\ H=\min(C,\ α^{(j)}+α^{(i)})\tag8L=max(0,?α(j)+α(i)?C),?H=min(C,?α(j)+α(i))(8)
我們將優(yōu)化函數(shù)定義為:
Ψ=(α(j)+α(i))?[12Kii(a(i))2+12Kjj(a(j))2+y(i)y(j)Kija(i)a(j)](9)Ψ=(α^{(j)}+α^{(i)})?[\frac12K_{ii}(a^{(i)})^2+\frac12K_{jj}(a^{(j)})^2+y^{(i)}y^{(j)}K_{ij}a^{(i)}a^{(j)}]\tag9Ψ=(α(j)+α(i))?[21?Kii?(a(i))2+21?Kjj?(a(j))2+y(i)y(j)Kij?a(i)a(j)](9)
由于 α(i)α^{(i)}α(i) 與 α(j)α^{(j)}α(j) 有線性關(guān)系,所以式 (9) 可以消去 α(i)α^{(i)}α(i) ,進(jìn)而令 ΨΨΨ 對(duì) αjα^jαj 求二階導(dǎo),并令二階導(dǎo)為 0 可得(中間過程省略):
a(jnew)=(2Kij?Kii?Kjj)=a(jold)(2Kij?Kii?Kjj)?y(i)(E(i)?E(j))(10)a^{(jnew)}=(2K_{ij}-K_{ii}-K_{jj})=a^{(jold)}(2K_{ij}-K_{ii}-K_{jj})-y^{(i)}(E^{(i)}-E^{(j)})\tag{10}a(jnew)=(2Kij??Kii??Kjj?)=a(jold)(2Kij??Kii??Kjj?)?y(i)(E(i)?E(j))(10)
其中:
E(i)=f(x(i))?y(i)(11)E^{(i)}=f(x^{(i)})?y^{(i)}\tag{11}E(i)=f(x(i))?y(i)(11)
令:
η=2Kij?Kii?Kjj(12)η=2K_{ij}-K_{ii}-K_{jj}\tag{12}η=2Kij??Kii??Kjj?(12)
式 (10) 兩邊除以 ηηη 就得 α(j)α^{(j)}α(j) 的更新式:
a(jnew)=a(jold)?y(i)(E(i)?E(j))η(13)a^{(jnew)}=a^{(jold)}-\frac{y^{(i)}(E^{(i)}-E^{(j)})}{η}\tag{13}a(jnew)=a(jold)?ηy(i)(E(i)?E(j))?(13)
但是,更新還要考慮上下界截?cái)?#xff1a;
a(jnewclipped)={H,ifa(jnew)≥Ha(jnew),ifL<a(jnew)<HL,ifa(jnew)≤L(14)a^{(jnewclipped)}=\begin{cases}H,\quad\quad\quad if\ a^{(jnew)}≥H\\ a^{(jnew)},\quad\quad\quad if\ L<a^{(jnew)}<H\\ L,\quad\quad\quad if\ a^{(jnew)}≤L \end{cases}\tag{14}a(jnewclipped)=??????H,if?a(jnew)≥Ha(jnew),if?L<a(jnew)<HL,if?a(jnew)≤L?(14)
從而得到 α(i)α^{(i)}α(i) 的更新:
a(inew)=a(iold)+y(i)y(j)(a(jold)?a(jnewclipped))(15)a^{(inew)}=a^{(iold)}+y^{(i)}y^{(j)}(a^{(jold)}-a^{(jnewclipped)})\tag{15}a(inew)=a(iold)+y(i)y(j)(a(jold)?a(jnewclipped))(15)
令:
b1=bold?E(i)?y(i)Kii(a(inew)?a(iold))?y(j)Kij(a(jnewclipped)?a(jold))b_1=b^{old}-E^{(i)}-y^{(i)}K_{ii}(a^{(inew)}-a^{(iold)})-y^{(j)}K_{ij}(a^{(jnewclipped)}-a^{(jold)})b1?=bold?E(i)?y(i)Kii?(a(inew)?a(iold))?y(j)Kij?(a(jnewclipped)?a(jold))b2=bold?E(j)?y(i)Kij(a(inew)?a(iold))?y(j)Kjj(a(jnewclipped)?a(jold))(16)b_2=b^{old}-E^{(j)}-y^{(i)}K_{ij}(a^{(inew)}-a^{(iold)})-y^{(j)}K_{jj}(a^{(jnewclipped)}-a^{(jold)})\tag{16}b2?=bold?E(j)?y(i)Kij?(a(inew)?a(iold))?y(j)Kjj?(a(jnewclipped)?a(jold))(16)
則 bbb 的更新為:
b(new)={b1,if0<a(inew)<Cb2,if0<a(jnewclipped)<Cb1+b22,otherwise(14)b^{(new)}=\begin{cases}b_1,\quad\quad\quad if\ 0<a^{(inew)}<C\\ b_{2},\quad\quad\quad if\ 0<a^{(jnewclipped)}<C\\ \frac{b_1+b_2}{2},\quad\quad\quad otherwise \end{cases}\tag{14}b(new)=??????b1?,if?0<a(inew)<Cb2?,if?0<a(jnewclipped)<C2b1?+b2??,otherwise?(14)
啟發(fā)式選擇
根據(jù) Osuna 提出的理論,如果兩個(gè)拉格朗日乘子其中之一違背了 KKT 條件,此時(shí),每一次乘子對(duì)的選擇,都能使得優(yōu)化目標(biāo)函數(shù)減小。
- 若 α(i)=0α^{(i)}=0α(i)=0 ,可知樣本 x(i)x^{(i)}x(i) 不會(huì)對(duì)模型 f(x)f(x)f(x) 產(chǎn)生影響。
- 若 α(i)=Cα^{(i)}=Cα(i)=C ,樣本 x(i)x^{(i)}x(i) 不會(huì)是支持向量。
- 若 0<α(i)<C0<α^{(i)}<C0<α(i)<C ,則 α(i)α^{(i)}α(i) 沒有落在邊界上,當(dāng)下式滿足時(shí), α(i)α^{(i)}α(i) 會(huì)違反 KKT 條件:
α(i)<Candy(i)f(x(i))?1<0α^{(i)}<C\quad and\quad y^{(i)}f(x^{(i)})-1<0α(i)<Candy(i)f(x(i))?1<0α(i)>0andy(i)f(x(i))?1>0(18)α^{(i)}>0\quad and\quad y^{(i)}f(x^{(i)})-1>0\tag{18}α(i)>0andy(i)f(x(i))?1>0(18)
通常,式 (18) 過于嚴(yán)苛,因此考慮設(shè)置一個(gè)容忍區(qū)間 [?τ,τ][?τ,τ][?τ,τ] ,并考慮令:
R(i)=y(i)E(i)=y(i)(f(x(i))?y(i))=y(i)f(x(i))?1(19)R^{(i)}=y^{(i)}E^{(i)}=y^{(i)}(f(x^{(i)})-y^{(i)})=y^{(i)}f(x^{(i)})-1\tag{19}R(i)=y(i)E(i)=y(i)(f(x(i))?y(i))=y(i)f(x(i))?1(19)
可以將違反 KKT 條件的表達(dá)式寫為:
α(i)<CandR(i)<?τα^{(i)}<C\quad and\quad R^{(i)}<?τα(i)<CandR(i)<?τα(i)>0andR(i)>τ(20)α^{(i)}>0\quad and\quad R^{(i)}>τ\tag{20}α(i)>0andR(i)>τ(20)
SMO 以編程的眼光,將啟發(fā)式選擇 (α(i),α(j))(α^{(i)},α^{(j)})(α(i),α(j)) 描述為了兩層循環(huán):
- 外層循環(huán):外層循環(huán)中,如果當(dāng)前沒有 alphaalphaalpha 對(duì) 的變化,意味著所有 alpha(i)alpha^{(i)}alpha(i) 都遵從了 KKT 條件,需要在整個(gè)樣本集進(jìn)行迭代;否則,只需要選擇在處在邊界內(nèi)(即 0<α(i)<C0<α^{(i)}<C0<α(i)<C )、并且違反了 KKT 條件(即滿足了式 (20) )的 α(i)α^{(i)}α(i) 。
- 內(nèi)層循環(huán):選出使得 ∣E(i)?E(j)∣|E^{(i)}?E^{(j)}|∣E(i)?E(j)∣ 達(dá)到最大的 alpha(j)alpha^{(j)}alpha(j) 。
算法流程
綜上,我們可以概括出 SMO 的算法流程:
參考資料
- Platt, John (1998), Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines
- Wiki-SMO
- 支持向量機(jī)通俗導(dǎo)論(理解 SVM 的三層境界)
- 《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》
- 《機(jī)器學(xué)習(xí)》
- Sequential Minimal Optimization for SVM
總結(jié)
以上是生活随笔為你收集整理的5.6 SMO-机器学习笔记-斯坦福吴恩达教授的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.5 SVM补充-机器学习笔记-斯坦福
- 下一篇: 5.7 程序示例--基于 SMO 的 S