長久以來,人們對一件事情發生或不發生的概率,只有固定的0和1,即要么發生,要么不發生,從來不會去考慮某件事情發生的概率有多大,不發生的概率又是多大。而且概率
雖然未知,但最起碼是一個確定的值。比如如果問那時的人們一個問題:“有一個袋子,里面裝着若干個白球和黑球,請問從袋子中取得白球的概率
是多少?”他們會想都不用想,會立馬告訴你,取出白球的概率
就是1/2,要么取到白球,要么取不到白球,即θ只能有一個值,而且不論你取了多少次,取得白球的概率θ始終都是1/2,即不隨觀察結果X 的變化而變化。這種頻率派的觀點長期統治着人們的觀念,直到后來一個名叫Thomas Bayes的人物出現。
1.1 貝葉斯方法的提出
回到上面的例子:“有一個袋子,里面裝着若干個白球和黑球,請問從袋子中取得白球的概率θ是多少?”貝葉斯認為取得白球的概率是個不確定的值,因為其中含有機遇的成分。比如,一個朋友創業,你明明知道創業的結果就兩種,即要么成功要么失敗,但你依然會忍不住去估計他創業成功的幾率有多大?你如果對他為人比較了解,而且有方法、思路清晰、有毅力、且能團結周圍的人,你會不由自主的估計他創業成功的幾率可能在80%以上。這種不同於最開始的“非黑即白、非0即1”的思考方式,便是貝葉斯式的思考方式。
繼續深入講解貝葉斯方法之前,先簡單總結下頻率派與貝葉斯派各自不同的思考方式:
- 頻率派把需要推斷的參數θ看做是固定的未知常數,即概率
雖然是未知的,但最起碼是確定的一個值,同時,樣本X 是隨機的,所以頻率派重點研究樣本空間,大部分的概率計算都是針對樣本X 的分布;
- 而貝葉斯派的觀點則截然相反,他們認為參數
是隨機變量,而樣本X 是固定的,由於樣本是固定的,所以他們重點研究的是參數
的分布。
貝葉斯派既然把看做是一個隨機變量,所以要計算
的分布,便得事先知道
的無條件分布,即在有樣本之前(或觀察到X之前),
有着怎樣的分布呢?
比如往台球桌上扔一個球,這個球落會落在何處呢?如果是不偏不倚的把球拋出去,那么此球落在台球桌上的任一位置都有着相同的機會,即球落在台球桌上某一位置的概率服從均勻分布。這種在實驗之前定下的屬於基本前提性質的分布稱為先驗分布,或
的無條件分布。
至此,貝葉斯及貝葉斯派提出了一個思考問題的固定模式:
- 先驗分布
+ 樣本信息
后驗分布
上述思考模式意味着,新觀察到的樣本信息將修正人們以前對事物的認知。換言之,在得到新的樣本信息之前,人們對的認知是先驗分布
,在得到新的樣本信息
后,人們對
的認知為
其中,先驗信息一般來源於經驗跟歷史資料。比如林丹跟某選手對決,解說一般會根據林丹歷次比賽的成績對此次比賽的勝負做個大致的判斷。再比如,某工廠每天都要對產品進行質檢,以評估產品的不合格率θ,經過一段時間后便會積累大量的歷史資料,這些歷史資料便是先驗知識,有了這些先驗知識,便在決定對一個產品是否需要每天質檢時便有了依據,如果以往的歷史資料顯示,某產品的不合格率只有0.01%,便可視為信得過產品或免檢產品,只每月抽檢一兩次,從而省去大量的人力物力。
而后驗分布一般也認為是在給定樣本
的情況下
的條件分布,而使
達到最大的值
稱為最大后驗估計,類似於經典統計學中的極大似然估計。
綜合起來看,則好比是人類剛開始時對大自然只有少得可憐的先驗知識,但隨着不斷是觀察、實驗獲得更多的樣本、結果,使得人們對自然界的規律摸得越來越透徹。所以,貝葉斯方法既符合人們日常生活的思考方式,也符合人們認識自然的規律,經過不斷的發展,最終占據統計學領域的半壁江山,與經典統計學分庭抗禮。
1.2 貝葉斯定理
在引出貝葉斯定理之前,先學習幾個定義:
- 條件概率(又稱后驗概率)就是事件A在另外一個事件B已經發生條件下的發生概率。條件概率表示為P(A|B),讀作“在B條件下A的概率”。
- 聯合概率表示兩個事件共同發生的概率。A與B的聯合概率表示為
或者
。
- 邊緣概率(又稱先驗概率)是某個事件發生的概率。邊緣概率是這樣得到的:在聯合概率中,把最終結果中那些不需要的事件通過合並成它們的全概率,而消去它們(對離散隨機變量用求和得全概率,對連續隨機變量用積分得全概率),這稱為邊緣化(marginalization),比如A的邊緣概率表示為P(A),B的邊緣概率表示為P(B)。
接着,考慮一個問題:P(A|B)是在B發生的情況下A發生的可能性。
- 首先,事件B發生之前,我們對事件A的發生有一個基本的概率判斷,稱為A的先驗概率,用P(A)表示;
- 其次,事件B發生之后,我們對事件A的發生概率重新評估,稱為A的后驗概率,用P(A|B)表示;
- 類似的,事件A發生之前,我們對事件B的發生有一個基本的概率判斷,稱為B的先驗概率,用P(B)表示;
- 同樣,事件A發生之后,我們對事件B的發生概率重新評估,稱為B的后驗概率,用P(B|A)表示。
貝葉斯定理便是基於下述貝葉斯公式:
貝葉斯公式可以直接根據條件概率的定義直接推出。即因為P(A,B) = P(A)P(B|A) = P(B)P(A|B),所以P(A|B) = P(A)P(B|A) / P(B)。
1.3 應用:拼寫檢查
經常在網上搜索東西的朋友知道,當你不小心輸入一個不存在的單詞時,搜索引擎會提示你是不是要輸入某一個正確的單詞,比如當你在Google中輸入“Julw”時,系統會猜測你的意圖:是不是要搜索“July”,如下圖所示:
Google的拼寫檢查基於貝葉斯方法。下面我們就來看看,怎么利用貝葉斯方法,實現"拼寫檢查"的功能。
用戶輸入一個單詞時,可能拼寫正確,也可能拼寫錯誤。如果把拼寫正確的情況記做c(代表correct),拼寫錯誤的情況記做w(代表wrong),那么"拼寫檢查"要做的事情就是:在發生w的情況下,試圖推斷出c。換言之:已知w,然后在若干個備選方案中,找出可能性最大的那個c,也就是求的最大值。而根據貝葉斯定理,有:
由於對於所有備選的c來說,對應的都是同一個w,所以它們的P(w)是相同的,因此我們只要最大化:
即可。其中:
- P(c)表示某個正確的詞的出現"概率",它可以用"頻率"代替。如果我們有一個足夠大的文本庫,那么這個文本庫中每個單詞的出現頻率,就相當於它的發生概率。某個詞的出現頻率越高,P(c)就越大。比如在你輸入一個錯誤的詞“Julw”時,系統更傾向於去猜測你可能想輸入的詞是“July”,而不是“Jult”,因為“July”更常見。
- P(w|c)表示在試圖拼寫c的情況下,出現拼寫錯誤w的概率。為了簡化問題,假定兩個單詞在字形上越接近,就有越可能拼錯,P(w|c)就越大。舉例來說,相差一個字母的拼法,就比相差兩個字母的拼法,發生概率更高。你想拼寫單詞July,那么錯誤拼成Julw(相差一個字母)的可能性,就比拼成Jullw高(相差兩個字母)。
所以,我們比較所有拼寫相近的詞在文本庫中的出現頻率,再從中挑出出現頻率最高的一個,即是用戶最想輸入的那個詞。
2 貝葉斯網絡
2.1 貝葉斯網絡的定義
貝葉斯網絡(Bayesian network),又稱信念網絡(Belief Network),或有向無環圖模型(directed acyclic graphical model),是一種概率圖模型,於1985年由Judea Pearl首先提出。它是一種模擬人類推理過程中因果關系的不確定性處理模型,其網絡拓朴結構是一個有向無環圖(DAG)。
貝葉斯網絡的有向無環圖中的節點表示隨機變量,它們可以是可觀察到的變量,或隱變量、未知參數等。認為有因果關系(或非條件獨立)的變量或命題則用箭頭來連接。若兩個節點間以一個單箭頭連接在一起,表示其中一個節點是“因(parents)”,另一個是“果(children)”,兩節點就會產生一個條件概率值。總而言之,連接兩個節點的箭頭代表此兩個隨機變量是具有因果關系,或非條件獨立。
例如,假設節點E直接影響到節點H,即E→H,則用從E指向H的箭頭建立結點E到結點H的有向弧(E,H),權值(即連接強度)用條件概率P(H|E)來表示,如下圖所示:
簡言之,把某個研究系統中涉及的隨機變量,根據是否條件獨立繪制在一個有向圖中,就形成了貝葉斯網絡。其主要用來描述隨機變量之間的條件依賴,用圈表示隨機變量(random variables),用箭頭表示條件依賴(conditional dependencies)。
令G = (L,E)表示一個有向無環圖(DAG),其中 L 代表圖形中所有的節點的集合,而 E 代表有向連接線段的集合,且令X = (Xi) i ∈ L為其有向無環圖中的某一節點 i 所代表的隨機變量,若節點 X 的聯合概率可以表示成:
則稱X為相對於一有向無環圖G 的貝葉斯網絡,其中,表示節點 i 之“因”,或稱 pa(i) 是 i 的parents(父母)。
此外,對於任意的隨機變量,其聯合概率可由各自的局部條件概率分布相乘而得出:
如下圖所示,便是一個簡單的貝葉斯網絡:
因為a導致b,a和b導致c,所以有:
2.2 貝葉斯網絡的3種結構形式
給定如下圖所示的一個貝葉斯網絡:
從圖上可以比較直觀的看出:
- (1). x1,x2,…x7的聯合分布為:
- (2). x1和x2獨立(對應head-to-head);
- (3). x6和x7在x4給定的條件下獨立(對應tail-to-tail)。
根據上圖,第1點可能很容易理解,但第2、3點中所述的條件獨立是啥意思呢?其實第2、3點是貝葉斯網絡中3種結構形式中的其中二種。為了說清楚這個問題,需要引入D-Separation(D-分離)這個概念。
D-Separation是一種用來判斷變量是否條件獨立的圖形化方法。換言之,對於一個DAG(有向無環圖)E,D-Separation方法可以快速的判斷出兩個節點之間是否是條件獨立的。
2.2.1 形式1:head-to-head
貝葉斯網絡的第一種結構形式如下圖所示:
所以有:P(a,b,c) = P(a)*P(b)*P(c|a,b)成立,化簡后可得:
即在c未知的條件下,a、b被阻斷(blocked),是獨立的,稱之為head-to-head條件獨立,對應本節中最開始那張圖中的“x1、x2獨立”。
2.2.2 形式2:tail-to-tail
貝葉斯網絡的第二種結構形式如下圖所示:
考慮c未知,跟c已知這兩種情況:
- 在c未知的時候,有:P(a,b,c)=P(c)*P(a|c)*P(b|c),此時,沒法得出P(a,b) = P(a)P(b),即c未知時,a、b不獨立。
- 在c已知的時候,有:P(a,b|c)=P(a,b,c)/P(c),然后將P(a,b,c)=P(c)*P(a|c)*P(b|c)帶入式子中,得到:P(a,b|c)=P(a,b,c)/P(c) = P(c)*P(a|c)*P(b|c) / P(c) = P(a|c)*P(b|c),即c已知時,a、b獨立。
所以,在c給定的條件下,a,b被阻斷(blocked),是獨立的,稱之為tail-to-tail條件獨立,對應本節中最開始那張圖中的“x6和x7在x4給定的條件下獨立”。
考慮c未知,跟c已知這兩種情況:
- 在c未知的時候,有:P(a,b,c)=P(c)*P(a|c)*P(b|c),此時,沒法得出P(a,b) = P(a)P(b),即c未知時,a、b不獨立。
- 在c已知的時候,有:P(a,b|c)=P(a,b,c)/P(c),然后將P(a,b,c)=P(c)*P(a|c)*P(b|c)帶入式子中,得到:P(a,b|c)=P(a,b,c)/P(c) = P(c)*P(a|c)*P(b|c) / P(c) = P(a|c)*P(b|c),即c已知時,a、b獨立。
所以,在c給定的條件下,a,b被阻斷(blocked),是獨立的,稱之為tail-to-tail條件獨立,對應本節中最開始那張圖中的“x6和x7在x4給定的條件下獨立”。
考慮c未知,跟c已知這兩種情況:
- 在c未知的時候,有:P(a,b,c)=P(c)*P(a|c)*P(b|c),此時,沒法得出P(a,b) = P(a)P(b),即c未知時,a、b不獨立。
- 在c已知的時候,有:P(a,b|c)=P(a,b,c)/P(c),然后將P(a,b,c)=P(c)*P(a|c)*P(b|c)帶入式子中,得到:P(a,b|c)=P(a,b,c)/P(c) = P(c)*P(a|c)*P(b|c) / P(c) = P(a|c)*P(b|c),即c已知時,a、b獨立。
所以,在c給定的條件下,a,b被阻斷(blocked),是獨立的,稱之為tail-to-tail條件獨立,對應本節中最開始那張圖中的“x6和x7在x4給定的條件下獨立”。
2.2.3 形式3:head-to-tail
貝葉斯網絡的第三種結構形式如下圖所示:
還是分c未知跟c已知這兩種情況:
- c未知時,有:P(a,b,c)=P(a)*P(c|a)*P(b|c),但無法推出P(a,b) = P(a)P(b),即c未知時,a、b不獨立。
- c已知時,有:P(a,b|c)=P(a,b,c)/P(c),且根據P(a,c) = P(a)*P(c|a) = P(c)*P(a|c),可化簡得到:
所以,在c給定的條件下,a,b被阻斷(blocked),是獨立的,稱之為head-to-tail條件獨立。
插一句:這個head-to-tail其實就是一個鏈式網絡,如下圖所示:
根據之前對head-to-tail的講解,我們已經知道,在xi給定的條件下,xi+1的分布和x1,x2…xi-1條件獨立。意味着啥呢?意味着:xi+1的分布狀態只和xi有關,和其他變量條件獨立。通俗點說,當前狀態只跟上一狀態有關,跟上上或上上之前的狀態無關。這種順次演變的隨機過程,就叫做馬爾科夫鏈(Markov chain)。且有:
2.3 貝葉斯網絡的實例
給定如下圖所示的貝葉斯網絡:
其中,各個單詞、表達式表示的含義如下:
- smoking表示吸煙,其概率用P(S)表示,lung Cancer表示的肺癌,一個人在吸煙的情況下得肺癌的概率用P(C|S)表示,X-ray表示需要照醫學上的X光,肺癌可能會導致需要照X光,吸煙也有可能會導致需要照X光(所以smoking也是X-ray的一個因),所以,因吸煙且得肺癌而需要照X光的概率用P(X|C,S)表示。
- Bronchitis表示支氣管炎,一個人在吸煙的情況下得支氣管炎的概率用P(B|S),dyspnoea表示呼吸困難,支氣管炎可能會導致呼吸困難,肺癌也有可能會導致呼吸困難(所以lung Cancer也是dyspnoea的一個因),因吸煙且得了支氣管炎導致呼吸困難的概率用P(D|S,B)表示。
lung Cancer簡記為C,Bronchitis簡記為B,dyspnoea簡記為D,且C = 0表示lung Cancer不發生的概率,C = 1表示lung Cancer發生的概率,B等於0(B不發生)或1(B發生)也類似於C,同樣的,D=1表示D發生的概率,D=0表示D不發生的概率,便可得到dyspnoea的一張概率表,如上圖的最右下角所示。
2.4 因子圖
回到2.3節中那個實例上,如下圖所示:
對於上圖,在一個人已經呼吸困難(dyspnoea)的情況下,其抽煙(smoking)的概率是多少呢?即:P(s|d=1)=? 推導:
解釋下上述式子推導過程:
- 第二行:對聯合概率關於b,x,c求和(在d=1的條件下),從而消去b,x,c,得到s和d=1的聯合概率。
- 第三行:最開始,所有變量都在sigma(d=1,b,x,c)的后面(sigma表示對“求和”的稱謂),但由於P(s)和“d=1,b,x,c”都沒關系,所以,可以提到式子的最前面。而且P(b|s)和x、c沒關系,所以,也可以把它提出來,放到sigma(b)的后面,從而式子的右邊剩下sigma(x)和sigma(c)。
此外,圖中Variable elimination表示的是變量消除的意思。
轉至:http://f.dataguru.cn/forum.php?mod=viewthread&tid=508373&page=1&authorid=93725