斯坦福大學公開課機器學習:advice for applying machine learning | learning curves (改進學習演算法:高偏差和高方差與學習曲線的關係)

來源:互聯網
上載者:User

標籤:for   限制   補充   接下來   str   意義   例子   關係   bsp   

繪製學習曲線非常有用,比如你想檢查你的學習演算法,運行是否正常。或者你希望改進演算法的表現或效果。那麼學習曲線就是一種很好的工具。學習曲線可以判斷某一個學習演算法,是偏差、方差問題,或是二者皆有。

為了繪製一條學習曲線,通常先繪製出訓練集資料的平均誤差平方和(Jtrain),或者交叉驗證集資料的平均誤差平方和(Jcv)。將其繪製成一個關於參數m的函數。也就是一個關於訓練集、樣本總數的函數。m一般是一個常數,比如m等於100,表示100組訓練樣本。但我們要自己取一些m的值,也就是說對m的取值做一點限制,比如說取10、20或者30、40組訓練集,然後繪出訓練集誤差、以及交叉驗證集誤差。那麼我們來看看這條曲線繪製出來是什麼樣子。假設只有一組訓練樣本,也即m=1。正如第一幅圖中所示(,m=1),並且假設使用二次函數來擬合模型,那麼由於我只有一個訓練樣本,擬合的結果很明顯會很好,用二次函數來擬合對這一個訓練樣本擬合其誤差一定為0。如果有兩組訓練樣本,二次函數也能很好得擬合。即使是使用正則化,擬合的結果也會很好。而如果不使用正則化的話,那麼擬合效果絕對棒極了。如果用三組訓練樣本的話,看起來依然能很好地用二次函數擬合。也就是說,當m等於1、2、3時,對訓練集資料進行預測,得到的訓練集誤差都將等於0,這裡假設不使用正則化。當然如果使用正則化,那麼誤差就稍大於0。如果訓練集樣本很大,要人為地限制訓練集樣本的容量。比如說,將m值設為3,然後僅用這三組樣本進行訓練,然後對應到這個圖中。我只看對這三組訓練樣本,進行預測得到的訓練誤差。也是和模型擬合的三組樣本,所以即使有100組訓練樣本,而我們還是想繪製當m等於3時的訓練誤差,那麼我們要關注的仍然是對這三組訓練樣本進行預測的誤差。同樣,這三組樣本也是我們用來擬合模型的三組樣本。所有其他的樣本,都在訓練過程中選擇性忽略了。總結一下,我們現在已經看到,當訓練樣本容量m很小的時候,訓練誤差也會很小。因為很顯然,如果我們訓練集很小,那麼很容易就能把訓練集擬合到很好,甚至擬合得天衣無縫。現在我們來看,當m等於4的時候,二次函數似乎也能對資料擬合得很好。那我們再看當m等於5的情況,這時候再用二次函數來擬合,好像效果有下降但還是差強人意。而當我的訓練集越來越大的時候,要保證使用二次函數的擬合效果依然很好,就顯得越來越困難了。

 

 

事實上隨著訓練集容量的增大,平均訓練誤差是逐漸增大的。因此如果畫出這條曲線,你就會發現訓練集誤差(對假設進行預測的誤差平均值)隨著m的增大而增大()。再重複一遍對這一問題的理解,當訓練樣本很少的時候,對每一個訓練樣本都能很容易地擬合到很好,所以訓練誤差將會很小。而反過來,當m的值逐漸增大,那麼想對每一個訓練樣本都擬合到很好,就顯得愈發的困難了,因此訓練集誤差就會越來越大。那麼交叉驗證集誤差的情況如何呢。交叉驗證集誤差是對完全陌生的交叉驗證集資料進行預測得到的誤差,那麼我們知道當訓練集樣本很小的時候,泛化程度不會很好,意思是不能很好地適應新樣本。因此這個假設就不是一個理想的假設。只有使用一個更大的訓練集時,我們才有可能得到一個能夠更好擬合資料的可能的假設。因此,驗證集誤差和測試集誤差都會隨著訓練集樣本容量m的增加而減小,因為你使用的資料越多,你越能獲得更好地泛化表現,或者說對新樣本的適應能力更強。因此,資料越多,越能擬合出合適的假設。所以,如果把Jtrain和Jcv繪製出來就應該得到如下的曲線。

 

 

現在我們來看看,當處於高偏差或者高方差的情況時,這些學習曲線又會變成什麼樣子。假如我們的假設處於高偏差問題,為了更清楚地解釋這個問題,下面用一個簡單的例子來說明,也就是用一條直線,來擬合資料的例子()。很顯然一條直線不能很好地擬合資料。

 

 

現在我們來想一想,如果我們增大訓練集樣本容量,會發生什麼情況呢。不難發現還是會得到類似的一條直線假設。但一條直線再怎麼接近,也不可能對這組資料進行很好的擬合。

 

 

