1. 程式人生 > >學習理論_斯坦福CS229_學習筆記

學習理論_斯坦福CS229_學習筆記

Part VI 學習理論(Learning Theory)

在之前,我們主要對於常用的監督學習演算法進行了闡述,現在做一個小小的回顧。

第1講由迴歸問題常用的線性迴歸演算法、分類問題常用的邏輯迴歸演算法拋磚引玉,引出指數分佈族以及廣義線性模型,讓我們明白線性迴歸與邏輯迴歸實則是廣義線性模型在y建模於不同概率分佈時的推導形式。

第2講介紹了生成學習演算法中常用的兩個演算法—高斯判別分析和樸素貝葉斯。目的在於明白生成學習演算法與判別學習演算法在解決問題時用的兩種不同的思路。當解決不同的問題時應採用不同的思路。

第3講則為我所理解的支援向量機的故事。

有了對於上述演算法的基本理解,那麼接下來就要進入一個新的篇章了—學習理論。某種程度上來說,理解機器學習演算法背後的學習理論,比理解與推導機器學習演算法更為重要。讓我們開始吧。


目錄

Part VI 學習理論(Learning Theory)

1 學習理論

1.1 偏差(Bias)和方差(Variance)權衡

1.2 理論準備

1.3 假設類H中假設個數有限

1.3 假設類H中假設個數無限

2 模型選擇和正則化

2.1 模型選擇

2.2 特徵選擇

3 線上學習

4 小結


1 學習理論

1.1 偏差(Bias)和方差(Variance)權衡

記得Andrew曾說,偏差與方差看似好理解,要深入掌握卻很難。關於偏差與方差現在並沒有一個公認的定義。

現在結合下面例子初探偏差與方差。假設選擇了3個模型進行線性迴歸,如下圖所示。左邊的圖即代表直接用線性函式進行迴歸,中間的圖利用2次函式,而右邊的圖則可能利用更高次的函式,例如5次函式進行模擬。

中間的圖顯然效果最好,這是我們想要的。對於左邊的圖,我們可以說其對於資料原有的規律學習得不是很好,因此其會存在著偏差過大的問題;對於右邊的圖可以說其又學習太好了,因此存在著方差過大的問題。偏差與方差兩個問題相伴相隨,不可分割。

你可能會問,模型對於訓練資料擬合越好那麼效果不就越好嗎?非也,模型對於訓練資料擬合得好只是一個基本要求。如果只考慮對於訓練資料擬合得好,那麼就會存在著高方差問題,例如右圖所示,這樣的模型也不是我們想要的。

還記得我們在第1講中對於線性迴歸的討論嗎?勾起回憶。要理解二者,首先要明白,我們訓練模型目的究竟是為何?

因為往往訓練資料不能代表整體,我們對於一個模型更看重的是其泛化能力,也就是模型不僅僅在訓練資料上表現好,在未訓練的資料上也應表現好;即我們希望這個模型能夠從訓練資料中學習到事物的真實規律,且當有的樣本來臨時能夠做出正確的判斷。當然提高訓練資料量能增加模型對於真實規律的學習能力。但是當你的模型本身就出了問題,例如上圖所示,左圖嘗試用1次函式去擬合2次函式,右圖嘗試用5次函式去擬合2次,即模型的複雜度選得過低或者過高,那麼此時就應該修改模型了。

我們使用某種機器學習對於資料進行建模,為的是學習到蘊含在資料中的該事物的一些規律。左圖所示的高偏差問題即模型對於訓練資料都擬合不好,何談其他資料;右圖所示的高方差問題即模型對於訓練資料擬合得太好了,學習到了一些並不屬於原有事物的規律,這也是我們不想看到的情況。要明白,偏差與方差是不可消除的,如何權衡二者,從而使模型的泛化能力更強,這是我們需要關注的。

接下來,深入一下,從理論的角度初探偏差與方差的關係。

1.2 理論準備

需要有幾個理論來輔助我們的推導。

(1)聯合界引理(The Union Bound):假設\small A_{1}\bg_white \small A_{2}...\bg_white \small A_{k}為k個事件(可能獨立也可能不獨立),那麼有:

很好理解:k個事件中,至少一個事件發生的概率至多等於這個K的事件的概率和。

(2)霍夫丁不等式(Hoeffding Inequality)

假設Z_{1}Z_{2}...Z_{m}是來自於引數為 \phi 的伯努利分佈的m個獨立同分布的隨機變數。即P(Z_{i}=1)=\phi ,P(Z_{i}=0)=1-\phi

設   \hat{\phi} = \frac{1}{m}\sum_{i=1}^{m}Z_{i},即為樣本均值。對於引數 \gamma >0,那麼有如下不等式成立:

