tft每日頭條

 > 生活

 > 如何判斷深度神經網絡過拟合

如何判斷深度神經網絡過拟合

生活 更新时间:2024-12-20 02:13:59

偏差 - 差異權衡

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)1

泛化(測試)誤差是機器/深度學習中最重要的指标。它給出了模型在未知數據上的性能估計。測試誤差分解為三部分(見圖1):方差、平方偏差、和不可約誤差。

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)2

圖1:作為模型複雜性(靈活性)的函數的偏差和方差

具有高偏差的模型對于數據來說不夠複雜(太簡單)并且往往不适合。最簡單的模型是取目标變量的平均值(模式),并将其分配給所有的預測。相反,具有高方差的模型通過緊跟跟随(MIMIK)訓練數據來拟合訓練數據,其中學習算法将跟随信号和噪聲。注意,随着模型的複雜性(靈活性)增加,模型将變得不易判斷,如神經網絡。

哪裡:

var(ε):由每個示例的遺漏特征和不可測量變異導緻的不可約誤差。

Bias(ŷ):通過一個簡單模型用近似真實的問題引入的誤差。

var(ŷ):如果我們使用不同的數據集進行估計,ŷ會發生變化的數量。

因此,我們隻能控制方差和偏差,而不能減少誤差。但是,我們的工作是嘗試估計正确的複雜度以實現最低的測試誤差。

正則化

正則化使學習算法對訓練數據和過程不那麼敏感,從而增加了學習算法的穩定性。由于我們不知道也無法獲得真正的函數,我們可以用它來比較我們的估計函數,所以最好的策略是建立一個非常複雜的模型,它非常适合訓練數據(過度拟合)并将其調整,所以它會有一個很好的泛化(測試)錯誤。當使用正則化時,我們試圖減少泛化錯誤,這可能會導緻過程中的訓練錯誤增加,這是可以的,因為我們關心的是模型的泛化程度如何。通過正則化,我們試圖通過增加偏差和減少方差來将過度拟合的非常複雜的模型恢複到一個良好的模型。這是建立在複雜模型具有大參數和簡單模型具有小參數的假設基礎上的。

以下是用于正則化的一些方法:

1.L2參數正則化:也稱為權重衰減。這種方法将L2範數懲罰添加到目标函數中,以将權重推向原點。即使這種方法将所有權重以相同的比例收縮到零,但是它永遠不會有權重是完全為零。

2. L1參數正則化(LASSO):它可以被看作是一種特征選擇方法,因為與L2正則化相反,一些權重實際上是零。它通過将L1範數罰加到目标函數來縮小所有的權重。

3. Dropout:Dropout可以看作是裝袋技術的近似。在每次叠代中,我們随機關閉每一層上的一些神經元,并且不使用前向傳播和反向傳播中的這些神經元。這将迫使神經網絡傳播而不是專注于特定的神經元,因為它永遠不知道在每個叠代中會出現哪些神經元。因此,它可以被看作是在每次叠代中訓練不同的模型。此外,由于我們在每次叠代中會放棄一些神經元,這将變為更小的網絡,這反過來也意味着有更簡單的網絡。

4. 增強:通過使用訓練實例添加假數據,并在圖像識别的情況下增加失真,例如在圖像識别的情況下重新縮放和旋轉圖像。此處的想法是,在更多數據上訓練模型以獲得更好的性能總是更好的。增加的示例不像獨立示例那樣添加太多信息到模型中,但在收集更多數據不可行時仍然是有效的替代方案。

5. 早期停止:此方法試圖優化成本函數并對其進行調整,以使其泛化誤差更低。它的工作原理是在每次叠代中記錄我們的驗證錯誤。如果驗證錯誤得到改善,我們将存儲參數,并繼續,直到優化算法終止。如果計算時間和資源對我們來說是一個問題,那麼這是一個好方法。

在這篇文章中,我們将介紹L2參數正則化。

L2參數正則化

我們通常不會調整偏倚和規則化權重。我們可以使用Hessian矩陣和它的特征值和特征向量來查看權重對權重衰減的敏感性。權重wi将使用(λi/λiα)來重新調整,其中λi(特征值)測量該方向上的Hessian矩陣(特征向量)的靈敏度,并且α是正則化的超參數。因此,

