1. 程式人生 > >PRML之線性迴歸(Linear Models for Regression)

PRML之線性迴歸(Linear Models for Regression)

囉嗦兩句,PRML這本書是基於貝葉斯思想進行相關機器學習演算法的推導和講解。書上有詳細的公司推導,故LZ不做公式方面的讀書筆記記錄,來講講演算法遞進的邏輯關係。

在開始記錄線性迴歸模型學習之前,容我們閉目獨立思考兩個問題:①什麼是機器學習?②機器學習的本質問題是什麼?這兩個問題是伴隨著我們機器學習生涯常常出現,There are a thousand Hamlets in a thousand people's eyes,我可以“冒昧”的說一句一千個人眼中就有一千種對機器學習的理解吧。

在我看來機器學習(machine learning)重點在learning上,簡單來說,機器學習就是讓計算機(machine)

從大量的資料中學習到相關的規律和邏輯(learning),然後利用學習來的規律來預測以後的未知事物。而機器學習的本質問題是什麼呢?就是學習,如何學習,如何有效學習。通過資料集學習未知的最佳逼近函式,學習的 收斂性\界 等等都是描述這個學習到的函式效能到底如何。我們知道這樣的函式是多種多樣的,它可以是線性或非線性,連續或階躍....,甚至它們還能相互組合,那麼本質問題就是如何學習找到滿足條件的最佳逼近函式。

有了對機器學習的思考之後,我們開始探索一下基於貝葉斯理論的線性迴歸。

一.線性基函式模型

①迴歸模型最簡單的模型是輸入變數的線性組合:

但是這樣的形式w是線性的,同時x也是線性的。所以,存在極大的侷限性,這樣擬合出來的目標函式y只能是一個線性函式,在日常生活中不能很好的滿足資料體現出來的多樣性,所以有時不能很好的擬合數據展示的真實規律。為了擴充套件模型,將輸入利用非線性轉換,再進行線性組合,即w是線性的,x進行非線性轉換。形式如下:

常見的基函式選擇有①冪指數基函式,②高斯基函式,③sigmoid基函式 

二.模型求解

1.最大似然和最小二乘

誤差平方和可以定義為:

這裡t對應真實值,利用求駐點的方式求出W引數的值,得到W引數的值就得到了模型,可以做預測。但是這樣有有一個巨大的缺陷就是不能防止過擬合。隨著模型複雜度的不斷增高,誤差平方和會越來越小,但是模型的泛化能力並不能得到有效保障。如下圖(紅色是擬合曲線,綠色是真實曲線,點是帶噪聲的真實資料點)

最大似然法其本質和最小二乘法是一樣的。 

假定目標變數t是由函式y(x,w)給出,同時附加了高斯噪聲:

 其中ϵ 是⼀個零均值的⾼斯隨機變數,精度(⽅差的倒數)為 β 。因此,我們能得到一個關於t的高斯分佈,而t關於x的條件均期望就是t的預測值。

似然函式可以表示為: 

 利用最大似然方法求解w:

我們可以看出,最大化似然就是最小化 ED (w)和最小二乘法本質上是一致的。

2.損失函式加入正則化懲罰項

為解決過擬合的問題,統計機器學習常常做的事情是在平方和誤差損失函式中加入正則化項,此正則化項通過對模型複雜度進行控制(越複雜收到的懲罰越大)。形式如下:

這樣固然是能取到一定的效果,但是懲罰力度 λ是一個超引數,λ的設定影響到了模型的準確率。λ過小,不能有效防止過擬合;λ過大,會懲罰過重導致模型欠擬合。故,λ選擇又成了一個令人頭痛的問題。

為解決λ的選擇問題,提出了在訓練的時候單獨使用一部分資料驗證確定λ,但是這樣做在時間上就有了新的開銷。

3.貝葉斯線性迴歸

LZ理解的貝葉斯思想就是利用貝葉斯公式可以推匯出後驗概率正比於先驗概率x似然函式。根據似然函式確定先驗概率形式(共軛),然後給定一個基於人工經驗的先驗概率分佈,這樣的先驗概率能一定程度上指導訓練得到真實的資料分佈(如果沒有這樣的先驗概率。資料分佈是全部由訓練資料指導的,故容易出現過擬合 )

根據似然函式得到先驗概率分佈是高斯分佈,形式是:

推導得到後驗概率分佈形式:

其中, Φ是設計矩陣,

因為後驗概率是高斯分佈,所以w_{MAP}=m_{N}。如果我們考慮⼀個⽆限寬的先驗 S_0=\alpha^{-1}I,其中 α → 0 ,那麼後驗概率分
布的均值m_{N}就變成了的最⼤似然值 。類似地,如果 N = 0 ,那麼後驗概率分佈就變成了先驗分佈。這裡我們考慮一個先驗概率分佈為:

同樣,後驗概率依舊是高斯高斯分佈,其中:

可以輕鬆推匯出:

ln的功能是變乘為加,將似然函式乘先驗分佈變成了加和形式。這個時候形成三個部分,似然函式關於最小二乘的部分,先驗分佈關於w引數約束部分,以及兩個部分留下和w無關的常數項。這裡我們可以看出,將公式轉換一下最大後驗相當於最小化 :

 這裡\lambda =\frac{\alpha}{\beta}。所以,貝葉斯方法能夠有效的包含正則化部分,正則化的懲罰因子\lambda也不需要人工設定,它是由超參{\alpha},{\beta}確定的。但是,這裡任然存在一個令人頭痛問題的超參{\alpha},{\beta}是根據經驗設定的,要是設定的不合理,一樣會影響模型的準確性。

4.證據近似

既然我們是做機器學習的,我們就希望這種超參也能通過資料來確定,不同的資料出現時候,自適應的選擇合適的超引數{\alpha},{\beta}。貝葉斯不是經典的使用先驗概率來調節後驗概率嗎?那麼,就對超引數進行先驗估計。這裡,引入超先驗分佈

因為 {\alpha},{\beta}最可能的取值就是它們對應的後驗概率的尖峰位置\hat{\alpha},\hat{\beta},所以滿足下面關係:

根據貝葉斯定理可以得到 {\alpha},{\beta}的後驗概率:

這個公式就充分說明了我們需要達到的目的,用資料說話。當先驗分佈是利用無資訊先驗時候(很平),那麼後驗概率就由似然函式確定,而似然函式和資料之間有充分聯絡。進行一系列的證明推導(PRML書上已經非常詳細),最後得到證據函式表示式:

其中:

最大化證據函式求得 {\alpha},{\beta}

二.本章其他重要的相關知識

這裡,LZ簡單概括的提及一下其他相關知識。主要包括偏置-方差分解和順序學習。

1.偏置-方差分解

通過一些簡單的推理證明,我們發現期望損失可以分解成三部分:

其中,噪聲是資料本身存在的是,是不能通過模型優化進行降低的一個固定值。所以,我們在模型學習的過程中主要進行的是偏置和方差降低。偏置方差之間存在一種明顯的“對抗關係”,一個靈活的模型偏置較小,方差較大;一個固定模型偏置較大,方差較小。所以,最小化期望損失,是要折中偏置和方差。他們之間的關係可以用下面這個圖進行生動的展示。

2.順序學習

在模型訓練時候,通常是利用這個訓練集直接得到引數。但這樣的方式顯然是有明顯侷限性的。①面對大規模資料時候,記憶體消耗巨大甚至無法計算;②面對線上流資料時候,每當新資料更新都需要使用所有資料進行訓練隊引數進行有效更新,這顯然是不合理的,不能有效進行線上學習。為了解決這樣的問題,提出順序學習。

順序學習的核心就是在每觀測到一個新的資料點就進行相應的更新。例如,在貝葉斯模型中,當觀測到一部分資料就能計算出新的後驗概率,然後將後驗概率作為新的先驗概率嗎,再觀測到新的資料時候就能在得到新的後驗概率。