下面是處理偏差和方差問題最簡單的形式:
如果具有較高的可避免偏差,那麼加大模型的規模(例如通過添加層/神經元數量來增加神經網絡的大小)。
如果具有較高的方差,那麼向訓練集增加資料。
如果你可以加大神經網絡的規模且無限制地增加訓練集資料,那麼在很多學習問題上都可以做的很好。
實際上,加大網絡的模型規模終将導緻你遇到計算力問題,因為訓練大的模型很慢。另外你也有可能會耗盡擷取更多訓練資料的能力。(即使在網上,也隻有有限數量的貓圖檔)
不同的模型架構(例如不同的神經網絡架構)對于你的問題将有不同的偏差/方內插補點。近期不少深度學習研究已經開發出很多新的模型架構。是以,如果你在使用神經網絡,學術文獻可能會是一個很好的靈感來源,在 Github 上也有很多較好的開源實作。但嘗試新架構的結果要比簡單地加大模型規模和添加資料的形式更難以預測。
加大模型的規模通常可以減少偏差,但也可能會增加方差和過拟合的風險。然而這種過拟合問題通常隻在你不使用正則化技術的時候出現。如果你的算法含有了一個精心設計的正則化方法,通常可以安全地加大模型的規模,而不會增加過拟合風險。
假設你正在應用深度學習,使用了 L2 正則化和 dropout 技術,并且設定了在開發集上表現最好的正則化參數。如果你加大模型規模,算法的表現往往會保持不變或提升;它不太可能明顯地變差。避免使用更大模型的唯一原因就是這将使得計算代價變大。
如果你的學習算法存在着很高的可避免偏差,你可能會嘗試下面的技術:
加大模型規模(例如神經元/層的數量):這項技術能夠使算法更好地拟合訓練集,進而減少偏差。當你發現這樣做會增大方差時,加入正則化,這可以抵消方差的增加。
根據誤差分析結果修改輸入特征:假設誤差分析的結果鼓勵你建立額外的特征,進而幫助算法消除某個特定類别的誤差。(我們會在接下來的章節深入讨論這個話題。)這些新的特征對處理偏差和方差都有所幫助。理論上,添加更多的特征将增大方差;然而當你發現這種情況時,加入正則化,這可以抵消方差的增加。
減少或者去除正則化(L2 正則化,L1 正則化,dropout):這将減少可避免偏差,但會增大方差。
修改模型架構(比如神經網絡架構)使之更适用于你的問題:這項技術将同時影響偏差和方差。
有一種方法并不能奏效:
添加更多的訓練資料:這項技術可以幫助解決方差問題,但它對于偏差通常沒有明顯的影響。