從模型複雜度角度來理解過擬合現象

無風聽海發表於2022-04-26

一、什麼是模型複雜度

機器學習是通過學習訓練集的資料從而得到具體的模型,最終達到預測未知資料的能力;這就涉及到模型對訓練資料的擬合能力了;從數理統計的角度來看,不同的訓練資料集會有不同的概率分佈規律;只有我們的模型的具有表達訓練集的資料分佈規律的能力才能訓練得到一個好的模型,而模型的這個能力就是模型複雜度;

二、從泰勒中值定理看模型複雜度

對於一些比較複雜的函式,為了便於計算和研究,往往希望將其用一些簡單的函式來近似表達。多項式是最為簡單的一類函式,它只要對自變數進行有限次的加、減、乘三種算術運算,就能求出其函式值。因此多項式經常被用於近似地表達函式,這種近似表達在數學上稱為多項式逼近。

英國數學家泰勒在多項式逼近方面做出了開創性貢獻。 他的研究結果表明:具有n+1階導數的函式在一個點的鄰域內的值可以用函式在該點的函式值及各階導數值組成的n次多項式近似表達,即泰勒中值定理。

泰勒中值定理

如果函式f(x)在含有x0的開區間(a,b)內具有直到n+1階的導數,則對任一x∈(a,b),有

\[f(x)=f\left(x_{0}\right)+f^{\prime}\left(x_{0}\right)\left(x-x_{0}\right)+\frac{f^{\prime \prime}\left(x_{0}\right)}{2 !}\left(x-x_{0}\right)^{2}+\cdots+\frac{f^{(n)}\left(x_{0}\right)}{n !}\left(x-x_{0}\right)^{n}+R_{n}(x) \]

其中

\[R_{n}(x)=\frac{f^{(n+1)}(\xi)}{(n+1) !}\left(x-x_{0}\right)^{n+1} \]

所有光滑的函式影像都可以使用泰勒中值定理以任意精度去逼近模擬,展開成泰勒多項式的形式後,我們就可以看到一個模型複雜程度由以下兩個因素決定了

● 模型多項式係數數量的多少,係數越少,相應地多項式項數就越少,意味著模型函式影像的曲線形狀越簡單。
● 模型多項式係數數值的大小,係數越小,意味著該多項式項對結果影響越輕微,模型函式影像的曲線越平滑。

我們只有恰當地做好模型複雜度的權衡決策,才能令模型既能正確地識別樣本,又不至於過度複雜,學習到了屬於訓練集本身的特徵。

三、模型複雜度對資料擬合的影響

機器學習更加關注模型在未知資料上的泛化能力,而不僅僅是在訓練資料集上的擬合能力;雖然訓練集和測試集遵循統一資料生成分佈,理論上兩者的誤差的期望應該是一樣的,但是由於模型是基於訓練集進行訓練擬合的,所以一般情況下測試誤差要比訓練誤差大;為了得到一個更好模型,我們需要從以下兩方面進行努力

● 降低訓練誤差。
● 縮小訓練誤差和測試誤差的差距。

這兩個因素對應機器學習的兩個主要挑戰:欠擬合(underfitting)和過擬合(overfitting)。欠擬合是指模型不能在訓練集上獲得足夠低的訓練誤差,而過擬合是指訓練誤差和測試誤差之間的差距太大。

通過調整模型的複雜度,我們可以控制模型是否偏向於過擬合或者欠擬合。過於簡單的模型可能很難擬合訓練集。太複雜的模型可能會過擬合,因為記住了不適用於測試集的訓練集性質。

對於相同數量的訓練資料,隨著使用更復雜的模型,訓練誤差會逐步減少。但是測試誤差會經過一個最小值後開始上升。上升就是所謂的過擬合:機器從學習示例中學習了太多細節,並且忽視了我們要其完成的任務的一般性。它開始死記硬背地學習,而不是試圖從中提取規律。該曲線的最低點給出了我們應該選擇的模型的複雜度。

image

對於一個給定的模型,隨著訓練集數量的增加,訓練誤差(虛線)緩慢上升,而測試誤差(實線)緩慢下降。對於較簡單的小型模型(灰色線),曲線在較少的訓練數量上開始變得越來越近,並且越來越快,但是最終誤差是相當大的。對於比較複雜的大型模型(具有更多引數),兩條曲線開始逼近之前需要更多的示例。它們彼此靠近的速度較慢,但最終的誤差較小。測試誤差的兩條曲線相交。交點之前,優選小型模型;交點之後,大型模型更佳。

image

通過下邊一個簡單的示例,我們從整體上來感受一下;下邊圖中,P代表參與訓練的資料數量,D代表模型的複雜程度(代表多項式的最高次數),TrE代表訓練誤差,TsE代表測試誤差;

從圖中我們可以看到
隨著訓練資料集點數的增加,資料的分佈規律變的更加複雜;
隨著訓練資料集點數的增加,突破了簡單模型的表達能力,導致訓練誤差隨之增大,這就是欠擬合問題;
如果模型的複雜度太大,超過了訓練資料集的資料分佈的複雜度,會導致模型過度的解讀區域性的資料點,導致模型的訓練誤差為0,但是測試誤差增大,這就是過擬合問題;

image

四、使用正則化避免過擬合

正則化是避免過擬合的有效方式,是在訓練誤差上加一個正則化項(regularizer)或罰項(penalty term)。正則化項一般是模型複雜度的單調遞增函式,模型越複雜,正則化值就越大。比如,正則化項可以是模型引數向量的範數。

\[w^{*}=\underset{w}{\operatorname{argmin}} \sum_{i} L\left(y_{i}, f\left(x_{i}, w\right)\right)+\Omega(w) \]

其中,第1項是經驗風險,第2項是正則化項,λ≥0為調整兩者之間關係的係數。
正則化項可以取不同的形式。例如,迴歸問題中,損失函式是平方損失,正則化項可以是引數向量的L2範數:

\[w^{*}=\underset{w}{\operatorname{argmin}} \sum_{i} L\left(y_{i}, f\left(x_{i}, w\right)\right)+\frac{\lambda}{2}\|w\|^{2} \]

第1項的模型可能較複雜(有多個非零引數),這時第2項的模型複雜度會較大。正則化的作用是選擇訓練誤差與模型複雜度同時較小的模型。

具體為什麼可以直接通過新增一個正則化項可以實現控制模型複雜度,可以參考拉格朗日乘數法,一種計算條件極值的方式

在下邊的圖中,我們使用9階多項式加L2範數來擬合按照二次函式分佈的訓練資料;在左圖中,當λ非常大時,我們可以強迫模型學習到一個沒有斜率的函式。由於它只能表示一個常數函式,所以會導致欠擬合。在中間的圖中,取一個適當的λ時,學習演算法能夠用一個正常的形狀來恢復曲率。即使模型能夠用更復雜的形狀來表示函式,L2範數也鼓勵用一個帶有更小引數的更簡單的模型來描述它。在右圖中,當權重衰減趨近於0時,這個9階多項式會導致嚴重的過擬合。
image

相關文章