當前位置:
首頁 > 知識 > 貝葉斯、概率分布與機器學習

貝葉斯、概率分布與機器學習

限時乾貨下載:


來源:本文由LeftNotEasy原創


原文地址:http://www.cnblogs.com/LeftNotEasy/archive/2010/09/27/1837163.html

1


簡單的說貝葉斯定理


貝葉斯定理用數學的方法來解釋生活中大家都知道的常識


形式最簡單的定理往往是最好的定理,比如說中心極限定理,這樣的定理往往會成為某一個領域的理論基礎。機器學習的各種演算法中使用的方法,最常見的就是貝葉斯定理。

貝葉斯定理的發現過程我沒有找到相應的資料,不過我相信託馬斯.貝葉斯(1702-1761)是通過生活中的一些小問題去發現這個對後世影響深遠的定理的,而且我相信貝葉斯發現這個定理的時候,還不知道它居然有這麼大的威力呢。下面我用一個小例子來推出貝葉斯定理:


已知:有N個蘋果,和M個梨子,蘋果為黃色的概率為20%,梨子為黃色的概率為80%,問,假如我在這堆水果中觀察到了一個黃色的水果,問這個水果是梨子的概率是多少。


用數學的語言來表達,就是已知P(apple) = N / (N + M), P(pear) = M / (N + M), P(yellowapple) = 20%, P(yellowpear) = 80%, 求P(pearyellow).


要想得到這個答案,我們需要 1. 要求出全部水果中為黃色的水果數目。 2. 求出黃色的梨子數目


對於1) 我們可以得到 P(yellow) * (N + M), P(yellow) = p(apple) * P(yellowapple) + P(pear) * p(yellowpear)

對於2) 我們可以得到 P(yellowpear) * M


2) / 1) 可得:P(pearyellow) = P(yellowpear) * p(pear) / [P(apple) * P(yellowapple) + P(pear) * P(yellowpear)]


化簡可得:P(pearyellow) = P(yellow,pear) / P(yellow), 用簡單的話來表示就是在已知是黃色的,能推出是梨子的概率P(pearyellow)是黃色的梨子佔全部水果的概率P(yellow,pear)除上水果顏色是黃色的概率P(yellow). 這個公式很簡單吧。


我們將梨子代換為A,黃色代換為B公式可以寫成:P(AB) = P(A,B) / P(B), 可得:P(A,B) = P(AB) * P(B).貝葉斯公式就這樣推出來了。


本文的一個大概的思路:先講一講我概括出的一個基本的貝葉斯學習框架,然後再舉幾個簡單的例子說明這些框架,最後再舉出一個複雜一點的例子,也都是以貝葉斯機器學習框架中的模塊來講解

2


貝葉斯機器學習框架


對於貝葉斯學習,我每本書都有每本書的觀點和講解的方式方法,有些講得很生動,有些講得很突兀,對於貝葉斯學習裡面到底由幾個模塊組成的,我一直沒有看到很官方的說法,我覺得要理解貝葉斯學習,下面幾個模塊是必須的:


1

貝葉斯公式


機器學習問題中有一大類是分類問題,就是在給定觀測數據D的情況下,求出其屬於類別(也可以稱為是假設h,h ∈ )的概率是多少, 也就是求出:


P(hD), 可得:


P(h,D) = P(hD) * P(D) = P(Dh) * P(h),所以:P(hD) = P(Dh) * P(h) / P(D), 對於一個數據集下面的所有數據,P(D),恆定不變。所以可以認為P(D)為常數, 得到:P(hD) ∝ P(Dh) * P(h)。我們往往不用知道P(hD)的具體的值,而是知道例如P(h1D),P(h2D)值的大小關係就是了。這個公式就是機器學習中的貝葉斯公 式,一般來說我們稱P(hD)為模型的後驗概率,就是從數據來得到假設的概率,P(h)稱為先驗概率,就是假設空間裡面的概率,P(Dh)是模型的 likelihood概率。


Likelihood(似然)這個概率比較容易讓人迷惑,可以認為是已知假設的情況下,求出從假設推出數據的概率,在實際的機器學習過程中,往往加入了很多的假設,比如一個英文翻譯法文的問題:


給出一個英文句子,問哪一個法文句子是最靠譜的,P(f=法文句子e=英文句子) = P(ef) * p(f), p(ef)就是likelihood函數,P(ef) 寫成下面的更清晰一點:p(ef∈)可以認為,從輸入的英文句子e,推出了很多種不同的法文句子f,p(ef)就是從這些法文句子中的某一個推出原句子e的概率。


