日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5.6 SMO-机器学习笔记-斯坦福吴恩达教授

發布時間:2025/4/5 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.6 SMO-机器学习笔记-斯坦福吴恩达教授 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SMO(Sequential minimal optimization)

引子

前面章節中,我們使用了核函數的軟間隔支持向量機的優化模型為:
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=1m?a(i)?21?i=1m?j=1m?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=1m?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(序列最小化)方法出現之前,人們依賴于二次規劃求解工具來解決上述的優化問題,訓練 SVM。這些工具需要具有強大計算能力的計算機進行支撐,實現也比較復雜。1998 年,微軟研究院的 John Platt 提出了 SMO 算法將優化問題分解為容易求解的若干小的優化問題,來訓練 SVM。簡言之,SMO 僅關注 alphaalphaalpha 偏置 bbb 的求解更新,進而求解出權值向量 www ,得到決策邊界(分割超平面),從而大大減少了運算復雜度。

算法介紹

SMO 會選擇一對 α(i)α^{(i)}α(i)α(j)α^{(j)}α(j) ,并固定住其他參數,即將其他參數認為是常數,則式 (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) 的優化問題可以推導:
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=3m?y(k)a(k)Kki?+y(j)a(j)k=3m?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) 的取值需要落在正方形中取值還需要落到圖示的斜線段上。

假設我們放縮了 α(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) 時:
    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) 時:
    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)

我們將優化函數定義為:
Ψ=(α(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) 有線性關系,所以式 (9) 可以消去 α(i)α^{(i)}α(i) ,進而令 ΨΨΨαjα^jαj 求二階導,并令二階導為 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)

但是,更新還要考慮上下界截斷:
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)

啟發式選擇

根據 Osuna 提出的理論,如果兩個拉格朗日乘子其中之一違背了 KKT 條件,此時,每一次乘子對的選擇,都能使得優化目標函數減小。

  • α(i)=0α^{(i)}=0α(i)=0 ,可知樣本 x(i)x^{(i)}x(i) 不會對模型 f(x)f(x)f(x) 產生影響。
  • α(i)=Cα^{(i)}=Cα(i)=C ,樣本 x(i)x^{(i)}x(i) 不會是支持向量。
  • 0<α(i)<C0<α^{(i)}<C0<α(i)<C ,則 α(i)α^{(i)}α(i) 沒有落在邊界上,當下式滿足時, α(i)α^{(i)}α(i) 會違反 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) 過于嚴苛,因此考慮設置一個容忍區間 [?τ,τ][?τ,τ][?τ,τ] ,并考慮令:
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 條件的表達式寫為:
α(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 以編程的眼光,將啟發式選擇 (α(i),α(j))(α^{(i)},α^{(j)})(α(i),α(j)) 描述為了兩層循環:

  • 外層循環:外層循環中,如果當前沒有 alphaalphaalpha 對 的變化,意味著所有 alpha(i)alpha^{(i)}alpha(i) 都遵從了 KKT 條件,需要在整個樣本集進行迭代;否則,只需要選擇在處在邊界內(即 0<α(i)<C0<α^{(i)}<C0<α(i)<C )、并且違反了 KKT 條件(即滿足了式 (20) )的 α(i)α^{(i)}α(i)
  • 內層循環:選出使得 ∣E(i)?E(j)∣|E^{(i)}?E^{(j)}|E(i)?E(j) 達到最大的 alpha(j)alpha^{(j)}alpha(j)

算法流程

綜上,我們可以概括出 SMO 的算法流程:

  • 在整個訓練集或者非邊界樣本中選擇違反了 KKT 條件的 α(i)α^{(i)}α(i) 。
  • 在剩下的 ααα 中,選擇 ∣E(i)?E(j)∣|E^{(i)}?E^{(j)}|E(i)?E(j) 達到最大的 alpha(j)alpha^{(j)}alpha(j)
  • 重復以上過程直到達到收斂精度或最大迭代次數。
  • 參考資料

    • Platt, John (1998), Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines
    • Wiki-SMO
    • 支持向量機通俗導論(理解 SVM 的三層境界)
    • 《機器學習實戰》
    • 《機器學習》
    • Sequential Minimal Optimization for SVM

    總結

    以上是生活随笔為你收集整理的5.6 SMO-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。