機器學習

模型容量(model capacity)

/ MOD-ul kuh-PASS-it-ee /

模型容量,衡量的是一個模型有可能表達出多複雜的模式——也就是它原始的靈活度。低容量的模型像一把直尺:有用,但它只能畫直線。高容量的模型像一團軟陶土,幾乎能被捏成任何形狀。容量隨著參數數量、模型形式的豐富程度等因素而增長。它在任何訓練發生之前,就為「這個模型能學到什麼」定下了上限。

容量正是那兩種經典失敗模式背後的旋鈕。如果容量相對於問題太低,模型就沒法把自己彎到足以貼合真正規律的程度,於是欠擬合——直尺畫不出曲線。如果容量相對於你手裡的資料太高,模型就有足夠的靈活度把訓練例子連同雜訊一起背下來,於是過擬合——陶土留下了每一個指紋的印記。恰當的容量,要同時與問題的複雜度和手頭資料的多少相匹配。

兩點誠實的提醒。其一,容量是潛力,不是成就:一個高容量模型「能夠」擬合複雜模式,但只有良好的訓練和足夠的資料,才讓它真的去擬合。其二,容量越大並不就越好。更大的模型訓練和執行都更費錢,在小資料上更容易過擬合,也更難解釋。目標是「容量足夠抓住真正的訊號,但不多一分」——儘管在用海量資料訓練海量模型的今天,這條線究竟劃在哪兒,已經變得相當微妙。

試著只用 20 個資料點去學一個帶彎的模式。一條直線(極小容量)完全錯過了那道彎——欠擬合。一條 50 個參數的波浪線(極大容量)完美地蛇行穿過全部 20 個點,卻在點與點之間預測出一堆垃圾——過擬合。一條容量恰好夠用的平緩曲線,抓住了趨勢,也泛化得開。

容量定下上限;資料和訓練決定你是否漂亮地夠到它。

容量說的是模型「能表達什麼」,而不是它實際表現得多好。一個模型可以有巨大的容量,卻因訓練不當或資料匱乏而表現糟糕——容量是工具箱的大小,而非活兒的品質。

又稱
capacityexpressivenessrepresentational power模型容量模型容量表达能力拟合能力