svm隨機次梯度下降算法-pegasos

基本思想

使用隨機梯度下降直接解SVM的原始問題。

摘要

本文研究和分析了基於隨機梯度下降的SVM優化算法,簡單且高效。(Ο是漸進上界,Ω是漸進下界)本文證明爲獲得一定準確率精度ϵ 所需的迭代次數滿足O(1ϵ) ,且每一次迭代都只使用一個訓練樣本。相比之下,以前分析的SVM隨機梯度下降次數滿足Ω(1ϵ2) 。以前設計的SVM中,迭代次數也與1λ 線性相關 。對於線性核,pegasos算法的總運行時間是O(dϵλ) ,其中d是每一個樣本中非零特徵在邊界上的個數。因此,運行時間和訓練集的大小不是直接相關的,那麼本算法尤其適合大規模的數據集。本文算法也可以拓展到非線性核上,但只能基於原始的目標函數,此時的運行時間和數據集大小線性相關O(mϵλ) 。本文算法尤其適用於大規模文本分類問題,比之前的SVM加速了幾個數量級。

引言

SVM是一種高效流行的分類器、SVM是一種典型的受限二次規劃問題。然而,基於基本形式,SVM實際上是一個附帶懲罰因子的無限制經驗損失最小化問題。
定義目標函數爲

f(ω)=minwλ2||ω||2+1ml(ω,(x,y))

其中:
l(ω,(x,y))=max{0,1y<ω,x>}

使用隨機梯度下降解目標函數的算法稱作pegasos。在每一次的迭代中,隨機挑選一個訓練樣本計算目標函數的梯度,然後在在相反的方向走一個預訂好的步長。根據上述算法,整體算法的運行時間滿足O(nλϵ) ,其中n是w和x的維度。算法可以進一步優化爲O(dϵλ) ,其中d是每一個樣本中非零特徵在邊界上的個數。pegasos只與算法的隨機步驟有關,和數據集無關。

  1. Interior Point (IP) methods:可以使用擬牛頓法對目標函數進行優化,但算法因爲使用瞭如海森矩陣等便需m2 的空間複雜度, 其中m是樣本數。
  2. Decomposition methods: 使用類似SMO的算法解SVM的對偶優化問題,但是這會導致相對比較慢的收斂速率。
  3. Primal optimization:SVM大部分的求解方法都在解決對偶問題,尤其是在非線性核問題上。因爲,即使SVM使用了非線性核,我們也可以將ω 替換爲 αiyixi ,從而將解決原目標函數的受約束優化問題轉化爲沒有約束條件的優化問題。其實,直接解決原問題也有人研究過,比如使用smooth loss functions代替 hinge loss,這樣將問題變成一個平滑的不受限制的優化問題,然後使用梯度下降和牛頓法來求解。本文采取了類似方法,針對hinge loss的不可微性,直接使用sub-gradients(子梯度)代替梯度。
  4. 儘管隨機梯度下降算法是最差的優化算法,但是可以產生最好的泛化性能。
  5. 有一種基於隨機子梯度下降的算法和pegasos比較類似,但是其非常重要的一部分是學習步長的設置,收斂速率最壞的上界是Ω(1(λϵ)2) 。歐幾里得距離的平方可以被優化到0,但是收斂速率決定於步長參數的設置。pegasos調參簡單。
  6. online methods:在線學習算法一般與隨機梯度下降算法結合,如每一次迭代只使用一個樣本。在線學習算法被提出爲SVM的快速替代方案。在線算法可以使用在線到批量轉換方案來獲得具有低泛化誤差的預測器,但是這種方法不一定能夠解決原問題的ϵ 精度要求,並且它們的性能通常低於直接批量優化器。如上所述,Pegasos共享了在線學習算法的簡單性和速度,但它保證融合到最優的SVM解決方案。

pegasos 算法

基於上述提到的方法,pegasos在原始目標函數上通過精緻挑選的步長使用隨機梯度下降求解。將在本部分詳細描述pegasos的過程並提供僞代碼。同時也闡述基本算法的一系列變種,並討論幾個實際問題。

基本算法

隨機選取一個訓練樣本it 其中i代表選取的樣本,t代表迭代的次數,帶入

f(ω)=minwλ2||ω||2+1ml(ω,(x,y))

得到近似的目標函數:
f(ω,it)=λ2||ω||2+l(ω,(xit,yit))

計算次梯度得:
t=λωtI[yit{ωt,xit}<1]yitxit

其中,I[yit{ωt,xit}<1] 是指示函數,如果是真則值爲1,反之爲0 。

