機器學習

過擬合(overfitting)

過擬合,是指一個學習模型把練習題鑽研得太過入迷,結果不是理解了它們,而是把它們整個背了下來——連其中的怪癖、雜訊和偶然的巧合也一併背走。想像一個學生把歷年考卷一字不差地死記:問到原題,他對答如流;可只要換掉一個數字,他就懵了。模型在練習上拿了滿分,到真刀真槍時卻敗下陣來。

這之所以要緊,是因為機器學習的全部意義,正在於它能在從未見過的資料上表現良好——也就是「泛化」。一個過擬合的模型,在訓練資料上看著無比聰明,換個場合卻令人失望,所以它那些漂亮的練習成績不過是海市蜃樓。補救之道是別讓模型抓得太死:餵給它更多、更多樣的例子,讓它保持簡單,或者施加正則化——一種溫和的懲罰,勸它別去追逐資料裡每一道細微的皺褶。

一個常見的誤解:過擬合並不等於模型「答錯了」。恰恰相反,過擬合的模型對訓練集是「太對了」——它把答案都背到了心裡。它的孿生毛病叫欠擬合:模型太過粗糙,連真正的規律都抓不住。好的學習,正是在這兩者之間穿針引線。

一個只在含有「奈及利亞」字樣的郵件上訓練過的垃圾郵件過濾器,會把同事在當地度假時寄來的每封信都標成垃圾郵件——它背下了一條線索,卻沒學會垃圾郵件究竟是什麼。

記住的是訓練資料裡的巧合,而不是真正的規律。

這個詞源自統計學:一條為了穿過每一個資料點而拼命扭曲的曲線,對樣本「擬合」得過了頭——它描的是雜訊,而不是訊號。在今天的深度學習中,常用的防範手段是正則化、dropout(隨機丟棄)和提前停止訓練,而這一切都由一份模型絕不允許背誦的「驗證集」在旁監督。

又稱
overfithigh variance过拟合過度擬合overtraining