機器學習內功總綱

機器學習內功總綱

我覺得機器學習的萬法之宗就是奧康姆剃刀: 擬合效果類似,模型越簡單預測能力越強
。從不同的對“簡單”的定義出發,就產生了不同的流派。比如:

1. 特徵維度越低就越簡單(參考維度詛咒)。從這一點出發產生了各種降維算法,像PCA
, LDA(有兩個完全不同的LDA,但本質上都是降維)等。多層神經網絡也可以看成一種
降維算法。Hinton在Science上那片autoencoder的文章標題就是”降維”,降維的重要性
可見一斑。將降維推廣其實就是數據壓縮。甚至有一種觀點認爲數據壓縮做到了極致就
是人工智能。

2. 特徵的非零維度越少就越簡單。所謂的Sparse Coding是機器視覺和相關方向非常重
要的研究課題。在2012年neural network異軍突起以前,幾乎所有的圖像識別算法都要
用到某種Sparse Coding。大家知道如果D維空間內的點用包含D個向量的基標出就是一
個D維向量,這D個維幾乎不可能爲0。實現sparse coding的方法就是兩路:1. 允許有誤
差。2.增加基的個數。最土的sparse coding就是k-means clustering(也叫vector
quantization)。更加一般性的做法是在訓練模型的時候加一個L1-regularization來
實現稀疏性。這就引出了下一類方法。

3. Regularization。一個向量維數雖然大,但是縮小每個維度的取值範圍,也是一種
形式的簡單。從整體來看,縮小取值範圍的一個一般做法就是優化向量(或者模型)的模
。從統計的觀點看,如果假設數據符合正態分佈,最大似然估計基本上就等價於L2-
regularization。着一個流派的學習算法往往都是解下面形式的一個優化問題

min_M |f(x;M) – y| + a|M|
訓練誤差項 regularization

目前解這類問題的主流是下山法(SGD)。因爲加regulariztion項形式上看很容易,所以
往往會被濫用。不管前面出現了什麼指數函數對數函數,後面統統來一個
regularization。拿搞物理的人的說法是,連量綱都對不上。更別說統計意義了。神奇
的是竟然還都有一定的效果。

4. 減少訓練數據攝入。如果特徵是抽象空間的點,沒有維度的概念,也沒有模的概念
,這時候怎麼辦?有一種辦法是選取所有訓練數據中最具代表性/最關鍵的一小撮樣本
來產生模型。從這個角度出發就產生了SVM和boosting這類算法。在SVM中,這類關鍵樣
本被稱爲 support vector。SV的個數其實就是模型的維度。用SGD訓練SVM的時候,如
果碰到一個預測正確的樣本,就直接跳過, 碰到錯誤的才更新模型。 從這個角度推廣
一下,按擬合程度如何對數據/模型加權重,基本上就得到了boosting。(boosting不是
這麼產生的,但不妨這麼理解。) 減少訓練數據攝入不是指減小原始訓練集的大小,而是
對原始訓練集進行精簡。比如最終都精簡到1兆樣本,那麼增大原始訓練集,比如從10兆
到100兆還是會提高預測精度。

這個是我七八年來學習ML的一些心得,希望對新人有所幫助。哪天看到一種效果很好的
新方法,但是想不通爲什麼這個方法效果好,或者對方法的來龍去脈摸不着頭腦的時候
,不妨萬法歸宗,往奧康目剃刀上扯一扯,或許就融會貫通了。

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