本文之後的內容也將對文章中沒有提到的一些內容,也是貝葉斯學習中容易疑惑、忽略、但是很重要的問題進行一些解釋。


2


先驗分布估計,likelihood函數選擇


貝葉斯方法中,等號右邊有兩個部分,先驗概率與likelihood函數。先驗概率是得到,在假設空間中,某一個假設出現的概率是多少,比如說在街上看到一個動物是長有毛的,問1. 這個動物是哈巴狗的概率是多少,2. 這個動物是爪哇虎的概率是多少, 見下圖:

貝葉斯、概率分布與機器學習



雖然兩個假設的likelihood函數都非常的接近於1(除非這個動物病了),但是由於爪哇虎已經滅絕了,所以爪哇虎的先驗概率為0,所以P(爪哇虎有毛的動物)的概率也為0。


3


先驗概率分布估計


在觀測的時候,對於變數是連續的情況下,往往需要一個先驗分布來得到稀疏數據集中沒有出現過的,給出的某一個假設,在假設空間中的概率。比如說有一個很大很大的均勻金屬圓盤,問這個金屬圓盤拋到空中掉下來,正面朝上的概率,這個實驗的成本比較高(金屬圓盤又大又重),所以只能進行有限次數的實驗,可能出現的是,正面向上4次,反面向上1次,但是我們如果完全根據這個數據集去計算先驗概率,可能會出現很大的偏差。不過由於我們已知圓盤是均勻的,我們可以根據這個知識,假設P(X=正面) = 0.5。


我們有的時候,已知了分布的類型,但是不知道分布的參數,還需要根據輸入的數據,對分布的參數進行估計、甚至對分布還需要進行一些修正,以滿足我們演算法的需求:比如說我們已知某一個變數x的分布是在某一個連續區間均勻分布,我們觀察了1000次該變數,從小到大排序結果是:1,1.12,1.5 … 199.6, 200, 那我們是否就可以估計變數的分布是從[1,200]均勻分布的?如果出現一個變數是0.995,那我們就能說P(0.995) = 0?如果出現一個200.15怎麼辦呢?所以我們這個時候可能需要對概率的分布進行一定的調整,可能在x200的範圍內的概率是一個下降的直線,整個概率密度函數可能是一個梯形的,或者對區域外的值可以給一個很小很小的概率。這個我在之後還將會舉出一些例子來說明。


4


Likelihood函數選擇


對於同一個模型,likelihood函數可能有不同的選擇,對於這些選擇,可能有些比較精確、但是會搜索非常大的空間,可能有些比較粗糙,但是速度會比較快,我們需要選擇不同的likelihood函數來計算後驗概率。對於這些Likelihood函數,可能還需要加上一些平滑等技巧來使得最大的降低數據中雜訊、或者假設的缺陷對結果的影響。


我所理解的用貝葉斯的方法來估計給定數據的假設的後驗概率,就是通過prior * likelihood,變換到後驗分布。是一個分布變換的過程。


3


loss function(損失函數)


x是輸入的數據,y(x)是推測出的結果的模型,t是x對應的真實結果,L(t,y(x))就是loss function,E[L]表示使用模型y進行預測,使用L作為損失函數的情況下,模型的損失時多少。通常來說,衡量一個模型是否能夠準確的得到結果,損失函數是最有效的一個辦法,最常用、最簡單的一種損失函數是:


不過我一直不知道為什麼這裡用的平方,而不是直接用絕對值,有詳細一點的解釋嗎?:-p


4


Model Selection(模型選擇)


前文說到了對於likelihood函數可以有不同的選擇,對於先驗的概率也可以有不同的選擇,不過假設我們一個構造完整的測試集和一個恰當的損失函數,最終的結果將會是確定的,量化的,我們很容易得到兩個不同參數、方法的模型的優劣性。不過通常情況下,我們的測試集是不夠完整,我們的損失函數也是不那麼 的精確,所以對於在這個測試集上表現得非常完美的模型,我們常常可能還需要打一個問號,是否是訓練集和測試集過於相像,模型又過於複雜。導致了over-fitting(後文將會詳細介紹over-fitting的產生)?


Model Selection本質上來說是對模型的複雜度與模型的準確性做一個平衡,本文後面將有一些類似的例子。


Example 1:Sequential 概率估計


對於概率密度的估計,有很多的方法,其中一種方法叫做Sequential 概率估計。


這種方法是一個增量的學習過程,在每看到一個樣本的時候都是把之前觀測的數據作為先驗概率,然後在得到新數據的後驗概率後,再把當前的後驗概率作為下一次預測時候的先驗概率。