這條定理也被稱為切爾諾夫界(Chernoff Bound)。不難看出,當 \gamma 固定時,隨著樣本數量m增大,不等式右邊減少,即左邊的概率的上界變少,那麼我就越有理由相信樣本均值\hat{\phi}\phi的差異較少,用樣本均值\hat{\phi}去估計\phi就越準確。這個思想感覺和大數定理如出一轍。

(3)經驗風險最小化(Empirical Risk Minimization,ERM)

為了接下來推導方便,現在都基於二分類問題(y\in {0,1})作為闡述。

給定一個訓練集S=\left \{ (x^{(i)},y^{(i)});i=1...m \right \},獨立同分布地從分佈D中採集訓練樣本(x^{(i)},y^{(i)}),那麼對於一個假設h,我們可以將訓練誤差如下定義:

即訓練樣本中分類錯誤的樣本佔訓練樣本的比例。注意在學習理論中,把訓練誤差稱為經驗風險或經驗誤差(empirical risk or empirical error)。

在此基礎上,我們定義一般誤差(generalization error)為:

表示當我們從分佈D中取樣一個樣本(x,y)時,假設h將y分類錯誤的概率。

訓練誤差是利用訓練資料進行訓練的結果,針對於訓練集;而一般誤差則表示該假設本身所包含的誤差,針對於模型的本身。

假設利用線性分類器進行二分類,即 h_{\theta }(x)=1\left \{ \theta ^{\top}x\geq 0 \right \}(等式右端的符號函式很常用),那麼我們將假設類定義如下:

那麼要使經驗風險最小化(Empirical Risk Minimization,ERM),即是從假設類中尋找到一個假設 \hat{h} 使訓練誤差最小:

ERM其實相當於是機器學習演算法的一個抽象,也被稱為最基礎的機器學習演算法。

這裡大家可能會對假設和假設類有所疑惑。例如以二元線性模型為例,即此時假設類為y=\theta _{0}+\theta _{1}x_{1} +\theta _{2}x_{2},那麼其中的假設即為y=1+2x_{1}+3x_{2}y=100+21x_{1}+33x_{2} 等等。此時可以發現該假設類中,假設的數量是無限的。

接下來,我們區別當假設類中假設數目有限和數目無限兩種情況,引出一致收斂定理。讓我們繼續理論的深入。

1.3 假設類H中假設個數有限

假設集 H=\left \{ h_{1},h_{2}...h_{k} \right \} 共含有k個假設。結合上文,這裡討論的是線性分類器來處理二分類問題,那麼其實之中的一個假設  h_{i}(g=2x+2,g=5x+4等等)便可想象為一個函式將x對映為0或者1(二分類問題,正類為1,負類為0)。那麼ERM所要做的便是從中尋找一個\hat{h},使得訓練誤差最小。

接下來,我們來探究訓練誤差和一般誤差的關係。

針對於某個假設 h_{i} 屬於H,考慮將一個來自於伯努利分佈的隨機變數Z這樣定義:Z=1(h_{i}(x)\neq y)。即表示我們從分佈中新取出一個樣本,用Z來判斷假設 h_{i} 是否將其錯分。進一步,對於每一個訓練中的樣本,我們可以這樣定義:    Z_{j}=1(h_{i}(x^{(j)})\neq y^{(j)})。那麼訓練誤差就可以這樣寫:

考慮上一節的霍夫丁不等式,就可以得到訓練誤差與一般誤差的關係:

確保你看懂了這一步。在上面的定義中,一般誤差就可類比為Z,即為期待值。接著,對於整個假設類,結合聯合界引理,可得到下列不等式:

上式表示:即在整個假設類中,至少有一個假設h,其訓練誤差與一般誤差的差值的絕對值大於 \gamma ,那麼存在這種情況的概率不大於 2kexp(-2\gamma ^{2}m)。從上式似乎可以看到訓練誤差和一般誤差差異的雛形了。

接著,同時用1減去不等式的兩端得:

                             P(\forall h\in H,\left | \varepsilon (h_{i}) -\hat{\varepsilon (h_{i})} \right |\leq \gamma )\geq 1-2kexp(-2\gamma ^{2}m) (1.1)

式(1.1)也稱為一致收斂(Uniform Convergence)。即表示在假設類中,所有假設的訓練誤差與一般誤差的差值的絕對值不大於\gamma 的概率至少為 1-2kexp(-2\gamma ^{2}m)。注意(1.1)中,包含3個引數:引數\gamma,樣本數量m和誤差概率(等式右邊)。現在將誤差概率和\gamma固定,來看看m是什麼情況。即對於至少1-\delta的概率的條件下,當m滿足什麼情況時,假設類中所有假設的訓練誤差與一般誤差的差值的絕對值不大於\gamma

那麼就有

                         P(\forall h\in H,\left | \varepsilon (h_{i}) -\hat{\varepsilon (h_{i})} \right |\leq \gamma )\geq 1-2kexp(-2\gamma ^{2}m)\geq 1-\delta 

確保你看懂一步。即在(1.1)的基礎上,滿足的最小的概率為1-\delta。由上式中間和右邊兩項可推出:

                                                                   (1.2)

 公式(1.2)的第1行即為滿足情況的最小m。第2行也稱為樣本複雜度。進一步,由(1.2)的第1行,可直接得到當m與1-\delta固定時,\gamma 與m和 \delta 的關係:

                                               (1.3)

進一步得到:

至此,在一致收斂中,m、\gamma\delta三者的關係差不多就明確了。

為了進一步探究偏差與方差的關係,在前文一致收斂的基礎上,讓我們繼續深入,進行如下兩個定義:

(1) \hat{h}=arg min_{h\in H}\hat{\varepsilon }(h),即表示訓練誤差最小的假設。

(2)h^{*}=arg min_{h\in H}\varepsilon (h),即表示一般誤差最小的假設。

因為由一致收斂可得到:\left | \varepsilon (h_{i})-\hat{\varepsilon }(h_{i}) \right | \leq \gamma,將其絕對值展開,可得兩個不等式:

(1)\varepsilon (h_{i})-\hat{\varepsilon }(h_{i}) \leq \gamma

(2)\hat{\varepsilon }(h_{i}) -\varepsilon (h_{i})\leq \gamma

由此進行推導:

                                                           (1.4)

第一行由不等式(1)可得。

第二行由於 \hat{h} 是所有假設中訓練誤差最小的,所以就有 \hat{\varepsilon }(\hat{h}) \leq \varepsilon (h^{*})

第三行同樣由不等式(2)可得。

結合(1.3),由(1.4)進一步推出。當假設類包含k個假設時,m和 \delta 固定且至少在 1-\delta 的誤差概率下,有:

到這裡,豁然開朗。不等式右邊第一項即為偏差衡量項,而第二項為方差衡量項。

當我們擴充套件模型複雜度,即尋找一個更大的假設空間時,即假設的數量增加。那麼由於第一項是所有假設中一般誤差最小的假設,所以第一項只會變少或者保持不變(確定你理解),對應著的便是偏差變小;而第二項由於假設數量k的增加,所以會增加,即對應著方差增加。

以上便是有限假設情況下偏差與方差的權衡,下面我們來看看無限假設集合下是什麼情況。

1.3 假設類H中假設個數無限

上節中給出了當假設有限時,模型的訓練誤差和一般誤差的關係。並由此推出所說的偏差和方差的關係。接下來,將有限數量擴充套件為無限數量,我們能夠得到一個更一般的數學形式。

首先給出一個經驗:模型複雜度常與樣本複雜度成正比。即假設線性模型含有d個引數,那麼樣本複雜度與d常為線性關係。

這個經驗看起來怪怪的,也不那麼正規。接下來嘗試利用學習理論來探究此中緣由。

 接下來引入一個新的概念:VC維(Vapnik-Chervonenkisdimension),來進行闡述。那麼什麼是VC維呢?

給定一個點的集合S,對於一個假設類H。當按照任意規則對S中的點進行標記後,如果H中都存在一個假設 h_{i} ,能夠將這些標記過的點按照類別進行分開,我們就稱H能夠打散(shatter)S。看上去很抽象,結合例子看看就會明白了。假設現在S中有3個點,假設類H為二元一次函式的集合(即ax_{1}+bx_{2}+c=0),那麼對於3個點的樣本集S,共有以下8種類別的標記方式:

可見,對於每種標記方式,假設類H中都存在一個假設h能夠將S按照不同類別分開,那麼此時H就能夠打散S。

現在將VC維定義如下:假設類H的VC維定義為:VC(H),代表假設類能夠打散的最大集合的大小。上述例子,該假設類VC維即為VC(H)=3(可驗證,當S有4個點時,該假設類不能夠打散S)。更一般的,對於n維線性分類器來說,其VC維等於n+1。注意一點,VC維為3,並不是代表所有的三個點的集合都能打散(例如上述例子中若3個點位於一條直接則不能打散),而是若三個點的分佈存在一種情況能夠被打散即可。

VC維的理論作為機器學習理論中最重要的理論之一,其數學原理不用深究。下面我們直接給出更一般的包括數量無限的假設集合中的一致收斂。