所以,如果你繪出交叉驗證集誤差,應該是如(藍色曲線)。最左端表示訓練集樣本容量很小,比如說只有一組樣本,那麼表現當然很不好,而隨著你增大訓練集樣本數,當達到某一個容量值的時候,你就會找到那條最有可能擬合資料的那條直線,並且此時即便你繼續增大訓練集的樣本容量,即使你不斷增大m的值,你基本上還是會得到的一條差不多的直線。因此,交叉驗證集誤差,或者測試集誤差,將會很快變為水平而不再變化。只要訓練集樣本容量值達到或超過了那個特定的數值,交叉驗證集誤差和測試集誤差就趨於不變,這樣你會得到最能擬合資料的那條直線。那麼訓練誤差又如何呢?同樣,訓練誤差一開始也是很小的,而在高偏差的情形中,你會發現訓練集誤差會逐漸增大。一直趨於接近交叉驗證集誤差,這是因為你的參數很少。但當m很大的時候,資料太多,此時訓練集和交叉驗證集的預測效果將會非常接近,這是當你的學習演算法處於高偏差情形時,學習曲線的大致走向。最後補充一點,高偏差的情形反映出的問題是,交叉驗證集和訓練集誤差都很大。也就是說,你最終會得到一個值比較大Jcv和Jtrain。這也得出一個很有意思的結論,那就是如果一個學習演算法有很大的偏差,那麼當我們選用更多的訓練樣本時,也就是在這幅圖中,隨著我們增大橫座標,我們發現交叉驗證集誤差的值,不會表現出明顯的下降,實際上是變為水平了。所以如果學習演算法正處於高偏差的情形,那麼選用更多的訓練集資料,對於改善演算法表現無益。正如我們右邊的這兩幅圖所體現的,這裡我們只有五組訓練樣本,我們找到這條直線來擬合,然後我們增加了更多的訓練樣本,但我們仍然得到幾乎一樣的一條直線。因此如果學習演算法處於高偏差時,給再多的訓練資料也於事無補。交叉驗證集誤差或測試集誤差也不會降低多少。所以,能夠看清演算法正處於高偏差的情形是一件很有意義的事情,因為這樣可以避免把時間浪費在收集更多的訓練集資料上。因為再多的資料也是無意義的。

 

 

接下來我們再來看看當學習演算法正處於高方差的時候,學習曲線應該是什麼樣子的。首先我們來看訓練集誤差,如果你的訓練集樣本容量很小,比如像所示情形只有五組訓練樣本,如果我們用很高階次的多項式來擬合,比如用了100次的多項式函數。當然不會有人這麼用的,這裡只是示範。並且假設我們使用一個很小的lambda值,可能不等於0,但足夠小的lambda。那麼很顯然,我們會對這組資料擬合得非常非常好,因此這個假設函數對資料過擬合。所以如果訓練集樣本容量很小時,訓練集誤差Jtrain將會很小。

 

 

隨著訓練集樣本容量的增加,可能這個假設函數仍然會對資料或多或少有一點過擬合,但很明顯此時要對資料很好地擬合,顯得更加困難和吃力了(如所示)。

 

 

所以,隨著訓練集樣本容量的增大,我們會發現Jtrain的值會隨之增大。因為當訓練樣本越多的時候,我們就越難跟訓練集資料擬合得很好,但總的來說訓練集誤差還是很小。交叉驗證集誤差又如何呢?在高方差的情形中,假設函數對資料過擬合,因此交叉驗證集誤差將會一直都很大,即便我們選擇一個比較合適恰當的訓練集樣本數,因此交叉驗證集誤差畫出來差不多是圖下紫色曲線。所以演算法處於高方差情形最明顯的一個特點是在訓練集誤差和交叉驗證集誤差之間有一段很大的差距。而這個曲線圖也反映出如果我們要考慮增大訓練集的樣本數,也就是在這幅圖中向右延伸曲線。我們大致可以看出這兩條學習曲線,藍色和紅色的兩條曲線正在相互靠近。因此,如果我們將曲線向右延伸出去, 那麼似乎訓練集誤差很可能會逐漸增大. 而交叉驗證集誤差則會持續下降。當然我們最關心的還是交叉驗證集誤差或者測試集誤差。所以從這幅圖中,我們基本可以預測如果繼續增大訓練樣本的數量,將曲線向右延伸,交叉驗證集誤差將會逐漸下降。所以,在高方差的情形中,使用更多的訓練集資料,對改進演算法的表現是有效果的。這同樣也體現出知道你的演算法正處於高方差的情形,也是非常有意義的。因為它能告訴你是否有必要浪費時間來增加更多的訓練集資料。

 

 

上面畫出的學習曲線都是相當理想化的曲線,針對一個實際的學習演算法,如果畫出學習曲線的話,基本會得到類似的結果。雖然如此,有時候也會看到帶有一點雜訊或幹擾的曲線。但總的來說,像這樣畫出學習曲線,確實能協助我們看清學習演算法是否處於高偏差、高方差、或二者皆有的情形。所以當我們打算改進一個學習演算法的表現時,通常要進行的一項工作,就是畫出這些學習曲線。

斯坦福大學公開課機器學習:advice for applying machine learning | learning curves (改進學習演算法:高偏差和高方差與學習曲線的關係)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.