僞代碼如下:

這裏寫圖片描述
輸入數據集S,正則化因子λ ,迭代次數T,則每一次迭代式爲:

ωt+1<=ωtηtt

ηt=1λt 是變動步長,和學習率λ 成反比,隨着迭代次數t的增加而減少。聯合t=λωtI[yit{ωt,xit}<1]yitxit 展開迭代式得:

ωt+1<=ωtηt[λωtI[yit{ωt,xit}<1]yitxit]

進一步推倒得:
ωt+1<=(11t)ωt+ηtI[yit{ωt,xit}<1]yitxit]

如果指示函數爲真,則:
ωt+1<=(11t)ωt+ηtyitxit

如果爲假,則
ωt+1<=(11t)ωt

迭代T後,輸出ωt+1

類似的mini-batch pegasos算法僞代碼如下:
這裏寫圖片描述

稀疏特徵

當訓練集樣本是稀疏的時候,可以把ω 表示成向量v 和標量a相乘。ω=av 。那麼容易證明每一次迭代的計算運行次數O(d),d是非零元素的個數。

核函數解決非線性分類問題

SVM的主要優勢是可以使用核方法直接在特徵空間分類。可以如此做關鍵是表示定理( Representer Theorem ),根據表示定理可以通過訓練數據的線性組合求得原目標函數的最優解。即在訓練SVM的時候可以不直接使用訓練數據,通過指定核操作的訓練數據的內積結果訓練。也就是說,不考慮訓練樣本x本身的線性函數的預測變量,我們考慮訓練樣本的隱式映射φ(x)後的線性函數的預測變量。
推導過程如下:
如求解線性不可分的f(ω) ,將x映射到特徵空間:

f(ω)=minwλ2||ω||2+1m(x,y)Sl(ω;(ϕ(x),y))

其中:
l(ω;(ϕ(x),y))=max{0,1y<ω,ϕ(x)>}

爲使用核函數將內積<ω,ϕ(x)> 映射到特徵空間的內積,將ω 用x來表示,通過對原目標函數求次梯度可以得到:
ωt+1=(11t)ωt+ηtI[yit{ωt,ϕ(xit)}<1]yitϕ(xit)

設:
vt=I[yit{ωt,ϕ(xit)}<1]yitϕ(xit)

則迭代式重寫爲:
ωt+1=(11t)ωt+ηtvt

根據迭代式的遞推可得:
ωt+1=(t1t)ωt+ηtvt

ωt+1=1λti=1tvt

ωt+1=1λti=1tI[yit{ωt,ϕ(xit)}<1]yitϕ(xit)

αt+1[j] 爲第t+1次,樣本j被選中且損失不爲0的次數(指示函數爲1)。
則:
ωt+1=1λtj=1mαt+1[j]yitϕ(xit)

帶回到l(ω) ,通過T次隨機次梯度下降僞代碼如下:

這裏寫圖片描述
根據輸出αT+1 得到ω
映射φ(·)並不明確指定,而是訓練樣本通過映射φ(·)之後通過覈計算K(x,x’)=φ(x),φ(x’)得到內積結果。本文中,無需將目標函數轉換爲對偶函數,直接最小化原始問題,同時仍然使用核方法。Pegasos算法可以僅使用內核來實現求解,而不需要直接訪問特徵向量ϕx 或顯式訪問權重向量ω
因爲需要遍歷m個樣本,故時間複雜度爲O(mϵλ)

結合偏置項b

當正負樣本比例不均衡的時候,偏置項比較重要。
在算法的外部加一層找尋b的外循環,即對於不同的b值,均使用pegasos求解出各自的ω 。優化問題是minωλ2||w||2+J(b;S) 目標函數如下:

J(b;S)=minω1ml((ω,b);(x,y))

J(b;S)=minω1m(x,y)S[1y(<ω,x>+b)]+

因爲b是固定值,在內層循環求解時,仍然可以使用pegasos算法,且這種方法的時間複雜度仍然保持在O(dϵλ)

實驗比對

pegasos算法與SDCA,SVM_LIGHT,LASVM比較

線性核

這裏寫圖片描述
第一行是原目標函數的收斂曲線,第二行是分類誤差率。橫座標是運行時間。

高斯核(非線性核)

這裏寫圖片描述
第一行是原目標函數的收斂曲線,第二行是log歸約後的目標函數收斂曲線,第三行是分類誤差率。橫座標是運行時間。

python實現:
https://github.com/changtingwai/pegasos

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