1.1 Example:Polynomial Curve Fitting 多項式曲線擬合_PRML模式識別與機器學習讀書筆記


  從一個回歸問題開始:給定一個real-valued input variable \(x\),通過這個observation預測a real-valued target variable \(t\) 。

  本節將討論一個簡單的曲線擬合例子,這個例子將貫穿整章用於梳理一些重要的機器學習概念。

  training set:

    \(N\)個obeservations:       \(\mathbf{x}\equiv(x_1,\ldots,x_N)^T\)

    target values:      \( \mathbf{t}\equiv(t_1\ldots,t_N)^T\)

  training set由函數 \(sin(2\pi x)\)生成,同時為每個\(t_i\)加入高斯分布的noise,加入noise可以更貼近真實的數據,這樣實驗數據既有潛在的規律,同時也保留了真實數據中的一些隨機噪聲。下圖顯示了10個樣本數據, \(\mathbf{x}\) 的取值空間為[0,1] :

  

   我們的目標就是:給定一個新的input variable \(\widehat{x}\),我們能夠預測出對應的target value \(\widehat{t}\). 因此我們需要從training set中找出隱含的函數 \(sin(2\pi x)\) ,但這是很難實現的:

    1. 樣本數小

    2. 樣本目標值存在noise

 

  后面我們會使用概率從 \(\widehat{t}\) 不確定的角度以及決策論的方法處理該問題,這里我們選擇一個簡單的方式,polynomial function 多項式函數:   

    \[ y(x,\mathbf{w})=w_0+w_1x+w_2x^2+\ldots+w_Mx^M=\sum_{j=0}^{M}w_jx^j \]

    \(M\) :  多項數的次數

    \(\mathbf{w}\) :  參數\(w_0,\ldots,w_M\) 的向量形式

  多項式函數 \(y(x,\mathbf{w})\) 對於 \(x\) 不是線性的,但是對於系數 \(\mathbf{w}\) 是線性的,類似於多項式函數這種對於未知參數是線性的函數,被稱為linear function 線性模型。

  我們需要通過多項式擬合training data 確定系數的值,這可以通過最小化error function 錯誤函數的方法達到我們的目標。錯誤函數用於衡量預測值與真實值之間的誤差,一個廣泛使用的錯誤函數是預測值與真實值誤差平方和 :

\[ E(\mathbf{w})=\frac{1}{2}\sum_{n=1}^{N}\{y(x_n,\mathbf{w})-t_n\}^2  \]

  整個函數和因子1/2 在貝葉斯理論中有對應的含義,后面討論。當且僅當 \(y(x,\mathbf{w}\) 與training data完全擬合及函數曲線通過所有樣本點時該錯誤函數值為 0 。

  曲線擬合的問題就轉換為找到合適系數 \(\mathbf{w}\) 使得損失函數 \( E(\mathbf{w})\) 盡量小,注意到該損失函數是 \(\mathbf{w}\) 的二次型,所以必存在\( \mathbf{w}^*\) 使得損失函數值最小。

  另外一個問題就是如何選擇多項式的order次數\(M\) :model comparison/model selection問題。下圖是不同\(M\) 值的曲線擬合:

                       M=0,1:  under-fitting 欠擬合

    M=3   恰當

    M=9 時,過擬合

     如何來衡量過擬合?Root-mean-square(RMS)error 均方根誤差:

    \[ E_{RMS}\, =\, \sqrt{2E(\mathbf{w}^*)/N}\]

    除數N可以讓我們比較在不同大小test sets上的\(E_{RMS}\)。這樣我們就可以用\(E_{RMS}\)衡量不同\(M\)的在test set上的表現:

  隨着\(M\) 增大,\(E_{RMS}\)在training set和test set上值逐漸減小,當\(M=9 \)時,\(E_{RMS}OfTraining=0 \),說明完全擬合,但此時Test set上的值就變的很大了,說明過擬合了。

  按道理來說,次數大的多項式包含了次數小的多項式,這樣\(M\)越大應該產生更好的結果;同時考慮到數據生成函數 \(sin(2\pi x)\) 的冪級數展開包含所有的次數,因此按理來說隨着\(M\)增大,預測結果的准確性應該單調上升才對。我們來看一下,不同的\(M\)最后得到的\( \mathbf{w}^*\) 值:

  

  可以看到隨着 \(M\) 增大,\( \mathbf{w}^*\) 取值范圍也越來越大,同時曲線的震盪幅度也非常大(Figure 1.4),以此來更好的擬合training data。事實上更大M的多項式越來越多的是去迎合target values上的random noise去了。

  另外一個有趣的事情是隨着training data的增大,在同一\(M\)值下過擬合的問題會減少,也就是說數據量越大,更適合 more complex/flexible 的模型。經驗表明數據量的大小最少是參數大小的數倍(5或10),下圖是\(M=9\)時,樣本數分別為為15個和100個時曲線的擬合情況:

  

  但是參數的多少並不是衡量模型復雜度最合適的度量,Chapter 3會討論到。

  根據training  set 的大小來決定模型參數多少並不是明智的,應該根據問題的復雜程度來決定。后面我們會提到采用最小二乘法來解決模型參數問題。使用貝葉斯方法我們可以避免over-fitting問題,即使模型參數的數量遠大於training set的大小。

  我們想在有限的training data上使用更復雜模型但是又不希望看到太多的overfitting:采用regularization 正則化,引入一個懲罰因子,阻止系數值變得過大,最簡單的懲罰因子是使用所有系數的平方和,修改前面的代價函數,加入懲罰因子:

  \[ \tilde{E}(\mathbf{w})=\frac{1}{2}\sum_{n=1}^{N}\{y(x_n,\mathbf{w})-t_n\}^2 \, + \, \frac{\lambda}{2}\| \mathbf{w} \|^2  \]

  其中,\( \| \mathbf{w}\|^2 \equiv \mathbf{w}^T\mathbf{w}=w_0^2+w_1^2+ \cdots +w_M^2 \),系數 \( \lambda \) 控制懲罰因子的權重。\( w_0\) 通常不被包含在正則化項中,或者采用單獨的正則化系數(5.5.1會討論)。下圖顯示了\(M=9\)時,在不同的  \( \lambda \) 值下的曲線:

 

  可以看到,\( \mathbf{ln}\, \lambda=-18 \) 時(即\( \lambda=e^{-18} \)),曲線已經比較接近原函數了,overfitting問題不明顯了; \( \mathbf{ln}\, \lambda=0 \)(即\( \lambda=1 \)),曲線欠擬合,說明正則化過了。下表是\(M\)=9時,在不同的  \( \lambda \) 值下得到的 \( \mathbf{w^*}\) 值,顯示了正則化有效的控制了參數值的變化范圍:

  另外我們也可以看看 \( E_{RMS}\)隨着\(\lambda \) 是如何變化的:

  

  \(\lambda =0\) 時,過擬合嚴重,隨着懲罰因子的介入,Test set上的\( E_{RMS}\) 明顯好轉,而Training set上的\( E_{RMS}\) 稍有提升;當\(\lambda>e^{-25} \)時, 兩個數據集上的\( E_{RMS}\)  都同時上升,說明懲罰因子介入太深,模型已經顯現出欠擬合。

  模型復雜度問題會在1.3節中討論,采用本節最小化錯誤函數方法,我們也應該找到恰當的函數復雜度(恰當的次數\(M\))。可以利用前面討論的方法,將可用的數據分為兩部分,一部分用來訓練模型(得到\( \mathbf{w^*} \)) ,另外一部分為alidation set/hold-out set,用於優化模型復雜度(\( M \mbox{或}\lambda \)),可以如Figure 1.8 所示,計算不同的\( M\) 和 \( \lambda \) 下的\( E_{RMS}\) 找到一個較好的模型。很多情況下,這是比較浪費training set的。

  下一節將主要介紹的概率論的一些基本思想和方法,是本書的基礎。概率論方法提供了理論基礎和更本質的方法去看待機器學習問題,同時幫助我們獲得更加復雜而且精細的模型。

 

 

 


免責聲明!

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



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