如果λi ≫ α,那麼成本函數在該方向上非常敏感,并且相應的權重顯著降低成本⟹不會衰減(收縮)很多。

如果λi≪ α,則成本函數在該方向上不敏感,并且相應的權重不會顯著降低成本⟹衰減(收縮)向零。

目标函數(二叉交叉熵)将從以下變化:

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)3

到:

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)4

此外,新的梯度和更新方程将是:

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)5

請注意,這裡α是學習率,λ是正則化的超參數。随着λ的增加,偏差增大(模型變得更不靈活),但有以下極端情況(見圖2):

λ= 0,沒有正則化。

λ→∞時,在所有權重基本為零的情況下,模型變得非常簡單。在回歸的情況下,我們隻得到與目标變量的平均值相等的截距。

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)6

圖2:作為正則化參數λ的函數的模型複雜性(欠拟合/過拟合)

L2參數正則化是如何利用正規方程進行的,有時是有幫助的。正常情況是:

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)7

這意味着:

将λ添加到方差會減少重量

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)8

即使x^ tx不可逆,對每個特征加上λ也可以使滿秩矩陣可逆。

為了說明正則化如何幫助我們減少泛化錯誤,我們将使用cats_vs_dogs數據集。數據集包含貓和狗的圖像。我們将嘗試構建一個神經網絡來分類圖像是否有貓或狗。每個圖像在RGB尺度上是64 x 64像素。

我們将使用我們在“編碼神經網絡 - 前向傳播和反向傳播”文章中編寫的函數來初始化參數,計算前向傳播,交叉熵成本,梯度等。

讓我們導入數據,看看形狀以及訓練集中貓圖像的樣本。

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)9

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)10

圖3:示例圖像

該訓練集有209個示例,測試集有50個示例。我們首先編寫可以幫助我們編寫多層神經網絡的輔助函數。

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)11

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)12

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)13

現在我們已經準備好訓練神經網絡了。我們首先建立一個沒有正則化的神經網絡,然後建立一個正則化的神經網絡來看哪一個神經網絡的泛化誤差較低。注意應該調整λ以獲得最好的結果,我們在這裡選擇一個任意值來說明這個概念。兩個神經網絡都有2個隐藏層,每個隐藏層有5個單元。

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)14

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)15

圖4:無正則化的成本曲線

訓練精度為82.30%,但測試精度為78%。訓練和測試精度之間的差異并不大,也就是說,我們沒有太多過度拟合。因此,一點正則化可能有助于如λ= 0.02。從業人員推薦的λ值是:0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24。

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)16

如何判斷深度神經網絡過拟合(聊聊編碼神經網絡中的正則化)17

圖5:正則化的成本曲線

正如以上結果所示,我們通過将測試精度從78%提高到80%來改善泛化誤差。另一方面,訓練準确率從82.30%降至65.55%。

結論

正則化是一種解決過度拟合的有效技術。由于我們不知道數據的真實分布,基于經驗分布的經驗風險容易出現過度拟合。因此,最好的策略是很好的拟合訓練數據,然後使用正則化技術,使得該模型能夠很好地推廣。L2參數正則化與Dropout是機器學習中使用最廣泛的正則化技術中的兩種。

正則化技術如L2和L1參數正則化的隐含假設之一是參數的值應為零,并嘗試将所有參數縮小到零。這是為了避免很好地跟蹤訓練數據,在沒有幫助時,這使得學習算法選擇某些噪音應用于看不見的數據。

為了得到最佳的泛化誤差,應該調整λ的值。我們通常在将模型與λs的值進行比較時使用驗證集,并選擇驗證誤差最低的那個。

隻有在模型遭受過度拟合時才使用正則化,即訓練錯誤小于等于驗證錯誤。

如果在使用正則化之後驗證錯誤仍然很高,那麼我們在欠拟合區域。換句話說,我們的模型仍然過于簡單并且已經有很高的偏差。因此,要增加模型的複雜度,然後使用正則化。

由于我們試圖解決的大多數任務沒有足夠的數據(或收集更多數據的代價),所以過度拟合比傳統而複雜的神經網絡在深度學習中更為普遍。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved