一、從Multinomial Logistic模型說起
1、Multinomial Logistic
令為
維輸入向量;
為輸出label;(一共k類);
為模型參數向量;
Multinomial Logistic模型是指下面這種形式:
其中:
例如:時,輸出label為0和1,有:
2、Maximum Likelihood Estimate and Maximum a Posteriori Estimate
(1)、Maximum Likelihood Estimate
假設有數據集,為了訓練一個模型通常使用極大似然法來確定模型參數:
(2)、Maximum a Posteriori Estimate
假設模型參數的分布服從
,那么在給定數據集上我們想要找到的最佳參數滿足以下關系:
利用上面的式子可以定義求解該問題的損失函數:
個人認為,從統計學習的角度來說,上面式子第一部分描述了偏差(經驗風險),而第二部分描述了方差(置信風險)。
3、L1-regularized model and L2-regularized model
對模型參數的分布
,可以有下面的假設:
(1)、Gaussian Prior
(2)、Laplace Prior
當時,叫做L2-regularized:
當時,叫做L1-regularized:
在這里常數是一個用來調節偏差與方差的調節因子:
●很小時,強調likelihood,此時會造成Overfit;
●很大時,強調regularization,此時會造成Underfit。
在相同的條件下,Gaussian Prior和Laplace Prior的比較如下:
圖1 - 紅色為Laplace Prior,黑色為Gaussian Prior
4、L1-regularized model ?or L2-regularized model?
目前主流的方法都選擇用L1-regularized,包括各種L-BFGS(如:OWL-QN)和各種SGD方法,主要原因如下:
●我們要優化的目標是:
從圖1可以看出,要想讓取得最大值,權重向量需要靠近其mean值(也就是0),顯然服從Laplace Prior的權重向量下降速度要快於服從Gaussian Prior的;
●以時的梯度下降算法為例,權重
的更新方式如下:
○ Gaussian Prior:
○ Laplace Prior:
當時,
;
當時,
。
當與
同號時表明沒有誤分,權重的絕對值會以一個比較小的速度更新,而當
與
異號時誤分發生,權重的絕對值會以一個比較大的速度更新。
●將權重更新看成兩個階段:likelihood + regularization,暫時不考慮likelihood,那么k次迭代后有下面關系:
○ Gaussian Prior:
○ Laplace Prior:
當時,
;
當時,
。
當,雖然前者的極限值為0,但是不會精確為0,而后者每次更新一個常數,這就意味着理論上后者可能會精確的將權重更新為0。
●L1-regularized能夠獲得稀疏的feature,因此模型訓練過程同時在進行feature selection。
●如果輸入向量是稀疏的,那么Laplace Prior能保證其梯度也是稀疏的。
二、L1-Stochastic Gradient Descent
1、Naive Stochastic Gradient Descent
隨機梯度下降算法的原理是用隨機選取的Training Set的子集來估計目標函數的梯度值,極端情況是選取的子集只包含一條Sample,下面就以這種情況為例,其權重更新方式為:
這種更新方式的缺點如下:
●每次迭代更新都需要對每個feature進行L1懲罰,包括那些value為0的沒有用到的feature;
●實際當中在迭代時能正好把權重值更新為0的概率很小,這就意味着很多feature依然會非0。
2、Lazy Stochastic Gradient Descent
針對以上問題,Carpenter在其論文《Lazy Sparse Stochastic Gradient Descent for Regularized Mutlinomial Logistic Regression》(2008)一文中進行了有效的改進,權重更新采用以下方式:
這種更新方式的優點如下:
●通過這樣的截斷處理,使得懲罰項不會改變函數值符號方向,同時也使得0權重能夠自然而然地出現;
●算法中使用lazy fashion,對那些value為0的feature不予更新,從而加快了訓練速度。
這種方式的缺點:
●由於采用比較粗放的方式估計真實梯度,會出現權重更新的波動問題,如下圖:
3、Stochastic Gradient Descent with Cumulative Penalty
這個方法來源於Yoshimasa Tsuruoka、Jun’ichi Tsujii和 Sophia Ananiadou的《Stochastic Gradient Descent Training for L1-regularized Log-linear Models with
Cumulative Penalty》(2009)一文,其權重更新方法如下:
其中:
,表示每個權重在第k次迭代時,理論上能夠得到的累積懲罰值;
,表示當前權重已經得到的累加懲罰值。
算法描述如下:
關於學習率的確定,傳統的方法是:
, 其中k為第k次迭代
這種方法在實際當中的收斂速度不太理想,這篇論文提出以下方法:
, 其中k為第k次迭代
在實際當中表現更好,但要注意在理論上它不能保證最終的收斂性,不過實際當中都有最大迭代次數的限制,因此這不是什么大問題。
與Galen Andrew and Jianfeng Gao的《 Scalable training of L1-regularized log-linear models》(2007)提出的OWL-QN方法相比較如下:
4、Online Stochastic Gradient Descent
由於L1-regularized權重迭代更新項為常數,與權重無關,因此以N為單位批量更新Sample一次的效果和每次更新一個Sample一共更新N次的效果是一樣一樣的,因此采用這種方法只用在內存中存儲一個Sample和模型相關參數即可。
5、Parallelized Stochastic Gradient Descent
Martin A. Zinkevich、Markus Weimer、Alex Smola and Lihong Li.在《Parallelized Stochastic Gradient Descent》一文中描述了簡單而又直觀的並行化方法:
以及
下一步考慮把這個算法在Spark上實現試試,還得用時實踐來檢驗的。
三、參考資料
1、Galen Andrew and Jianfeng Gao. 2007. 《Scalable training of L1-regularized log-linear models》. In Proceedings of ICML, pages 33–40.
2、Bob Carpenter. 2008.《 Lazy sparse stochastic gradient descent for regularized multinomial logistic regression》.Technical report, Alias-i.
3、Martin A. Zinkevich、Markus Weimer、Alex Smola and Lihong Li. 《Parallelized Stochastic Gradient Descent》.Yahoo! Labs
4、John Langford, Lihong Li, and Tong Zhang. 2009. 《Sparse online learning via truncated gradient》. The Journal of Machine Learning Research (JMLR), 10:777–801.
5、Charles Elkan.2012.《Maximum Likelihood, Logistic Regression,and Stochastic Gradient Training》.
四、相關開源軟件
1、wapiti:http://wapiti.limsi.fr/
2、sgd2.0:http://mloss.org/revision/view/842/
3、 scikit-learn:http://scikit-learn.org/stable/
4、 Vowpal Wabbit:http://hunch.net/~vw/
5、deeplearning:http://deeplearning.net/
6、LingPipe:http://alias-i.com/lingpipe/index.html