深度學習&機器學習基礎之1-從誤差講起

1. 誤差

試想一下,你辛辛苦苦訓練了一個自認爲超級牛逼的神經網絡,但是一到測試集上驗證,發現結果並不符合預期,是不是就開始懷疑人生了呢?爲什麼不對呢?預測結果與真實結果的誤差到底是哪裏來的呢?
誤差的來源無非兩部分:bias + variance,所謂Bias,指的是訓練出的模型已經非常非常努力了,拼命想擬合真實的模型,但是由於種種原因,真的擬合不完全,比如缺失了部分關鍵特徵(就好像有個人沒有了雙腳,你卻非要讓他直立行走一樣,太南南南了);而Variance往往指的是在訓練集上表現比較好,但是一到測試集就廢掉,這個有點像不會變通的機器人,你把它訓練的可以走任何直線,但是一旦遇到彎路就會碰壁。從數學上理解,我們可以使用不同的數據集訓練模型,得出一系列的f,如果得到的f在相同的預測集上得到的結果都差不多,但是跟真實值還是有一定差距,那這就是Bias大,Variance小;如果得到的結果相差比較大,但都圍繞着真實值變化,那就是Bias小,Variance大;如果variance和bias都很大,那哪裏來的自信覺得自己訓練的模型很牛逼!不同情況如下圖示例:
在這裏插入圖片描述
Bias大的主要原因包括:特徵不足;模型複雜度較低(試想用一個線性模型模擬一個非線性函數)
Variance大的主要原因包括:模型過於複雜;樣本量較小(試想用2個點去擬合一個二次函數,不同的樣本得出的結果相差較大,但用20個點就能很好擬合;另一種理解,讓樣本中包含更多信息,讓其覆蓋的解空間更大,比如機器人走直路的例子,樣本量小的話,可能樣本中只有走直路的情況,而沒有走彎路的情況)
使用不同的多項式函數預測f,可能得到的誤差如下(橫座標爲多項式冪次):
在這裏插入圖片描述
當模型比較簡單時(多樣式冪次小於3),主要誤差來源於Bias,此時模型欠擬合;當模型比較複雜時(多項式冪次大於4),主要誤差來源於Variance,此時模型過擬合。
爲了解決過擬合,可以增加正則化

2. 正則化

2.1 L1L_1正則化

L1L_1正則化,即在損失函數公式中增加預測參數的L1L_1範數因子,在減少原Loss的基礎上,同時使L1L_1範數最小,極端情況下,L1L_1範數最小的情況爲所有參數爲0,即所謂的“無招勝有招”,當然這是不可能的,但是L1L_1正則化想要達到的目的也並非全部參數都爲0,而是部分參數爲0,增加模型的稀疏性。
數學上的解釋,L1L_1正則化相當於對參數增加Laplace先驗,理解如下:
引入L1L_1正則化後的損失函數如下圖所示:
L~(w;X,y)=L(w;X,y)+αw1\tilde{L}(w; X, y) = L(w; X, y) + \alpha ||w||_1
假設損失函數L(w;X,y)L(w; X, y)爲連續可導函數,在任一點ww^*處,損失函數存在一階近似:
L(w;X,y)L(w;X,y)+(ww)wL(w;X,y)L(w; X, y) \approx L(w^*; X, y) + (w - w^*) \nabla_wL(w^*; X, y)
假設參數向量ww的參數個數爲2,則損失函數L(w;X,y)L(w; X, y)近似函數和L1L_1正則化項的等高線如下所示:
在這裏插入圖片描述
圖中,紅色直線代表原Loss的等高線,虛線爲L1L_1範數的等高線,如果想要L+L1L + L_1最小,則ww的選擇應該是w2=0w_2=0,此時lossloss函數有稀疏解。
關於L1L_1正則化爲什麼可以解決過擬合,理解如下:
L1L_1正則化後,得到的是稀疏解,有效地降低了原模型的複雜度,可以避免由於模型複雜導致的過擬合。

2.2 L2L_2正則化

類比L1L_1正則化,L2L_2正則化在原Loss中增加了L2L_2範數,相當於對參數增加了GaussGauss先驗分佈。
在這裏插入圖片描述
圖中,紅線代表原lossloss的一階近似等高線,藍線代表L2L_2正則化的等高線,可以看出,當兩條等高線相切時,取得最小的lossloss,此時,模型並非稀疏解。
關於L2L_2正則化爲什麼可以解決過擬合,理解如下:
增加L2L_2正則化後,會使得參數的絕對值儘可能小,可以避免某些參數對於模型的絕對控制作用,增強模型的泛化能力。(個人理解,主要解決由於樣本量少,不能覆蓋訓練和測試所有情況的過擬合)
例如,機器人走路控制模型中,原lossloss中走直線的參數起決定控制作用,導致在測試集的彎路測試中預測結果較差,但是增加了L2L_2正則化後,可以適當減少其控制力,進而增強模型的泛化能力,使得在彎路預測中結果不至於太差。

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