(轉)機器學習:偏差處理(2)

davelet發表於2018-05-29

下面是處理偏差和方差問題最簡單的形式:

如果具有較高的可避免偏差,那麼加大模型的規模(例如通過新增層/神經元數量來增加神經網路的大小)。

如果具有較高的方差,那麼向訓練集增加資料。

如果你可以加大神經網路的規模且無限制地增加訓練集資料,那麼在很多學習問題上都可以做的很好。

實際上,加大網路的模型規模終將導致你遇到計算力問題,因為訓練大的模型很慢。另外你也有可能會耗盡獲取更多訓練資料的能力。(即使在網上,也只有有限數量的貓圖片)

不同的模型架構(例如不同的神經網路架構)對於你的問題將有不同的偏差/方差值。近期不少深度學習研究已經開發出很多新的模型架構。所以,如果你在使用神經網路,學術文獻可能會是一個很好的靈感來源,在 Github 上也有很多較好的開源實現。但嘗試新架構的結果要比簡單地加大模型規模和新增資料的形式更難以預測。

加大模型的規模通常可以減少偏差,但也可能會增加方差和過擬合的風險。然而這種過擬合問題通常只在你不使用正則化技術的時候出現。如果你的演算法含有了一個精心設計的正則化方法,通常可以安全地加大模型的規模,而不會增加過擬合風險。

假設你正在應用深度學習,使用了 L2 正則化和 dropout 技術,並且設定了在開發集上表現最好的正則化引數。如果你加大模型規模,演算法的表現往往會保持不變或提升;它不太可能明顯地變差。避免使用更大模型的唯一原因就是這將使得計算代價變大。

如果你的學習演算法存在著很高的可避免偏差,你可能會嘗試下面的技術:

加大模型規模(例如神經元/層的數量):這項技術能夠使演算法更好地擬合訓練集,從而減少偏差。當你發現這樣做會增大方差時,加入正則化,這可以抵消方差的增加。

根據誤差分析結果修改輸入特徵:假設誤差分析的結果鼓勵你建立額外的特徵,從而幫助演算法消除某個特定類別的誤差。(我們會在接下來的章節深入討論這個話題。)這些新的特徵對處理偏差和方差都有所幫助。理論上,新增更多的特徵將增大方差;然而當你發現這種情況時,加入正則化,這可以抵消方差的增加。

減少或者去除正則化(L2 正則化,L1 正則化,dropout):這將減少可避免偏差,但會增大方差。

修改模型架構(比如神經網路架構)使之更適用於你的問題:這項技術將同時影響偏差和方差。

有一種方法並不能奏效:

新增更多的訓練資料:這項技術可以幫助解決方差問題,但它對於偏差通常沒有明顯的影響。


相關文章