傳統的二項式分布是:


由於傳統的二項式分布的概率μ是完全根據先驗概率而得到的,而這個先驗分布之前也提到過,可能會由於實驗次數不夠而有很大的偏差,而且,我們無法得知μ的分布,只知道一個μ的期望,這樣對於某些機器學習的方法是不利的。為了減少先驗分布對μ的影響,獲取μ的分布,我們加入了兩個參數,a,b,表示X=0與X=1的出現的次數,這個取值將會改變μ的分布,beta分布的公式如下:


對於不同a,b的取值,將會對μ的概率密度函數產生下面的影響:(圖片來自PRML)

貝葉斯、概率分布與機器學習



在觀測數據的過程中,我們可以隨時的利用觀測數據的結果,改變當前μ的先驗分布。我們可以將Beta分布加入兩個參數,m,l,表示觀測到的X=0,X=1的次數。(之前的a,b是一個先驗的次數,不是當前觀測到的)


我們令:


a』,b』表示加入了觀測結果的新的a,b 。帶入原式,可以得到


Example 2:拼寫檢查


直接給出拼寫檢查器的貝葉斯公式:


P(cw)表示,單詞w(wrong)正確的拼寫為單詞c(correct)的概率,P(wc)表示likelihood函數,在這裡我們就簡單的認 為,兩個單詞的編輯距離就是它們之間的likelihood,P(c)表示,單詞c在整體文檔集合中的概率,也就是單詞c的先驗概率。


我們在做單詞拼寫檢查的時候肯定會直觀的考慮:如果用戶輸入的單詞如果在字典中沒有出現過,則應該將其修正為一個字典中出現了的,而且與用戶輸入最接近的詞;如果用戶輸入的詞在字典中出現過了,但是詞頻非常的小,則我們可以為用戶推薦一個比較接近這個單詞,但是詞頻比較高的詞。


先驗概率P(c)的統計是一個很重要的內容,一般來說有兩種可行的辦法,一種是利用某些比較權威的詞頻字典,一種是在自己的語料庫(也就是待進行拼寫檢查的語料)中進行統計。我建議是用後面的方法進行統計,這樣詞的先驗概率才會與測試的環境比較匹配。比如說一個遊戲垂直搜索網站需要對用戶輸入的信息進行拼寫糾正,那麼使用通用環境下統計出的先驗概率就不太適用了。


Example 3:奧卡姆剃刀與Model Selection


給出下面的一個圖:(來自Mackey的書)


問:大樹背後有多少個箱子?

貝葉斯、概率分布與機器學習



其實,答案肯定是有很多的,一個,兩個,乃至N箱子都是有可能的(比如說後面有一連排的箱子,排成一條直線),我們只能看到第一個:

貝葉斯、概率分布與機器學習



但是,最正確,也是最合理的解釋,就是一個箱子,因為如果大樹背後有兩個乃至多個箱子,為什麼從大樹正面看起來,兩邊的高度一樣,顏色也一樣,這樣是不是太巧合了。如果我們的模型根據這張圖片,告訴我們大樹背後最有可能有兩個箱子,這樣的模型的泛化能力是不是太差了。


所以說,本質上來說,奧卡姆剃刀,或者模型選擇,也是人生活中的一種通常行為的數學表示,是一種化繁為簡的過程。數學之美番外篇:平凡而又神奇的貝葉斯方法這篇文章中說的,奧卡姆剃刀工作在likelihood上,對於模型的先驗分布並沒有什麼影響。我這裡不太同意這個說法:奧卡姆剃刀是剪掉了複雜的模型,複雜的模型也是不常見的、先驗概率比較低的,最終的結果是選擇了先驗概率比較高的模型。


Example 4: 曲線擬合


(該例子來自PRML)


問題:給定一些列的點,x = , t = , 要求用一個模型去擬合這個觀測,能夠使得給定一個新點x , 能夠給出一個t .

貝葉斯、概率分布與機器學習



已知給定的點是由y=2πx加上正態分布的雜訊而得到的10個點,如上圖。為了簡單起見,我們用一個多項式去擬合這條曲線:


為了驗證我們的公式是否正確,我們加入了一個loss function:


在loss function最小的情況下,我們繪製了不同維度下多項式生成的曲線:

貝葉斯、概率分布與機器學習



在M值增高的情況下,曲線變得越來越陡峭,當M=9的時候,該曲線除了可以擬合輸入樣本點外,對新進來的樣本點已經無法預測了。我們可以觀測一下多項式的係數:

貝葉斯、概率分布與機器學習



可以看出,當M(維度)增加的時候,係數也膨脹得很厲害,為了消除這個係數帶來的影響,我們需要簡化模型,我們為loss function加入一個懲罰因子:


我們把w的L2距離乘上一個係數λ加入新的loss function中,這就是一個奧卡姆剃刀,把原本複雜的係數變為簡單的係數(如果要更具體的量化的分析,請見PRML 1.1節)。如果我們要考慮如何選擇最合適的維度,我們也可以把維度作為一個loss function的一部分,這就是Model Selection的一種。


但是這個問題還沒有解決得很好,目前我們得到的模型只能預測出一個準確的值:輸入一個新的x,給出一個t,但是不能描述t有什麼樣的概率密度函數。概率密度函數是很有用的。假如說我們的任務修正為,給出N個集合,每個集合裡面有若干個點,表示一條曲線,給出一個新的點,問這個新的點最可能屬於哪一條曲線。如果我們僅僅用新的點到這些曲線的距離作為一個衡量標準,那很難得到一個比較有說服力的結果。為了能夠獲取t值的一個分布,我們不妨假設t屬於一個均值為y(x),方差為1/β的一個高斯分布:


在之前的E(w),我們加入了一個w的L2距離,這個看起來有一點突兀的感覺,為什麼要加上一個這樣的距離呢?為什麼不是加入一個其他的東西。我們可以用一個貝葉斯的方法去替代它,得到一個更有說服力的結果。我們令p(w)為一個以0為均值,α為方差的高斯分布,這個分布為w在0點附近密度比較高,作為w的先驗概率,這樣在計算最大化後驗概率的時候,w的絕對值越小,後驗概率將會越大。


我們可以得到新的後驗概率:


這個式子看起來是不是有點眼熟啊?我們令λ=α/β,可以得到類似於之前損失函數的一個結果了。我們不僅還是可以根據這個函數來計算最優的擬合函數,而且可以得到相應的一個概率分布函數。可以為機器學習的很多其他的任務打下基礎。


這裡還想再廢話一句,其實很多機器學習裡面的內容都與本處所說的曲線擬合演算法類似,如果我們不用什麼概率統計的知識,可以得到一個解決的方案,就像我們的第一個曲線擬合方案一樣,而且還可以擬合得很好,不過唯一缺少的就是概率分布,有了概率分布可以做很多的事情。包括分類、回歸等等都需要這些東西。從本質上來說,Beta分布和二項式分布,Dirichlet分布和多項式分布,曲線擬合中直接計算w和通過高斯分布估計w,都是類似的關係:Beta分布和Dirichlet分布提供的是μ的先驗分布。有了這個先驗分布,我們可以去更好的做貝葉斯相關的事情。


5


後記


本文就寫到這裡,花了大概4個晚上來寫這篇文章,也感謝我女朋友的支持。我也希望能夠用它去總結一下最近學習的一些心得,看看是否自己能夠把它講出來。我覺得學習的過程是一個爬山的過程,常常有的時候覺得自己快到山峰了,結果路有向下了,自己不停有著挫折和興奮的感覺,不過學習的感覺總體來說快樂的。我也想能夠把自己的這份快樂帶給大家 :-D


參考資料:


數學之美番外篇:平凡而又神奇的貝葉斯方法, Pongba


Pattern Recognition and Machine Learning, Bishop


一些Wikipedia上面的內容


請您繼續閱讀更多來自 數據玩家 的精彩文章:

TAG:數據玩家 |
您可能感興趣

諾貝爾化學獎——分子機器
清華大學計算機科學與技術系朱軍教授:機器學習里的貝葉斯基本理論、模型和演算法
15分鐘開啟你的機器學習之旅——隨機森林篇
科沃斯機器人代理
三人分獲諾貝爾化學獎 設計合成「分子機器」
大型機:機器學習和英特爾ops的首選平台
機器學習(6)之樸素貝葉斯NB及實例
分子仿生學:納米機器人
科沃斯機器人電池激活
克林斯曼掃地機器人
機器學習(1)之入門概念
機器學習中的技術債務
如何區分人工智慧、機器學習和深度學習?
機器學習之用 Python 從零實現貝葉斯分類器
世界上最有名的科幻電影展 機器博物館在莫斯科開展
科幻情節或成真 研分子機器 歐三學者摘化學獎
機器學習簡史
北京大學計算機科學技術研究所研究員萬小軍:機器寫稿技術與應用
康奈爾大學科學家將機器學習應用於拓撲相位的分類和識別