over-fitting、under-fitting 與 regularization


機器學習中一個重要的話題便是模型的泛化能力,泛化能力強的模型才是好模型,對於訓練好的模型,若在訓練集表現差,不必說在測試集表現同樣會很差,這可能是欠擬合導致;若模型在訓練集表現非常好,卻在測試集上差強人意,則這便是過擬合導致的,過擬合與欠擬合也可以用 Bias 與 Variance 的角度來解釋,欠擬合會導致高 Bias ,過擬合會導致高 Variance ,所以模型需要在 Bias 與 Variance 之間做出一個權衡。

過擬合與欠擬合

使用簡單的模型去擬合復雜數據時,會導致模型很難擬合數據的真實分布,這時模型便欠擬合了,或者說有很大的 Bias,Bias 即為模型的期望輸出與其真實輸出之間的差異;有時為了得到比較精確的模型而過度擬合訓練數據,或者模型復雜度過高時,可能連訓練數據的噪音也擬合了,導致模型在訓練集上效果非常好,但泛化性能卻很差,這時模型便過擬合了,或者說有很大的 Variance,這時模型在不同訓練集上得到的模型波動比較大,Variance 刻畫了不同訓練集得到的模型的輸出與這些模型期望輸出的差異。1模型處於過擬合還是欠擬合,可以通過畫出誤差趨勢圖來觀察。若模型在訓練集與測試集上誤差均很大,則說明模型的 Bias 很大,此時需要想辦法處理 under-fitting ;若是訓練誤差與測試誤差之間有個很大的 Gap ,則說明模型的 Variance 很大,這時需要想辦法處理 over-fitting。

353956-20160105204719403-358128731

一般在模型效果差的第一個想法是增多數據,其實增多數據並不一定會有更好的結果,因為欠擬合時增多數據往往導致效果更差,而過擬合時增多數據會導致 Gap 的減小,效果不會好太多,多以當模型效果很差時,應該檢查模型是否處於欠擬合或者過擬合的狀態,而不要一味的增多數據量,關於過擬合與欠擬合,這里給出幾個解決方法。

解決欠擬合的方法:

    • 增加新特征,可以考慮加入進特征組合、高次特征,來增大假設空間;
    • 嘗試非線性模型,比如核SVM 、決策樹、DNN等模型;
    • 如果有正則項可以較小正則項參數 $\lambda$.
    • Boosting ,Boosting 往往會有較小的 Bias,比如 Gradient Boosting 等.

解決過擬合的方法:

    • 交叉檢驗,通過交叉檢驗得到較優的模型參數;
    • 特征選擇,減少特征數或使用較少的特征組合,對於按區間離散化的特征,增大划分的區間。
    • 正則化,常用的有 $L_1$、$L_2$ 正則。而且 $L_1$ 正則還可以自動進行特征選擇。
    • 如果有正則項則可以考慮增大正則項參數 $\lambda$.
    • 增加訓練數據可以有限的避免過擬合.
    • Bagging ,將多個弱學習器Bagging 一下效果會好很多,比如隨機森林等;

交叉檢驗

當數據比較少是,留出一部分做交叉檢驗可能比較奢侈,還有只執行一次訓練-測試來評估模型,會帶有一些隨機性,這些缺點都可以通過交叉檢驗克服,交叉檢驗對數據的划分如下:

1

交叉檢驗的步驟:

1)將數據分類訓練集、驗證集、測試集;

2)選擇模型和訓練參數;

3)使用訓練集訓練模型,在驗證集中評估模型;

4)針對不同的模型,重復2)- 3)的過程;

5)選擇最佳模型,使用訓練集和驗證集一起訓練模型;

6)使用測試集來最終測評模型。

關於正則

在模型的損失函數中引入正則項,可用來防止過擬合,於是得到的優化形式如下:

\[\mathbf{w}^*=arg\min_{\mathbf{w}} L(y,f(\mathbf{w},\mathbf{x})) + \lambda \Omega (\mathbf{w})\]

這里 $\Omega(w)$ 即為正則項, $\lambda$  則為正則項的參數,通常為 $L_p$ 的形式,即:

\[  \Omega(w) = ||w||^p \]

