模式識別與機器學習(一)——緒論、多項式擬合例子 1.1 緒論

1.1 緒論

內容對應PRML書1.1節部分。

多項式擬合例子

在這個例子中,假設我們有兩個變量x, t,它們滿足如下關係:
t=sin(2\pi x)+\epsilon
其中\epsilon是一個均值爲0、標準差爲0.3的高斯噪聲。我們首先在[0,1]區間內等間距地產生了10個點\mathbf{x}=(x_1,...,x_{10})^T,接着根據如上的關係爲這10個點得到一組對應的目標函數值 \mathbf{t}=(t_1,...,t_{10})^T

這種數據產生方式符合大部分現實世界中的數據集的性質,即產生樣本時既包含潛在的規律,又伴隨着隨機噪聲。這些隨機噪聲的產生原因可能是某種內在的隨機性,也可能是某種未被觀測到的因素。我們的目標是根據這 10 個點構成的訓練集 \mathcal{D}=\{(x_1,t_1),...,(x_{10},t_{10})\} 調整模型的參數來擬合目標函數sin(2\pi x),然後用學習到的模型對新的樣本 \hat{x} 預測其對應的 \hat{t}

線性模型

在這個問題中,我們將使用一個多項式曲線來擬合真實目標函數:
y(x,\mathbf{w})=\sum_{j=0}^Mw_jx^j
其中 \mathbf{w}=\{w_0,...,w_M\}稱爲該多項式的係數,x^j 表示 xj 次冪,M稱爲多項式的階。線性模型的優點是既可以表示複雜的曲線,又具有解析解。
我們引入一個誤差函數(error function)來衡量模型在一個數據集上的表現,通過最小化訓練誤差函數來找到線性模型的最佳參數值。線性迴歸問題中,最常用的誤差函數就是平方和誤差(sum of squares error)
E(\mathbf{w})=\frac{1}{2}\sum_{n=1}^N \{y(x_n,\mathbf{w})-t_n\}^2

模型複雜度

在確定了模型的參數後,我們還需要確定多項式的階 M,有時我們也把它叫做模型複雜度(model complexity)。M 的值越小,可以表示的曲線越簡單,擬合能力也越弱;M 的值越大,可以表示的曲線就越豐富,擬合能力也越強。那麼 M 是不是越大越好呢?我們來看下面幾張圖:

從圖中我們看到,當 M=0M=1 時多項式變爲直線,不足以刻畫訓練集中的非線性關係,這種現象稱爲欠擬合(under-fitting);當 M=9 時,我們發現擬合曲線恰好經過訓練集的所有點,雖然此時訓練集上的誤差爲0,但是曲線劇烈震盪,泛化性很差,這種現象稱爲過擬合(over-fitting);當 M=3 時,我們發現曲線的擬合效果是最好的。因此,模型複雜度並不是越高越好,針對一個問題我們要選擇合適的模型複雜度以獲得良好的泛化能力,選擇適宜模型複雜度的過程稱爲模型選擇(model selection)

泛化能力定量評估

由於我們事先知道數據是如何產生的,因此我們可以額外再生成若干個樣本點作爲測試集來定量描述M的變化對於模型泛化能力的影響。當數據規模 N 增加時,平方和誤差 E(\mathbf{w}) 也隨之增加,這爲公平比較不同規模數據集的誤差帶來了難度。爲了便於比較不同規模數據集上的誤差,我們定義均方根誤差(root-mean-square error,RMSE):
E_{RMS}=\sqrt{2E(\mathbf{w})/N}
通過求平均,我們可以在同一基準比較不同的數據集上的誤差;開根號後的值可以理解爲目標變量的平均偏差。 具體地,我們將產生100個測試樣本點,並計算當 M 取不同的值時,測試集上的誤差。

從圖中我們可以看出,當 M 的取值範圍爲 02 時,測試集的誤差較高,這是因爲此時的模型還不夠靈活,不足以刻畫 sin(2\pi x) 這種非線性關係;當 M 的取值範圍爲 38 時,測試集誤差較低,泛化能力最好;當 M=9 時,我們發現訓練集上的誤差爲0,這是因爲我們的模型剛好有10個自由度 \{w_0,w_1,...,w_{9}\},因此可以被調整到剛好經過這 10 個點,但這也導致了模型參數被過度調整以擬合樣本中的噪聲,作爲後果,模型在測試集上的誤差與訓練集上的表現相去甚遠,此時模型發生了過擬合。我們可以輸出 M 爲不同值時的模型參數:

可以看到,正是由於係數的數量級很高引起了曲線的劇烈震盪。

防止過擬合

過擬合是機器學習中普遍存在的問題,如何解決過擬合就成了機器學習的一個重要的研究熱點。這裏介紹兩種結局過擬合的方法,第一種方法是增加訓練數據量,第二種方法是正則化(regularization)。

增加數據量

增加數據量可以有效防止過擬合。從下圖我們可以看到,對已⼀個給定的模型複雜度,當數據集的規模增加時,過擬合問題變得不那麼嚴重。另⼀種表述⽅式是,數據集規模越⼤,我們能夠⽤來擬合數據的模型就應該越複雜 。

但是實際中我們不得不根據可得到的訓練集的規模限制參數的數量,即根據待解決的問題的複雜性來選擇模型的複雜性 。
在後來我們會看到,尋找模型參數的最⼩平⽅⽅法代表了最⼤似然(maximum likelihood),並且過擬合問題可以被理解爲最⼤似然的⼀個通⽤屬性。通過使⽤⼀種貝葉斯(Bayesian)⽅法,過擬合問題可以被避免。我們將會看到,從貝葉斯的觀點來看,對於模型參數的數量超過數據點數量的情形,沒有任何難解之處。實際上,⼀個貝葉斯模型中,參數的有效(effective)數量會⾃動根據數據集的規模調節。但是現在,繼續使⽤當前的⽅法還是很有⽤的。繼續來看。

正則化

當我們沒辦法獲取更多的數據時,就需要限制模型的複雜度了。具體的做法是給目標函數E(\mathbf{w})加上一個L2罰項以限制係數的數量級:
\widetilde{E}(\mathbf{w})=\frac{1}{2}\sum_{n=1}^N \{y(x_n,\mathbf{w})-t_n\}^2+\frac{\lambda}{2} \mathbf{w}^T\mathbf{w}

其中 \mathbf{w}^T\mathbf{w}=w_0^2+w_1^2+...+w_M^2\lambda>0 用於控制平方和誤差與正則項的相對重要性。一般來說我們會把正則項中的 w_0^2 去掉,這樣做的原因是使得結果不依賴於目標變量的原點。這樣的技術在統計學中稱爲shrinkage,上面的目標函數是其中的一種特殊情況,稱爲嶺迴歸(ridge regression),在神經網絡中這樣的技術被叫作權重衰減(weight decay)。下面幾張圖分別爲我們展示了正則項係數 \lambda 的不同取值對結果曲線的影響:

對於 M=9 時,不同的 \lambda 影響如下:

\ln\ \lambda=-\infty 時,即 \lambda=0 ,對應沒有正則化的線性迴歸,我們可以發現輸出的模型參數與線性迴歸基本一致;當ln\ \lambda = -18時,過擬合現象減輕了許多;而當\ln \ \lambda=0時,\lambda=1 在本例中這個正則化係數太大,導致模型欠擬合。總的來說,隨着正則係數的增加,參數的數量級逐漸衰減,直至趨近於0。

參考文獻

B站機器學習白板推導
貝葉斯派理論例子
GithubMachineLearningNotes/tsyw

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章