機器學習之概率論與數理統計基礎知識-(1)馬爾可夫和貝葉斯

該博客是根據百度貼吧利_刃網友的內容進行整理的,原出處請點擊此處

1.1 概率(Probability)

概率又稱可能性、或然率、機率、機率,是一個0到1之間的實數,描述隨機事件發生的可能性。
事件A的概率,記作:P(A)。
當我們遇到糾結的問題而進退兩難時,常常採用拋硬幣的方式決定對錯。那麼硬幣正面朝上的概率是多少?
概率公式:

P(A)=nm

讀作:事件A的概率 = A發生的次數n / m次試驗

現實生活中,我們常常通過反覆進行多次試驗來總結經驗。假如在100次拋硬幣試驗中,有52次是正面朝上,那麼根據公式,正面朝上的概率是P(硬幣正面朝上) = 52次正面朝上/100次試驗 = 52%。試驗的次數越多,這個概率數值將越接近50%。

古典概率:古典概率對前面的概率公式做出了另一種解釋,P(A)=n/m,其中n代表A所包含的樣本點個數,m代表樣本點總數(參看後面的“樣本空間”)。對於硬幣來說,m=2 代表拋硬幣總共會有正反兩種可能;n=1 代表正面朝上的這一種可能;因此,P(硬幣正面朝上) = 1/2。

[注] 概率依其計算方法的不同,可分爲古典概率、試驗概率和主觀概率。

1.2 聯合概率(Joint Probability)

聯合概率代表多個事件同時發生的概率,用乘法來計算。
記作:P(A,B)、P(A&B) 或 P(A∩B),讀做:A並且B,即A又B,A和B的交集,A and B。
聯合概率的乘法公式:

P(A,B)=P(AB)=P(A)×P(B)
讀作:既A又B的概率 = A的概率*B的概率

例如:P(被狗咬,掉到溝裏) = P(被狗咬) * P(掉到溝裏) = 0.1 * 0.01 = 0.001
假如一天之內,一個人被狗咬到的可能性是十分之一,不小心掉到溝裏的可能性是百分之一。要是在同一天這個人既被狗咬,又掉進溝裏了,那麼這個可能性是(1/10)*(1/100)=千分之一,那隻能說他真是太不幸了。

聯合概率的韋恩圖(Venn diagram)表示:

這裏寫圖片描述

1.3 條件概率(Conditional Probability)

條件概率是指在事件B發生的條件下,事件A發生的概率。
記作:P(A|B)

讀作:在已知B的條件下,A的可能性。或:出現B的情況時,A的概率。(閱讀時先B後A)

英文讀作:the probability of A, given B,代表:event A assuming that B has occurred,簡稱:A given B。(英文閱讀時先A後B)

例1:再以拋硬幣爲例,某些人認爲概率不是1/2,而是和人品有關:P(正面|人品)=1/10,表示在他的人品影響下,他拋10次硬幣只有一次會是正的。
例2:P(比賽勝利|隊員受傷)=0 讀作:在隊員受傷的情況下,比賽獲勝的機會是0(不可能獲勝)。

事件B可以是多個參數,例如:P(y=1|x;θ) 或 P(y=1|x,θ) , x和θ可以看作一個整體,讀作:在x和θ這兩個參數的影響下,y=1的可能性。

1.4 條件概率乘法(Conditional Probability Multiplication)

繼續前面那個被狗咬的例子,由於“被狗咬”和“掉到溝裏”這兩個事件有可能存在一定的聯繫,因此我們常常把P(A)轉而寫成P(A|B),解釋爲已知某天一個人被狗咬到了,那他掉到溝裏的概率就是P(掉到溝裏|被狗咬)。P(A)表達了A、B這兩件事毫不相干;P(A|B)則表示某人是由於被狗咬才掉進溝裏的,是條件概率。注意:P(A)和P(A|B)表達了兩個不同概念,一般地,P(A)≠(A|B)。

根據聯合概率的乘法公式,我們擴展出條件概率的乘法公式:

P(A,B)=P(A|B)×P(B)=P(B|A)×P(A)
由此變換後可得出條件概率公式:
P(A|B)=P(A,B)P(B)=P(AB)P(B)
再變換,可得出貝葉斯公式:
P(A|B)=P(B|A)×P(A)P(B)

如果兩個事件不相關,P(A,B)就等於P(A) * P(B) ,如果兩個事件有關聯關係,就是P(A|B) * P(B)。P(A|B)*P(B)是條件概率的乘法公式,是指在A和B有關聯的情況下的概率,可以參考後面的貝葉斯理論。

1.5 鏈式法則(Chain Rule)

這裏是指條件概率乘法的鏈式法則,求多個關聯事件並存時的概率,不要和微積分的鏈式法則混爲一談。公式:

P(A1,A2,A3,...,An)=P(A1)×P(A2|A1)×P(A3|A1,A2)×...×P(An|A1,A2,...An1)
讀作:既A1又A2並且…並且An的概率。

舉個詞性標註的簡單例子:假如一句話只有3個詞,有可能這3個詞剛好分別是A1(動詞)、A2(形容詞)和A3(名詞),例如“喝(動) 熱(形) 咖啡(名)”。我們想知道這種可能性有多大,按照公式:P(A1,A2,A3) = P(動詞,形容詞,名詞) = P(動詞) * P(形容詞|動詞) * P(名詞|動詞,形容詞)。
從公式中可以看出,越到後面,An關聯的元素就越多,如果可能性多了,處理起來非常麻煩,於是就有了它的簡化版——馬爾可夫鏈。

1.6 馬爾可夫鏈(Markov Chain)

也叫馬爾可夫過程,在序列中,每個元素的值只取決於前面某一個或某幾個元素。可以理解爲根據前一時刻的狀態規律,推算下一時刻的狀態。單項公式(簡化版):

P(An|A1,A2,...An1)=P(An|An1)
例1:以繞口令爲例,假如你把“喫葡萄不吐葡萄皮”錯說成“喫葡萄不吐’不到’皮”,說錯的原因是發音相似造成的干擾。按鏈式法則的思想,干擾因素取決於“葡萄皮”之前的所有詞彙,即“喫”、“葡萄”和“不吐”;而按馬爾可夫鏈的思想,干擾因素只和“不吐”這個詞相關。

例2:拼音輸入法輸入一個拼音時,可以根據前後兩個字在句中並列出現的概率,來判斷後面該選哪個字。(任意兩個相連字的概率是預先在大量文本中統計好的)

這是一本[shu](候選字:書,輸,淑,叔,舒,……)
P(書|這,是,一,本) = P(書|本) = 0.02
P(輸|這,是,一,本) = P(輸|本) = 0.00001
……
只要判斷“本”字後面出現“書”或“輸”字的概率,就可以知道應該選“書”,因爲“本書”的可能性遠大於“本輸”。這和人閱讀時的習慣比較相似。

例3:一個簡單的天氣模型。假設每天的天氣只有“晴”、“雨”兩種狀態,那麼從昨天到今天的天氣轉換必然是“晴→晴、晴→雨、雨→晴、雨→雨”這四種情況之一。我們統計估算出每種情況的概率,列表說明如下:

這裏寫圖片描述

把這個列表轉換一個格式,就組成了一個矩陣,稱爲轉移矩陣(Transition Matrix)。注意轉移矩陣的每一行之和爲1。

這裏寫圖片描述

使用狀態圖表示:
這裏寫圖片描述

1.7 隱馬爾可夫模型(HMM, Hidden Markov Model)

隱馬爾可夫模型是統計模型,它用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數,然後利用這些參數來作進一步的分析,例如模式識別。

隱含馬爾可夫模型在處理語言問題早期的成功應用是語音識別。七十年代,當時IBM的Fred Jelinek(賈里尼克)和卡內基·梅隆大學的Jim and Janet Baker(貝克夫婦,李開復的師兄師姐)分別獨立地提出用隱含馬爾可夫模型來識別語音,語音識別的錯誤率相比人工智能和模式匹配等方法降低了三倍(從30%到10%)。八十年代李開復博士堅持採用隱馬爾可夫模型的框架,成功地開發了世界上第一個大詞彙量連續語音識別系統Sphinx。

在1980年代後半期,HMM開始應用到生物序列尤其是DNA的分析中。此後,在生物信息學領域HMM逐漸成爲一項不可或缺的技術。

例1:一個村子裏有很多人都得了一種發燒的病症,有一位鄉村醫生挨家挨戶地探訪,想知道哪些人得了這種病症,進而瞭解這種病症是否會傳染。爲了更清楚地說明問題,我們把這個例子簡化一下:每戶家庭只有一個人;每個人只有健康和發燒兩種狀態;只用體溫表就可以檢測出是否發燒。醫生每走一戶,就根據之前最近訪問的一戶(或幾戶)人來預測下一戶人是否發燒,因此是一個馬爾可夫過程。至此,假如粗心的醫生忘帶了體溫表,那麼他就無法直接觀測到某個人是否發燒,但他還可以根據這個人是否咳嗽,額頭是否發熱,是否四肢無力等症狀來判斷是否發燒,因此,這是“隱”馬爾可夫模型(HMM);如果醫生帶了體溫表,可以直接測量病人的體溫,可直接觀測到病人是否發燒,這就是(顯)馬爾可夫模型(MM)。

例2:你每天打電話給異地的朋友,問他在正做什麼事,以此推算當地的天氣情況。假如你每次得到的答覆只有“看書”和“散步”,而每天不是“晴天”就是“雨天”,已知晴天看書和散步的概率分別是0.1和0.9,而雨天對應的概率分別是0.7和0.3。因爲天氣的情況無法直接觀察到,但朋友在某天看書或散步的行爲可以直接得知,以此來推算天氣情況,因此是隱馬爾可夫模型。(也許有人會問,爲什麼不直接查當地的天氣預報,還繞這麼個大彎來推算天氣?因爲如果直接查天氣,那就是馬爾可夫模型(MM),而不是隱馬爾可夫模型(HMM),此例只爲了說明HMM。

由於第一天無法根據前面一天的概率來推算,有時我們需要給定一個初始狀態的概率值。本例中,設第一天是晴天或雨天的概率(初始狀態)分別是0.8和0.2。下面3個表格分別是HMM的初始概率(Initial)、轉移概率(Transition)和發射概率(Emission):

這裏寫圖片描述這裏寫圖片描述
這裏寫圖片描述

這裏寫圖片描述

已知觀察序列求隱藏序列:假如你得知了你的朋友連續3天都在做什麼事,想推算這3天到底是晴天還是雨天,可是已知的只是概率數據,每天的天氣還是不確定的,這時需要綜合考慮這3天的情況,找到一種可能性最大的結果。具體來說,因爲每天都有晴天和雨天兩種可能,所以3天就有總共2^3=8種可能。要從這8種可能裏選取一個可能性最大的,就要用到一種動態規劃(Dynamic Programming)的方法,這種方法稱爲維特比(Viterbi)算法。下面通過網格圖(Trellis Diagram)來演示一下維特比算法的過程。

觀察序列和隱藏序列也稱:發射序列(seq, Emission Sequence) 和 狀態路徑(states, State Path)。

假設3天的行爲(觀察序列):散步、看書、看書.

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

注意:由於每計算一步,局部概率的值都會變小許多,當步數較多時,會帶來數值精確度的問題(小概率連乘下限溢出)。爲解決這個問題,常常使用對數概率(Log Probability)來計算。

%%%%%% Matlab代碼: %%%%%%
INIT = [0.8, 0.2]; % 初始概率 = [晴:0.8, 雨:0.2]
TRANS = [0.6 0.4; 0.3 0.7]; % 轉移概率 = [晴→(晴:0.6,雨:0.4) | 雨→(晴:0.3,雨:0.7)]
EMIS = [0.3 0.7; 0.9 0.1]; % 發射概率 = [晴→(看書:0.3,散步:0.7) | 雨→(看書:0.9,散步:0.1)]
TRANS_HAT = [0 INIT; zeros(size(TRANS,1),1) TRANS]; % 初始概率和轉移概率合體
EMIS_HAT = [zeros(1,size(EMIS,2)); EMIS]; % EMIS爲適應TRANS_HAT做補位處理

% ---------------------------------------
% 生成隨機模擬的序列,序列共6個元素

% 數字簡化版 (1代表晴, 2代表雨)
    [seq, states] = hmmgenerate(6, TRANS, EMIS); % 初始概率默認爲1
    states % 輸出狀態路徑
    % res = 2 1 1 2 2 1 %

% 文字版 (加入初始概率)
    [seq, states] = hmmgenerate(6, TRANS_HAT, EMIS_HAT, 'Symbols', {'看書', '散步'}, 'Statenames', {'初始', '晴','雨'}); % 初始概率已在TRANS_HAT中指定
    seq % 發射序列
% seq = '散步' '散步' '看書' '散步' '看書' '看書'

% ---------------------------------------
% 維特比算法,已知發射序列(觀察序列)求狀態路徑(隱藏序列)
% 文字版 (hmmviterbi也支持數字簡化版)
estimatedStates = hmmviterbi({'散步', '看書', '看書'}, TRANS_HAT,EMIS_HAT, 'Symbols', {'看書', '散步'}, 'Statenames', {0, '晴','雨'})
% estimatedStates = '晴' '雨' '雨'

例3:詞性標註(POS Tagging)是對一句話中每個詞的詞性(是動詞、名詞還是形容詞等)進行標註,是一個典型的隱馬爾可夫模型的應用。每個詞都有可能有多種詞性,例如“打”這個詞即可以是動詞(打啤酒),又可以是量詞(一打啤酒)。一句話的每個詞組成一個觀察序列,句中第一個詞爲初始狀態,詞性就是隱藏序列。我們對大量的人工標註的文本庫進行統計,可得到每種詞性出現在句首的概率(初始概率表),每種詞性的詞後面跟隨各種詞性的概率(轉移概率表),每個詞具有某種詞性的概率(發射概率表)。有了這三個表,就可以用和例2相同的方法來做詞性標註了。

以“一 打 啤酒”爲例,簡單分析一下。“一”是副詞和數詞的概率分別是0.03和0.97;“打”是量詞和動詞的概率分別是0.01和0.99;配合數詞→量詞,數詞→動詞的概率;再配合“啤酒”是100%名詞,和動詞→名詞,量詞→名詞的概率,經過維特比算法,很容易得出“數詞 量詞 名詞”這樣的標註。

參看:
隱馬爾可夫模型(HMM)攻略 http://blog.csdn.net/likelet/article/details/7056068 (詳細版 http://www.52nlp.cn/hmm-learn-best-practices-one-introduction)
吳軍《數學之美-系列二-談談中文分詞》http://wenku.baidu.com/view/42199584e53a580216fcfe0f.html

馬爾可夫(Markov)-人物簡介

這裏寫圖片描述

安德烈·馬爾可夫(Andrey Markov, 1856-1922),俄國數學家。馬爾可夫是彼得堡數學學派的代表人物,他的主要研究領域在概率和統計方面,開創了隨機過程這個新的領域。1913年1月23日,馬爾可夫向聖彼得堡皇家科學院提交了一篇論文,提出了馬爾可夫過程的概念,如今這一理論在現代工程、自然科學和社會科學各個領域都有很廣泛的應用。

1.8 樣本空間(Sample Space)

也稱事件空間(Event Space),是隨機實驗的一切可能的結果組成的集合,記作S、Ω (Omega, 歐米伽)或 U(Universal Set)。樣本空間的元素,稱爲樣本點,記作ω(小寫Ω)。全部樣本點的總概率爲1。

拋擲一枚骰子,可能出現的點數,其樣本空間S={1,2,3,4,5,6},其中的1,2,3,4,5,6,就是六個樣本點。
每次擲骰子,每種點數的出現概率都是1/6。因爲每次必然會出現1~6之間的某個點數,所以總概率爲1。

P(1)+P(2)+P(3)+P(4)+P(5)+P(6)=1/6+1/6+1/6+1/6+1/6+1/6=1
如果幾組事件(或樣本)集合起來剛好構成全部樣本空間,那麼這幾組事件稱爲完備事件組。我們對樣本空間進行劃分,例如把52張撲克牌按花色分成4組,那麼這4組樣本就構成了一個完備事件組。

這裏寫圖片描述

[注] 英文詞典沒有Complete event group這個詞條

1.9 全概率公式(Formula of Total Probability)

若B1,B2,…,Bn構成一個完備事件組,對於事件A,有全概率公式:

P(A)=P(A,B1)+P(A,B2)+.........++P(A,Bn)
根據條件概率乘法公式 P(A,B) = P(A|B)*P(B),可得出:
P(A)=P(A|B1)P(B1)+P(A|B2)P(B2)+.........+P(A|Bn)P(Bn)
此公式可以解釋爲一種求加權平均值的方法。用∑表示連加,上面的公式可以表示爲:
P(A)=i=1nP(A|Bi)P(Bi)
例:某射擊小組共有20名射手,其中一級射手4人,二級射手8人,三級射手7人、四級射手1人。一、二、三、四級射手能通過選拔進入比賽的概率分別是0.9、0.7、0.5、0.2。求任選一名射手能通過選拔進入比賽的概率。
這裏寫圖片描述

1.10 貝葉斯理論(Bayes’ Theorem)

貝葉斯理論主要是根據一些已知的經驗知識(先驗知識),來判斷一些相關的問題(後驗知識)。例如:根據一個人發燒、疼痛、咳嗽等症狀,和已知得肺炎時出現每種症狀的概率數據,推算他得肺炎的可能性。

貝葉斯理論是爲解決逆概率(Inverse Probability) 而提出的。維基百科的例子:一所學校有60%是男生,40%是女生,男生肯定穿長褲,女生一半穿長褲,一半穿裙子。正向概率:求任意一個學生穿長褲或穿裙子的概率;逆向概率:已知一個學生穿的是長褲,判斷他是男生還是女生。

百度百科的“狗叫問題”例子:
一座別墅在過去的20年裏一共發生過2次被盜,別墅的主人有一條狗,狗平均每週晚上叫3次,在盜賊入侵時狗叫的概率被估計爲0.9,問題是:在狗叫的時候發生入侵的概率是多少?

假設:A=被盜,B=狗叫;則P(B)=3/7,P(A)=2/(20*365)=2/7300,P(B|A)=0.9;
因此:P(A|B) = 0.9*(2/7300)/(3/7) = 0.00058。

這裏寫圖片描述

因爲:1天被盜時狗叫的次數(a)=2/7300*0.9次,1天狗叫的總次數(b)=3/7次,所以:平均狗叫1次時被盜的次數=a/b=(2/7300)*0.9/(3/7)=0.00058。

爲了便於初學者理解,再提供一個“狗叫問題”的簡化版:(A=被盜 B=狗叫)
已知一個小區每天被盜10次(有點誇張),狗每天總共叫30次,在每次發生被盜事件時狗都會叫2次,現在狗開始叫了,判斷此時被盜的概率。

分析:1天,被盜了10次,在這10次被盜時狗共叫了2*10=20次。因爲這一天狗總共叫了30次,其中有20次是被盜的時候叫的,所以狗叫時被盜的可能性是:20/30=2/3。

由這個簡單的例子,可得出貝葉斯公式:

P(A|B)=P(B|A)×P(A)P(B)=×
◇ P(A)是A的先驗概率(Prior),先驗概率指根據以往經驗得到的概率。
◇ P(B)是B的先驗概率,也稱標準化常量(Normalized Constant)。
◇ P(B|A)是B的後驗概率,也稱相似度(Likelihood)。
◇ P(B|A)/P(B)稱爲標準相似度(Standard Likelihood)。
◇ P(A|B)是A的後驗概率(Posterior),是最終要求的結果。

根據公式:後驗概率 = 相似度先驗概率/標準化常量 = 標準相似度先驗概率。從貝葉斯公式中可以看出,後驗概率正比於先驗概率和相似度的乘積,∝符號代表成正比(Proportional)。〖這意味着我們在比較可能性大小時,就沒必要再除以標準化常量了。〗

P(A|B)P(B|A)×P(A)
利用全概率公式,可得到擴展貝葉斯公式:
P(Ai|B)=P(B|Ai)P(Ai)nj=1P(B|Aj)P(Aj)
參看:《數學之美番外篇:平凡而又神奇的貝葉斯方法》http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/

貝葉斯(Bayes)人物簡介

這裏寫圖片描述

托馬斯·貝葉斯(Thomas Bayes, 1702–1763),英國神學家、數學家、統計學家和哲學家。出生於英國倫敦,做過神甫,1742年成爲英國皇家學會會員。貝葉斯在數學方面主要研究概率論。他首先將歸納推理法用於概率論基礎理論,並創立了貝葉斯統計理論,對於統計決策函數、統計推斷、統計的估算等做出了貢獻。他對統計推理的主要貢獻是使用了”逆概率”這個概念,並把它作爲一種普遍的推理方法提出來。貝葉斯公式是貝葉斯在1763年提出來的,拉普拉斯證明了貝葉斯定理的一個更普遍的版本,而術語貝葉斯卻是在1950年左右纔開始普遍使用,貝葉斯本人一定不會想到以他命名的這個定理如今會有這麼廣泛的應用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章