實際應用中比較多的是 $L_1$ 與 $L_2$ 正則,$L_1$ 正則是 $L_0$ 正則的凸近似,這里 $L_0$ 正則即為權重參數 $\mathbf{w}$ 中值為 0 的個數,但是求解 $L_0$ 正則是個NP 難題,所以往往使用 $L_1$ 正則來近似 $L_0$ , 來使得某些特征權重為 0 ,這樣便得到了稀疏的的權重參數 $\mathbf{w}$。關於正則為什么可以防止過擬合,給出三種解釋:

正則化的直觀解釋

對於規模龐大的特征集,重要的特征可能並不多,所以需要減少無關特征的影響,減少后的模型也會有更強的可解釋性;$L_2$ 正則可以用來減小權重參數的值,當權重參數取值很大時,導致其導數或者說斜率也會很大,斜率偏大會使模型在較小的區間里產生較大的波動。加入$L_2$ 正則后,可使得到的模型更平滑,比如說下圖所示曲線擬合,展示了加入$L_2$ 正則與不加 $L_2$ 的區別:1

正則化的幾何解釋

我們常見的正則,是直接加入到損失函數中的形式,其實關於 L1 與 L2 正則,都可以形式化為以下問題:

\begin{aligned}
L_1: \min_{\mathbf{w}} L(y,f(\mathbf{w},\mathbf{x})) \ \ \ \ &s.t. ||\mathbf{w}||_2^2 <C \\
L_2: \min_{\mathbf{w}} L(y,f(\mathbf{w},\mathbf{x})) \ \ \ \ &s.t. ||\mathbf{w}||_1^1 <C \\
\end{aligned}

至於兩種形式為什么等價呢,運用一下拉格朗日乘子法就好,這里也即通常說的把 $\mathbf{w}$ 限制在一個ball 里,對於 $l_p –ball $ 的形式如下圖所示:  

main-qimg-6ead386ee2cd2fe0ca7f2a44aca7fc1e

對於 $L_1$ 與 $L_2$ 正則,分別對應$l_1 –ball $ 與 $l_2 –ball $ ,為了方便看,這里給出 $l_1 –ball $ 與 $l_2 –ball $ 在二維空間下的圖:\begin{aligned}
l_1-ball:& \ |\mathbf{w}_1|+|\mathbf{w}_2| <C \\
l_2-ball:& \ \mathbf{w}_1^2+\mathbf{w}_2^2 <C
\end{aligned}
下圖中的等高線即為模型的損失函數,上式中的兩個約束條件則變成了一個半徑為 $C$ 的 norm-ball 的形式,等高線與 norm-ball 相交的地方即為最優解:

1

可以看到,$l_1-ball$ 和每個坐標軸相交的地方都有“角”出現,而目標函數除非位置非常好,大部分時候都會在角的地方相交。注意到在角的位置即導致某個維度為 0 ,這時會導致模型參數的稀疏,這個結論可自然而然的推廣到高維的情形;相比之下,$l_2-ball$ 就沒有這樣的性質,因為沒有角,所以第一次相交的地方出現在具有稀疏性的位置的概率就變得非常小了。

正則化的貝葉斯解釋

正則化的另一種解釋來自貝葉斯學派,在這里可以考慮使用極大似然估計 MLE 的方式來當做損失函數,對於 MLE 中的參數 $\mathbf{w}$ ,為其引入參數為 $\alpha$  的先驗,然后極大化 likelihood $\times$ prior,便得到了 MLE 的后驗估計 MAP 的形式:

\begin{aligned}
MLE: &L(w) = p(y|x, w)  \\
MAP: &L(w) = p(y|x , w)p( w|\alpha)
\end{aligned}

對於 $L_2$ 正則,是引入了一個服從高斯分布的先驗,而對於 $L_1$  正則,是引入一個拉普拉斯分布的先驗,兩個分布分別如下:

\begin{aligned}
Gussian : &p(x,\mu,\sigma) = \frac{1}{\sqrt{2\pi}\sigma}exp\left (-\frac{(x-\mu)^2}{2\sigma^2}  \right ) \\
Laplace: &p(x,\mu,b) = \frac{1}{2b }exp\left (-\frac{|x-\mu|}{b}  \right )
\end{aligned}

兩種分布的概率密度的圖形如下所示:

1