結合上節有限集合中的一致收斂定理,結合VC維,給出包含有限集和無限集中的統一的一致收斂定理。

給定假設類H,令 d = VC(H),至少在1-\delta的誤差概率下,有以下不等式:

進一步可得:

由此,可得到一個引理:

引理:為使 \left | \varepsilon (h_{i})-\hat{\varepsilon }(h_{i}) \right | \leq \gamma 對假設集合H中的所有h,都有至少1−δ的概率成立,那麼樣本數量必須滿足,也就是樣本的複雜度必須滿足:m = O_{\gamma ,\delta }(d)

簡單來說便是,要使一個假設類 ,達到ERM的目的,那麼訓練樣本的數量m與假設類H的VC維線性相關。


2 模型選擇和正則化

2.1 模型選擇

經過上一節的內容,我們已經從理論的角度初探了一個模型的偏差以及方差。我們明白訓練集上表現的最好的模型,往往不是最佳模型,因為其常常存在著高方差的問題。我們需要的是一般誤差最低,即泛化能力最好的模型。那麼當有多個模型可供選擇,例如線性模型、SVM等等,如何衡量模型的泛化能力,從而選擇較好的模型呢?一個清晰的思路便是,我們將之前原本打算的訓練資料分為兩個資料集:訓練集與測試集。將模型將測試集上的表現用來衡量模型的一般誤差。這種思路稱為交叉驗證(Cross Validation)。接下來,看看怎麼做。

2.1.1 保留交叉驗證(Hold-out Cross Validation)

(1)將原有訓練集按照一定比例隨機(注意隨機)分開,常用7:3,分為訓練集與測試集。

(2)根據ERM,將模型M_{i}只用於訓練集上面訓練,這樣每個模型都可以得到一個假設 h_{i} 。

(3)從其中選取 h_{i} 滿足\hat{\varepsilon }_{S_{CV}}(h_{i})最小,並以此作為模型。

保留交叉驗證的一個問題在於,分離出來的測試集並沒有對於訓練有所幫助,在資料不多的情況下,留出3成多的資料沒有訓練有點奢侈。因此在實際中,常常使用以下方法。

2.1.2 K重交叉驗證(K-Fold Cross Validation)

(1)將原有訓練資料集S進行k等分,k常取10。

(2)對於一個模型 M_{i} 進行k(j =1,2,3...k)次訓練,每次訓練資料為S_{1}\cup S_{2}\cup ...S_{j-1}\cup S_{j+1}\cup ...S_{k},每次的測試資料即為S_{j}

(3)每個模型進行k次訓練後,取k次測試資料的平均值作為選擇依據,從而進行模型的選擇。

2.1.3 留一交叉驗證(Leave-one-out cross validation)

在K重交叉驗證的基礎上,將k重交叉驗證的k等分取極端。若m為樣本數量,即設k = m,那麼便共進行m次訓練,每次訓練選取m-1個樣本訓練,剩下的1個樣本作為測試。

2.2 特徵選擇

特徵選擇是機器學習的一個熱門方向,如何為模型選擇更好的特徵,將會對接下來的任務起到重要的作用。以下,簡單介紹幾種常用思路。

2.2.1 前向與後向選擇法

前向選擇法思路如下:

(1)初始化選取的特徵集為空集,即 F=\oslash

(2)對於可供選取的每個特徵都進行測試,例如每次模型都只選取一個特徵進行訓練並測試,選擇對於模型精度提升最好的特徵加入 F

(3)重複(2),直到選擇完所有特徵或者是達到模型的精度要求。

由前向選擇法,不難得到後向選擇法的思路:

(1)初始化選取的特徵集為特徵全集。

(2)每次從F內拿出一個特徵,然後對於F進行測試,選擇對於F精度降低影響最小的特徵進行刪除。

(3)重複(2),直到F為空集,或者取出的特徵對於模型精度降低影響超過閾值。

前向選擇法和後向選擇法都為包裝模型選擇法(Wrapper Model Feature Selection)的一種。其明顯的缺陷便是每次進行特徵選擇,都要模型進行訓練並測試,計算開銷較大。

2.2.2 特徵過濾法

特徵過濾法的思路便是計算每個特徵x_{i},關於標籤y的關係,並得到一個分數S(i),這裡注意該符號與樣本集區分。那麼之後則選取分數最大的前k個特徵構建模型。

我們可以採用互資訊(Mutual Information,MI)的方式進行 x_{i} 與y的關係計算:

注意到,在上述公式中, x_{i} 和y的取值域都為(0,1)。若有其他取值,可以在此基礎上擴充套件。P(x_{i},y),p(x_{i})以及p(y)都可根據經驗來進行估計。

更一般的,可以利用K-L散度(Kullback-Leibler (KL) Divergence:)來進行 x_{i} 和y的關係衡量:

K-L散度衡量的是兩種分佈的差異。若 x_{i} 和y獨立,那麼K-L散度即為0。

最後還有一個細節需要注意,之前提到選取前k個特徵進行模型構建,那麼k該如何確定?一種標準方法是使用交叉驗證來選擇k的可能值。當然也有許多其他的方法。

2.2.3 貝葉斯正則化

貝葉斯正則化作為一種減少過擬合的手段被廣泛使用。

還記得我們之前在邏輯迴歸中是如何求解引數的嗎?我們通過構造最大似然(Maximum Likelihood ,ML)方程進行求解:

這種求解的思路來源統計學派中的頻率學派。即在這種思路中,認為 \theta 是真實存在的、固定的一個值,然後利用最大化似然的方式去進行逼近,從而求解 \theta 。

而求解該問題也可以從另一個角度出發,也就是貝葉斯學派的角度。認為\theta不是固定的,而是一個隨機變數,即\theta是作為一個變數而不是固定的值參與我們的演算法。假設\theta服從某先驗概率分佈p(\theta ),常常選取高斯分佈,樣本集S。那麼我們可以寫出在該樣本集S條件下,\theta的後驗分佈。注意,\theta 此時作為隨機變數所以用逗號進行分割,而不是用分號。:

先看分子,p(\theta ) 為已知的先驗分佈,p(S|\theta ) 即為在隨機變數 \theta 的條件下,樣本集S屬於的某種分佈,例如在邏輯迴歸中,我們有:

其中:

回頭接著看p(\theta |S)的表示式。再看分母,分母p(S)即為p(S|\theta ) 對 \theta 的積分,這不難理解。

那麼當有新的樣本x來時,我們預測的y的分佈即為

                                                    (2.1)

採用上式的期望作為y的預測值,即預測的y的值如下式所示:

但是在實際中,其實很難做到對於(2.1)進行積分,因此常常採用一個最大的後驗分佈的點進行近似代替,這種方式也被稱為MAP (Maximum a Posteriori):

上述的確比較抽象,我也理解不好,下面給出一個讓大家好理解的結論吧。

利用這種思想(貝葉斯學派),最後對於結果帶來的改變便是,假設我們認為 \theta 的先驗分佈為高斯分佈,也就是p(\theta )\sim N(\mu ,\sigma ^{2}),其中常常令 \mu =0,那麼最後進行預測結果計算時,以線性模型為例,每個特徵變為:x=\theta _{MAP}*x

這就相當於給特徵都加了一個權,且權值是服從高斯分佈的。注意到 \theta 的先驗分佈為 \mu =0 的高斯分佈,因此許多點的值都聚集在0的附近,那麼許多特徵的權值便會很小且接近於0。這就相當於雖然並沒有減少特徵的數量,但是在計算中就少考慮了許多特徵,從而就達到了減少過擬合的目的。


3 線上學習

記得在第一講線性迴歸中,提到過根據每次學習的資料量的大小,可以將梯度下降分為隨機梯度下降,mini-batch梯度下降,和批量梯度下降。我們之前所介紹的學習演算法皆為在一個訓練集上訓練後,在驗證集驗證,最後來做預測,我們將這種學習模式叫做batch learning。那麼可不可以一邊訓練一邊預測,然後在這過程中進行引數的更新呢,這就是線上學習(online learning)的思路了。

假設有樣本集 S=\left \{ (x^{(1)},y^{1}), (x^{(2)},y^{2})...(x^{(m)},y^{m})\right \}。我們有一個模型M來進行線上學習。首先輸入x^{(1)},讓模型進行預測,將預測值與y^{(1)}做比較,若正確則輸入下一個樣本x^{(2)},錯誤則進行模型M中的引數更新;接著,輸入x^{(2)}進行相同操作,直到訓練完整個樣本集。

不難發現,線上學習最大的好處便是速度快。


4 小結

這一部分的核心在於第一節。重點在於理解偏差與方差的權衡。

首先當我們選擇一個模型進行訓練時,偏差是第一個需要解決的問題,因為模型對於訓練集擬合得好是基本的要求,可以通過增加模型複雜度,增加訓練資料進行解決。接下來,要做的便是控制偏差在可接受的範圍內,減少模型的方差,從而增加模型的泛化能力,這可以通過增加訓練資料、進行防止過擬合等方式實現。

方差與偏差的權衡,容易入門,難於精通。