全文共3060字,預計學習時長7分鐘
本周,我們繼續討論上次在課堂結尾時提出的問題。
數學準備
貝葉斯定理:
,它的意義是,在B發生的情況下,A發生的概率。在貝葉斯框架下,P(A)叫做先驗概率,P(B|A)叫做似然,P(B)是證據因子,P(A|B)叫做後驗概率。
樸素貝葉斯
:基於貝葉斯定理的分類器,需要估計類先驗概率
P(l)
和屬性的類條件概率
,為計算聯合概率,引入了屬性獨立性假設。
共軛先驗:如果先驗分布與後驗分布屬於同一類型的分布,那麼我們將先驗分布稱為似然函數的共軛先驗。比如,高斯分布對於高斯類型的似然函數是其自身的共軛先驗,也就是說如果先驗是高斯,似然函數也是高斯,那麼後驗也會是高斯。
傳統樸素貝葉斯的局限
在上一篇《基於貝葉斯推斷的分類模型》中,我們詳細討論了樸素貝葉斯的細節,但拓展時會出現兩個問題:
屬性值由離散變為連續,屬性的類條件概率將變得無法計算(因為每個屬性值可能只出現一次)。
由分類問題變為回歸問題,target也由離散變得連續,類先驗概率也變得無法計算(因為每個目標值可能只出現一次),更重要的是,我們無法像分類問題一樣計算類後驗概率。
第一個問題的實質在於:屬性的取值一旦由離散變得連續,我們就不能用頻率來估計概率。但是我們可以用一個概率密度函數來指定屬性的類條件概率的估計,比如我們可以令條件概率為一個高斯分布:
高斯分布由兩個參數(均值和標準差)唯一確定,我們在訓練分類器的過程,其實就是對每個屬性的每個類條件概率的參數進行估計,這裡面所用的方法就是極大似然估計。
極大似然估計(Maximum Likelihood Estimation)
似然,也就是條件概率P(A|B),是給定條件B後,事件A發生的概率。如果模型攜帶參數,那麼條件概率的意思就是
就是給定參數,數據出現的概率,極大似然法選擇最大化條件概率
,本質意義上是我們在很多參數中選擇一個能使數據出現概率最大的參數。
如果我們假設數據獨立同分布,那麼樣本同時出現的概率就可以寫成每個樣本出現概率的乘積,條件概率就可以寫成連乘:
因為大量小的概率連乘可能會造成下溢:實際上,我們更容易最大化似然的自然對數,而不是其本身,我們就會得到對數似然:
我們會看到,很多攜帶參數的模型的優化函數都可以從最大似然估計推導而來。
Example:簡單線性模型並不簡單
我們在《過擬合問題》中,曾經提到過簡單線性模型的最小二乘估計,並且給出了它的優化目標,也就是均方誤差,對於固定容量的樣本,我們就有:
事實上,簡單線性模型假設我們的目標值
服從高斯分布
,它的均值為
,
標準差未知但固定,最大化對數似然就是最大化高斯分布:
利用對數的性質,就可以將其拆開:
其中
是常數,最大化對數似然相當於最小化其負值,所以,我們有:
其中標準差
是一個固定的數,不參與優化。這樣,我們通過極大似然估計就可以推導出簡單線性模型的優化函數。
最大後驗估計(Maximum A Posteriori Estimation)
極大似然估計(MLE)只考慮了似然函數的最大化,本質意義上是我們在很多參數中選擇一個能使數據出現概率最大的參數。
然而根據貝葉斯定理,最大化後驗概率具有根本不同的意義,因為在極大似然估計仍然把潛在的參數看作定值,我們需要做的只是去尋找這個定值。而最大後驗估計卻是將參數值看作隨機變量,它本身就是一個分布,而不是定值。
貝葉斯定理的分母,是一個關於數據x的邊緣概率,而參數只是作為積分變量,在優化中不會起作用。所以,後驗概率
表示的是似然
與先驗
的乘積,而我們只需要把最大似然估計中的目標改為:
就得到了我們最大化後驗概率的形式。
Example:簡單線性模型的正則化
在《過擬合問題》中,同樣提到了簡單線性模型的正則化,比如說我們的嶺回歸(Ridge Regression),它的優化函數為:
我們在前面說,簡單線性模型假設我們的目標值
服從高斯分布
,事實上,
正則化則對應著參數的高斯先驗分布
:我們的參數服從高斯分布
。根據貝葉斯定理,我們用最大化後驗概率來估計參數,實際上只是在對數似然上添加了先驗的對數:
我們繼續將其展開:
最大化對數似然就是最小化其負值,同時省略其中的常數項,我們就會得到:
標準差
是常數,不參與優化。這樣,我們就得到了嶺回歸的優化函數。
貝葉斯線性回歸(Bayesian Linear Regression)
我們已經看到,簡單線性模型假設我們的目標值
服從高斯分布
,接下來就是極大似然法來估計參數,一旦得到參數,整個學習就結束了。貝葉斯線性回歸也是估計參數,但是應用了貝葉斯定理,我們不僅要考慮似然,還要考慮先驗以及證據因子:
其中,參數
只是一個向量,用來表示分布的參數。最重要的地方在於,所謂的後驗概率是結果出現之後對概率的修正,從貝葉斯的視角看待整個數據集,我們會把樣本的每個點進行增量計算,對於初始點,我們假設先驗和似然,計算出它的後驗,然後將初始點的後驗估計當作下一次(兩個樣本點)估計的先驗,如此反覆,直到計算完畢整個數據集。可以想像到,隨著樣本的增加,我們的估計會越來越準確。
出於解析的目的,我們選取自共軛先驗,我們假設似然函數服從高斯分布
,參數會變成
;
如果我們繼續假設先驗分布服從高斯分布
,
由於高斯分布的自共軛的性質,我們的後驗分布也會是一個高斯分布,我們可以通過貝葉斯定理將後驗高斯分布的參數用其餘參數來表示:
這裡,我們要注意三點:
是我們對似然函數進行極大似然估計的參數值,對似然參數的估計可以獨立進行。
後驗分布的均值由兩部分組成,一部分是先驗的參數,另一部分是似然的參數,先驗的精度越高(標準差越小),其對後驗均值的影響就越大(體現為權重越大)。
貝葉斯回歸的過程是一個樣本點逐步增加到學習器的過程,前一個樣本點的後驗會被下一次估計當作先驗。我們當然可以說,貝葉斯學習在逐步的更新先驗,但要注意,先驗的更新實際上是通過更新極大似然估計參數和樣本點來進行迭代的,而非改變初始先驗的形式。
如圖,從上到下,我們依次增加樣本點。中間的列是我們的每次迭代的後驗概率,並且將上一輪的後驗作為本次的先驗,逐漸更新的先驗contour越來越小,表明參數的可選區間越來越小,樣本對模型的約束越來越好,最後一列是我們的樣本空間,可以看出隨著樣本點的增加,直線變得越來越近,也說明參數的可選空間越來越小。
我們在極大後驗估計中提到了嶺回歸實際上是加了均值為零的高斯先驗。在這裡,我們同樣可以令先驗的均值
,
然後利用最大後驗估計,忽略常數項得到:
這樣的回歸方式叫做貝葉斯嶺回歸(Bayesian Ridge regression)。它與普通嶺回歸的區別在於,它採用了貝葉斯逐步更新先驗的策略,普通的嶺回歸允許參數
為零,因為這樣就退化到了線性回歸,但貝葉斯估計不能這樣做,因為高斯分布的標準差不能無窮大。同時,貝葉斯回歸會給出參數的置信區間,這是一個參數的可選範圍,本質意義上是一個協方差矩陣。
讀芯君開扒
課堂TIPS
MLE和MAP的區別看起來只有先驗分布的包括與否,實則是頻率學派和貝葉斯學派分歧的一種體現。貝葉斯學派會把參數當作一個分布,雖然看起來MLE和MAP進行的都是點估計,MAP其實對後驗概率最大化的方式給出的是參數分布的眾數。
大多數情況下,計算貝葉斯的後驗概率是一件非常困難的事情,我們選取共軛先驗使得計算變得非常簡單,其他的常見的方法有Laplace approximation,Monte Carlo積分(我們幾乎都要用Markov Chain的平穩分布去逼近後驗分布),Variational approximation。
貝葉斯的線性估計能夠充分的利用數據,如果我們有N個樣本,那麼初始樣本將會被計算N次,而最後一個樣本只會被計算一次,我們一般會進行多輪計算。但在數據量太大的時候並不適用,因為貝葉斯線性估計的計算代價太大。
留言 點讚 發個朋友圈
我們一起探討AI落地的最後一公裡
作者:唐僧不用海飛絲
如需轉載,請後臺留言,遵守轉載規範