下面為參數 $\mathbf{w}$ 引入一個高斯先驗,即 $\mathbf{w} \sim \mathcal{N}(0, \alpha^{-1} I) $:

\[p(\mathbf{w}|\alpha) =  \mathcal{N}(\mathbf{w}|0, \alpha^{-1}\mathbf{I}) = \left (\frac{\alpha}{2 \pi} \right )^{n/2}\exp(-\frac{\alpha}{2}\mathbf{w}^T\mathbf{w})\]

這里的 $n$ 即為參數 $\mathbf{w}$ 的維度,所以得到其 MAP 形式為:
\begin{align*}
L(\vec w) & = p(\vec{y}|X;w)p(\vec w)\\
& = \prod_{i=1}^{m} p(y^{(i)}|\mathbf{x}^{(i)};  \mathbf{w})p(  \mathbf{w} | \mathbf{0} ,a ^{-1}\mathbf{I})\\
& = \underbrace{\prod_{i=1}^{m} \frac{1}{\sqrt{2\pi}\delta}\exp\left( -\frac{(y^{(i)} - \mathbf{w}^T\mathbf{x}^{(i)})^2}{2\delta^2}  \right)}_{\mathbf{likelihood}} \underbrace{ \frac{\alpha}{2\pi}^{n/2} \exp\left( -\frac{  \mathbf{w}^T  \mathbf{w}}{2\alpha}  \right)}_{\mathbf{prior}}
\end{align*}

其 $\log$ 似然的形式為:

\begin{align*}
\log L(w) & = m \log \frac{1}{\sqrt{2\pi}\delta}+ \frac{n}{2} \log \frac{a}{2\pi} - \frac{1}{\delta^2}\cdot \frac{1}{2} \sum_{i=1}^{m} (y^{(i)} - \mathbf{w}^T\mathbf{x}^{(i)})^2 - \frac{1}{\alpha}\cdot \frac{1}{2} \mathbf{w}^T\mathbf{w}\\
\Rightarrow & \mathbf{w_{MAP}} = \arg \underset{\mathbf{w}}{\min} \left( \frac{1}{\delta^2}\cdot \frac{1}{2} \sum_{i=1}^{m} (y^{(i)} - \mathbf{w}^T\mathbf{x}^{(i)})^2 + \frac{1}{\alpha}\cdot \frac{1}{2} \mathbf{w}^T\mathbf{w} \right) \end{align*}

這便等價於常見的 MAP 形式:

\[J(\mathbf{w}) = \frac{1}{N} \sum_i(y^{(i)} - \mathbf{w}^T\mathbf{x}^{(i)})^2 + \lambda ||\mathbf{w}||_2\]

同理可以得到引入拉普拉斯的先驗的形式便為 $L_1$ 正則.具體的計算可見參考文獻$^8$

L1 產生稀疏解的數學解釋

對於樣本集合 $\left \{ (\mathbf{x}_{i},y_{i}) \right \}_{i=1}^n $, 其中 $x_i \in \mathbb{R} ^p$ ,換成矩陣的表示方法:

\[X \cdot  \mathbf{w}= \mathbf{y}\]

上式的含義即為求解參數 $\mathbf{w}$ ,當  $p>n$ 時即數據量非常少,特征非常多的情況下,會導致求解不唯一性,加上 $L_1$ 約束項可以得到一個確定的解,同時也導致了稀疏性的產生, $L_1$ 正則的形式如下:

\[L(\mathbf{w}) = f(\mathbf{w}) + \lambda ||\mathbf{w}||_1 \]

這里損失函數采用了均方誤差損失,即:

\[f(\mathbf{w}) =||X \cdot  \mathbf{w}- \mathbf{y}||^2\]

有唯一解的 $L_1$ 正則是一個凸優化問題,但是有一點,是不光滑的凸優化問題,因為在尖點處的導數是不存在的,因此需要一個 subgradient 的概念:

對於在 $p$ 維歐式空間中的凸開子集 $U$ 上定義任意的實值函數 $f: U \rightarrow \mathbb{R}$ , 函數 $f$  在點 $w_0 \in U$ 處的 subgradient 滿足:

\[f(\mathbf{w}) – f(\mathbf{w}_0) \ge g \cdot (\mathbf{w} – \mathbf{w}_0)\]

$g$ 構成的集合即為再點 $\mathbf{w}_0$ 處的 subgradient 集合,如下圖右的藍色線所示:

subgrad

比如說對於一維情況,$f(w) = |w|$ ,該函數在 0 點不可導,用 subgradient 可以將其導數表示為:

\[f'(w) =\left \{ \begin{aligned}
\left \{ 1 \right \},\ \ \ \ \ &if \  w  > 0\\
[-1,1], \ \ &if \ w  = 0\\
\left \{ -1 \right \}, \ \ \ &if \  w  < 0
\end{aligned}\right .\]

接下來對損失函數求導即可:

\begin{aligned}
&\nabla_{w_j}L(\mathbf{w}) = a_jw_j - c_j + \lambda \cdot \mathrm{sign}(w_j) \\
\\
&\mathbf{where}: \\
& \ \ \ \ \ \ \ \ \ \ \ a_j = 2 \sum_{i=1}^nx_{ij}^2 \\
& \ \ \ \ \ \ \ \ \ \ \  c_j = 2 \sum_{i=1}^nx_{ij}(y_i - w_{\neg j}^T x_{i \neg j})
\end{aligned}

因為 $L_1$ 正則的形式是根據拉格朗日乘子法得到的,拉格朗日法則需要滿足 KKT 條件,即 $\nabla_{w_j}L(w) = 0$ ,因此另導數得 0 ,並且使用 subgradient 的概念,可以得到 $w_j$ 在尖點的導數取值范圍:

\[\nabla_{w_j}L(\mathbf{w}) = a_jw_j - c_j + \lambda \cdot \mathrm{sign}(w_j)  = 0 \]

利用 可得如下的形式:

\[a_j w_j- c_j   \in \left \{ \begin{aligned}
\left \{ \lambda \right \}, \   if \  w_j  < 0 \\
\left [-\lambda, \lambda \right ], \   if \  w_j  = 0 \\
\left \{ -\lambda \right \},  \ if \  w_j  > 0
\end{aligned} \right .\]

分幾下幾種情況:

1)  若 $c_j < -\lambda$ ,則 $c_j$ 與殘差負相關,這時的 subgradient 為 0即: $\hat{w}_j = \frac{c_j + \lambda}{a_j} < 0$

2)  若 $c_j \in [-\lambda ,+ \lambda]$,此時與殘差弱相關,且得到的 $\hat{w}_j = 0$

3)  若 $c_j > \lambda$, 此時 $c_j$ 與殘差正相關, 且有$\hat{w}_j = \frac{c_j – \lambda}{a_j} > 0$ 

綜上可得:

\[\hat{w}_j  = \left \{ \begin{aligned}
(c_j+ \lambda)/a_j, \ \ &if \  c_j  < - \lambda \\
0 \ \ \ \ \ \ \   ,  \ \ &if \  c_j  \in[- \lambda,\lambda]  \\
(c_j- \lambda)/a_j, \ \ &if \  c_j  > \lambda
\end{aligned} \right .\]

可見 $c_j$ 的取值正是導致稀疏性的由來,下圖可以見到 $c_j$ 與 $w_j$ 的關系:

2

參考文獻:

1.http://www.cnblogs.com/ooon/p/5522957.html

2.http://breezedeus.github.io/2014/11/15/breezedeus-feature-processing.html 特征組合

3.http://docs.aws.amazon.com/machine-learning/latest/dg/model-fit-underfitting-vs-overfitting.html

4.http://blog.csdn.net/vividonly/article/details/50723852

5.https://www.quora.com/What-is-the-difference-between-L1-and-L2-regularization  Quora 上的回答

6.http://freemind.pluskid.org/machine-learning/sparsity-and-some-basics-of-l1-regularization/

7.http://blog.csdn.net/zouxy09/article/details/24971995/

8.http://charlesx.top/2016/03/Regularized-Regression/ 正則化的 貝葉斯解釋,另附詳細的 MAP 計算

9.PRML MLAPP(P432,P433)

10.http://blog.csdn.net/myprograminglife/article/details/43015835 對 mlapp 的翻譯

11.http://www.di.ens.fr/~fbach/mlss08_fbach.pdf very nice ppt


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM