不少人說,看了再多的文章,但是沒有人手把手地教授,仍是很難真正地入門AI。爲了將AI知識體系以最簡單的方式呈現給你,從這個星期開始,芯君邀請AI專業人士開設「週末學習課堂」——每週就AI學習中的一個重點問題進行深度分析,課程會分爲理論篇和代碼篇,理論與實操,一個都不能少!app
來,退出讓你廢寢忘食的遊戲頁面,取消只有胡吃海塞的週末聚會吧。將來你與同齡人的差別,也許就從每週末的這堂AI課開啓了!框架
本週,咱們繼續討論上次在課堂結尾時提出的問題。機器學習
• 貝葉斯定理:,它的意義是,在B發生的狀況下,A發生的機率。在貝葉斯框架下,P(A)叫作先驗機率,P(B|A)叫作似然,P(B)是證據因子,P(A|B)叫作後驗機率。ide
• 樸素貝葉斯:基於貝葉斯定理的分類器,須要估計類先驗機率P(l)和屬性的類條件機率,爲計算聯合機率,引入了屬性獨立性假設。函數
• 共軛先驗:若是先驗分佈與後驗分佈屬於同一類型的分佈,那麼咱們將先驗分佈稱爲似然函數的共軛先驗。好比,高斯分佈對於高斯類型的似然函數是其自身的共軛先驗,也就是說若是先驗是高斯,似然函數也是高斯,那麼後驗也會是高斯。學習
在上一篇《基於貝葉斯推斷的分類模型》中,咱們詳細討論了樸素貝葉斯的細節,但拓展時會出現兩個問題:優化
• 屬性值由離散變爲連續,屬性的類條件機率將變得沒法計算(由於每一個屬性值可能只出現一次)。3d
• 由分類問題變爲迴歸問題,target也由離散變得連續,類先驗機率也變得沒法計算(由於每一個目標值可能只出現一次),更重要的是,咱們沒法像分類問題同樣計算類後驗機率。code
第一個問題的實質在於:屬性的取值一旦由離散變得連續,咱們就不能用頻率來估計機率。可是咱們能夠用一個機率密度函數來指定屬性的類條件機率的估計,好比咱們能夠令條件機率爲一個高斯分佈:blog
高斯分佈由兩個參數(均值和標準差)惟一肯定,咱們在訓練分類器的過程,其實就是對每一個屬性的每一個類條件機率的參數進行估計,這裏面所用的方法就是極大似然估計。
似然,也就是條件機率P(A|B),是給定條件B後,事件A發生的機率。若是模型攜帶參數,那麼條件機率的意思就是就是給定參數,數據出現的機率,極大似然法選擇最大化條件機率,本質意義上是咱們在不少參數中選擇一個能使數據出現機率最大的參數。
若是咱們假設數據獨立同分布,那麼樣本同時出現的機率就能夠寫成每一個樣本出現機率的乘積,條件機率就能夠寫成連乘:
由於大量小的機率連乘可能會形成下溢:實際上,咱們更容易最大化似然的天然對數,而不是其自己,咱們就會獲得對數似然:
咱們會看到,不少攜帶參數的模型的優化函數均可以從最大似然估計推導而來。
咱們在《過擬合問題》中,曾經提到過簡單線性模型的最小二乘估計,而且給出了它的優化目標,也就是均方偏差,對於固定容量的樣本,咱們就有:
事實上,簡單線性模型假設咱們的目標值圖片服從高斯分佈,它的均值爲,標準差未知但固定,最大化對數似然就是最大化高斯分佈:
利用對數的性質,就能夠將其拆開:
其中是常數,最大化對數似然至關於最小化其負值,因此,咱們有:
其中標準差圖片是一個固定的數,不參與優化。這樣,咱們經過極大似然估計就能夠推導出簡單線性模型的優化函數。
極大似然估計(MLE)只考慮了似然函數的最大化,本質意義上是咱們在不少參數中選擇一個能使數據出現機率最大的參數。
然而根據貝葉斯定理,最大化後驗機率具備根本不一樣的意義,由於在極大似然估計仍然把潛在的參數看做定值,咱們須要作的只是去尋找這個定值。而最大後驗估計倒是將參數值看做隨機變量,它自己就是一個分佈,而不是定值。
貝葉斯定理的分母,是一個關於數據x的邊緣機率,而參數只是做爲積分變量,在優化中不會起做用。因此,後驗機率表示的是似然與先驗的乘積,而咱們只須要把最大似然估計中的目標改成:
就獲得了咱們最大化後驗機率的形式。
Example:簡單線性模型的正則化
在《過擬合問題》中,一樣提到了簡單線性模型的正則化,好比說咱們的嶺迴歸(Ridge Regression),它的優化函數爲:
咱們在前面說,簡單線性模型假設咱們的目標值圖片服從高斯分佈,事實上,正則化則對應着參數的高斯先驗分佈:咱們的參數服從高斯分佈。根據貝葉斯定理,咱們用最大化後驗機率來估計參數,實際上只是在對數似然上添加了先驗的對數:
咱們繼續將其展開:
最大化對數似然就是最小化其負值,同時省略其中的常數項,咱們就會獲得:
標準差圖片是常數,不參與優化。這樣,咱們就獲得了嶺迴歸的優化函數。
咱們已經看到,簡單線性模型假設咱們的目標值圖片服從高斯分佈,接下來就是極大似然法來估計參數,一旦獲得參數,整個學習就結束了。貝葉斯線性迴歸也是估計參數,可是應用了貝葉斯定理,咱們不只要考慮似然,還要考慮先驗以及證據因子:
其中,參數圖片只是一個向量,用來表示分佈的參數。最重要的地方在於,所謂的後驗機率是結果出現以後對機率的修正,從貝葉斯的視角看待整個數據集,咱們會把樣本的每一個點進行增量計算,對於初始點,咱們假設先驗和似然,計算出它的後驗,而後將初始點的後驗估計看成下一次(兩個樣本點)估計的先驗,如此反覆,直到計算完畢整個數據集。能夠想象到,隨着樣本的增長,咱們的估計會愈來愈準確。
出於解析的目的,咱們選取自共軛先驗,咱們假設似然函數服從高斯分佈,參數會變成;若是咱們繼續假設先驗分佈服從高斯分佈圖,因爲高斯分佈的自共軛的性質,咱們的後驗分佈也會是一個高斯分佈,咱們能夠經過貝葉斯定理將後驗高斯分佈的參數用其他參數來表示:
這裏,咱們要注意三點:
• 是咱們對似然函數進行極大似然估計的參數值,對似然參數的估計能夠獨立進行。
• 後驗分佈的均值由兩部分組成,一部分是先驗的參數,另外一部分是似然的參數,先驗的精度越高(標準差越小),其對後驗均值的影響就越大(體現爲權重越大)。
• 貝葉斯迴歸的過程是一個樣本點逐步增長到學習器的過程,前一個樣本點的後驗會被下一次估計看成先驗。咱們固然能夠說,貝葉斯學習在逐步的更新先驗,但要注意,先驗的更新其實是經過更新極大似然估計參數和樣本點來進行迭代的,而非改變初始先驗的形式。
如圖,從上到下,咱們依次增長樣本點。中間的列是咱們的每次迭代的後驗機率,而且將上一輪的後驗做爲本次的先驗,逐漸更新的先驗contour愈來愈小,代表參數的可選區間愈來愈小,樣本對模型的約束愈來愈好,最後一列是咱們的樣本空間,能夠看出隨着樣本點的增長,直線變得愈來愈近,也說明參數的可選空間愈來愈小。
咱們在極大後驗估計中提到了嶺迴歸其實是加了均值爲零的高斯先驗。在這裏,咱們一樣能夠令先驗的均值,而後利用最大後驗估計,忽略常數項獲得:
這樣的迴歸方式叫作貝葉斯嶺迴歸(Bayesian Ridge regression)。它與普通嶺迴歸的區別在於,它採用了貝葉斯逐步更新先驗的策略,普通的嶺迴歸容許參數圖片爲零,由於這樣就退化到了線性迴歸,但貝葉斯估計不能這樣作,由於高斯分佈的標準差不能無窮大。同時,貝葉斯迴歸會給出參數的置信區間,這是一個參數的可選範圍,本質意義上是一個協方差矩陣。
課堂TIPS
• MLE和MAP的區別看起來只有先驗分佈的包括與否,實則是頻率學派和貝葉斯學派分歧的一種體現。貝葉斯學派會把參數看成一個分佈,雖然看起來MLE和MAP進行的都是點估計,MAP其實對後驗機率最大化的方式給出的是參數分佈的衆數。
• 大多數狀況下,計算貝葉斯的後驗機率是一件很是困難的事情,咱們選取共軛先驗使得計算變得很是簡單,其餘的常見的方法有Laplace approximation,Monte Carlo積分(咱們幾乎都要用Markov Chain的平穩分佈去逼近後驗分佈),Variational approximation。
• 貝葉斯的線性估計可以充分的利用數據,若是咱們有N個樣本,那麼初始樣本將會被計算N次,而最後一個樣本只會被計算一次,咱們通常會進行多輪計算。但在數據量太大的時候並不適用,由於貝葉斯線性估計的計算代價太大。
做者:唐僧不用海飛絲 如需轉載,請後臺留言,遵照轉載規範
【週末AI課堂 | 第十二講】基於貝葉斯推斷的分類模型(代碼篇) 【週末AI課堂 | 第十一講】基於貝葉斯推斷的分類模型(理論篇) 【週末AI課堂 | 第十講】核技巧(代碼篇) 【週末AI課堂 | 第九講】核技巧(理論篇) 【週末AI課堂 | 第八講】非線性降維方法(代碼篇) 【週末AI課堂 | 第七講】非線性降維方法(理論篇) 【週末AI課堂 | 第六講】線性降維方法(代碼篇) 【週末AI課堂 | 第五講】線性降維方法(理論篇) 【週末AI課堂 | 第四講】如何進行特徵選擇(代碼篇) 【週末AI課堂 | 第三講】如何進行特徵選擇(理論篇) 【週末AI課堂 | 第二講】過擬合問題(代碼篇) 【週末AI課堂 | 第一講】過擬合問題(理論篇)