過擬合是什麽?如何解決過擬合?l1、l2怎麽解決過擬合
1. 過擬合是什麽?
https://www.zhihu.com/question/264909622 那個英文回答就是說h1、h2屬於同一個集合,實際情況是h2比h1錯誤率低,你用h1來訓練,用h2來測試,但h1的準確率比h2卻高
個人理解:網絡過分學習了訓練集的特征,把不是這個訓練集本質的特征也學習進去了,導致模型不能在測試集正確識別(記得統計學習方法裏面有一個配圖,一條曲線過分學習特征)。或者說,訓練集的準確率很高,但測試集的準確率很低。在training data上的error漸漸減小,可是在驗證集上的error卻反而漸漸增大。
自己在工程中遇到過,27w次的loss比21w次低,但測試集27w的準確率比21w次低。
2. 解決辦法?1.數據增強
2.更簡單的模型,參數更少
3.early stopping。提前終止網絡學習,自己之前做的27w叠代期比21w叠代期的在測試集上ap值更低,可以把21w的作為最終的訓練結果。
4.l1、l2正則(往往說的weight decay其實也就是這個,在loss上加l1、l2.我自己寫的weight decay的總結http://www.cnblogs.com/ymjyqsx/p/9160852.html)
5.增加噪聲
6.dropout
7.
3. L1、L2怎麽解決過擬合?
https://blog.csdn.net/jinping_shi/article/details/52433975
1. l1正則是所有權重絕對值之和,l2正則化是所有權重的平方和再開平方根。
2. l1可以產生稀疏模型,用於特征選擇(為什麽會產生稀疏模型,用2維平面loss函數的等值線和正則的線進行圖解,l1正則有更多凸點,這些凸點與等值線相交的概率比其他點更大,這些凸點的坐標是一個為0,另一個不為0,也就進行了特征選取。為什麽l2不容易產生稀疏模型,因為l2是在二維上是一個圓形,l2的凸點與等值線的相交的概率要比其他點小)。l2可以獲得值很小的參數(推參數更新的公式)。
3. 擬合過程中通常都傾向於讓權值盡可能小,最後構造一個所有參數都比較小的模型。因為一般認為參數值小的模型比較簡單,能適應不同的數據集,也在一定程度上避免了過擬合現象。可以設想一下對於一個線性回歸方程,若參數很大,那麽只要數據偏移一點點,就會對結果造成很大的影響(可以用y = ax + b來當理解,如果a的切斜角很大,那x的值變動很小,但y的值會相對於x的值變動大);但如果參數足夠小,數據偏移得多一點也不會對結果造成什麽影響,專業一點的說法是『抗擾動能力強』。
4. l1中λ越大,x越小,也就是參數越小(你可以拿y = ax這個函數做類比,a越大,x就算取更小的值都能取到原來大小的值)。λ越大,越容易在0點取到最小值。l2中λ越大,w衰減的越快(參數更新公式)
過擬合是什麽?如何解決過擬合?l1、l2怎麽解決過擬合