在講隱馬爾可夫模型前,,先介紹一下什么是馬爾可夫鏈。 馬爾可夫鏈(Markov chain),,又稱離散時(shí)間馬爾可夫鏈,,因俄國數(shù)學(xué)家安德烈馬爾可夫St +1St 決定,與之前的狀態(tài)無關(guān),。
即:P(St +1 | S2, t) = P(St+1| St 符合該性質(zhì)的隨機(jī)過程則稱為馬爾可夫過程,,也稱為馬爾可夫鏈。 假設(shè)有一只程序猿,,它每天心情狀態(tài)有三種:心情舒暢 goodnormal,、心情bad。狀態(tài)間的轉(zhuǎn)移是存在某個(gè)概率的,。如下圖所示: 圖 1 程序猿心情狀態(tài)圖
Sgood Snormal0.9Sgood 轉(zhuǎn)移到下一時(shí)刻狀態(tài)Sbad 的概率為0.1Snormal轉(zhuǎn)移到下一時(shí)刻還是自身的概率為0.7,當(dāng)Snormal Sbad0.3Sbad轉(zhuǎn)移到下一時(shí)刻狀Snormal 1 一個(gè)含有 N 個(gè)狀態(tài)的馬爾可夫鏈有 N 2 個(gè)狀態(tài)轉(zhuǎn)移,。這所有的 N 2 個(gè)概率可以用一個(gè)狀態(tài)轉(zhuǎn)移矩陣 A 來表示: 這個(gè)狀態(tài)轉(zhuǎn)移矩陣 A 表示,,如果在t 時(shí)刻該程序猿的心情狀態(tài)是舒暢,則在 t+1 時(shí)刻的心情狀態(tài)是舒暢,、一般,、糟糕的概率分別為(0,0.9,0.1),。 隱馬爾可夫模型(Hidden Markov ModelsHMM)的出現(xiàn),是為了彌補(bǔ)馬爾可夫模型的不足,,在某些較為復(fù)雜的隨機(jī)過程中,,任一時(shí)刻 t t 是不可見的。所以觀察者1, L , t ,,但是隱馬爾可夫模型在每個(gè)時(shí)刻 t 態(tài)Ot ,,而且Ot St 相關(guān)。這個(gè)被稱為獨(dú)立輸出假設(shè),。由此可生成一個(gè)觀測序列O1 , O2 , L , Ot ,。 獨(dú)立輸出假設(shè)可記為: P(Ot | O1, O2 ,L, Ot -1, S1, S2 ,L, St ) = P(Ot | St )
隱馬爾可夫模型的結(jié)構(gòu)如下: 圖 2 隱馬爾可夫模型結(jié)構(gòu)圖 隱馬爾可夫模型是由初始概率分布、狀態(tài)轉(zhuǎn)移概率分布以及觀測概率分布確定,。隱馬爾可夫模型的形式定義如下: Q 是所有可能的狀態(tài)的集合,,V 是所有可能的觀測的集合。 S 是長度為T 的狀態(tài)序列,,O 是對應(yīng)的觀測序列,。 A 是狀態(tài)轉(zhuǎn)移概率矩陣: 是在時(shí)刻t 處于狀態(tài)qi 的條件下,在時(shí)刻 t+1 轉(zhuǎn)移到狀態(tài)qj 的概率,。 B 是觀測概率矩陣: 是在時(shí)刻t 處于狀態(tài)qj的條件下,,生成觀測值Vk的概率。
π是初始狀態(tài)概率向量: 其中,, 是時(shí)刻 t=1 處于狀態(tài)qj的概率,。 隱馬爾可夫模型由初始狀態(tài)概率向量πA 和觀測概率矩陣 B 決定。πA 決定了狀態(tài)序列,,B 決定觀測序列,。因此,隱馬爾可夫模型λ可以用三元符號表示,,即: 圍繞著隱馬爾可夫模型通常有 3 個(gè)基本問題需要解決: 1,、模型評估問題(概率計(jì)算問題) 給定模型參數(shù),計(jì)算某一觀測序列輸出的概率,。 2,、解碼問題(預(yù)測問題) 給定模型參數(shù)和某一觀測序列,,計(jì)算得到最有可能輸出這一觀測序列的狀態(tài)序列,。 3、參數(shù)估計(jì)問題(屬于非監(jiān)督學(xué)習(xí)算法) 給定足夠的觀測序列集,,如何計(jì)算得到模型的所有參數(shù),。
講到這,隱馬爾可夫模型的理論定義和三個(gè)問題都介紹完畢,。 可能有朋友會問,,這個(gè)模型到底有什么用,?
先假設(shè)我們已經(jīng)解決了以上的 3 想必“隱馬爾可夫模型有什么用”這個(gè)問題便不攻自破了。
典型的通信系統(tǒng)(該案例參考自吳軍《數(shù)學(xué)之美》第二版,,P51) l 發(fā)送者(人或者機(jī)器)發(fā)送信息時(shí),,需要采用一種能在媒體中(比如空氣、電線) 傳播的信號,,比如語音或者電話線的調(diào)制信號,,這個(gè)過程就是廣義上的編碼。 l 然后通過媒體傳播到接收方,,這個(gè)過程是信道傳輸,。 l 在接收方,接收者(人或者機(jī)器根據(jù)事先約定好的方法,,將這些信號還原成發(fā)送者的信息,,這個(gè)過程是廣義上的解碼。 下圖表示了一個(gè)典型的通信系統(tǒng),。 圖 3 通信模型 , S2 , , Sn O2 , Om (比如另一部手機(jī)接收到的信號,。通信中的解碼就是根據(jù)接收到的信號, O2 ,LOm S2 ,LSn 。 這跟自然語言處理又有什么關(guān)系,?不妨換個(gè)角度來考慮這個(gè)問題,,所謂的語音識別,就(機(jī)器去猜測說話者要表達(dá)的意思,。這就像通信系統(tǒng)中,,接收端根據(jù)收到的信號去還原出發(fā)送端發(fā)出的信號。
在通信中,,如何根據(jù)接收端的觀測信號O1 , O2 , Om 來推測信號源發(fā)送的信息 S1 , S2 , L , Sn 呢,?只需要從所有的源信息中找到最可能產(chǎn)生出觀測信號的那一個(gè)信息。即: , S2 , , Sn P(S1 , S2 , , Sn | O2 , Om ) 達(dá)到最大值,。
這個(gè)問題其實(shí)就是隱馬爾可夫模型所提出的第 2 某一觀測序列,,計(jì)算得到最有可能輸出這一觀測序列的狀態(tài)序列。
接下來我們逐一解決以上 3 行了簡化,,并修改成了符合隱馬爾可夫模型的案例,。 圖 4 隱馬爾可夫模型“程序猿心情狀態(tài)”案例升級版 在該模型中,初始狀態(tài)概率向量p = {Sgood = 0.8, Sbad = 0.2},,隱藏狀態(tài) N=2,,可觀測狀態(tài) M=3,狀態(tài)轉(zhuǎn)移概率矩陣 A 和觀測概率矩陣 B 分別為: 在狀態(tài)轉(zhuǎn)移概率矩陣 A 1 行代表t 時(shí)刻心情舒暢狀態(tài),,t+1 時(shí)刻心情狀態(tài)分別是舒暢,、糟糕的概率為(0.7,0.3)2 行同理。 在觀測概率矩陣B 1 t 時(shí)刻心情為舒暢狀態(tài),,t 時(shí)刻觀測到的程序猿行為狀態(tài)分別為出門旅游,、在實(shí)驗(yàn)室寫代碼,、回寢室睡覺的概率分別為(0.3,0.5,0.2)2 行同理。 現(xiàn)在開始解決上述的 3 個(gè)問題,。 1,、模型評估問題(概率計(jì)算問題) 模型的各個(gè)參數(shù)現(xiàn)在已全部知道,假設(shè)連續(xù) 3 天該程序猿的行為分別是出門旅游→在實(shí)驗(yàn)寫代碼→回寢室睡覺,,計(jì)算產(chǎn)生這些行為的概率是多少,? 解: 求解該問題可以使用遍歷法,即把所有可能的情況都計(jì)算出來,,然后將概率相加,。在該 案例中共有 3 種可觀測狀態(tài),2 種隱藏狀態(tài),,所以共有23 = 8 種可能的情況,。由于該算法較為笨拙且計(jì)算繁瑣,在此我就計(jì)算第一種情況,,后面同理可得,。其中一種: 第 1 天心情舒暢→第 1 天出門旅游→第 2 天心情舒暢→第 2 天在實(shí)驗(yàn)室寫代碼→第 3 天心情舒暢→第 3 天回寢室睡覺。用符號表達(dá)即: 計(jì)算過程如下: 通常求解該問題,,使用前向或后向算法,,這樣計(jì)算復(fù)雜度會比遍歷法有所降低。以前向算法為例求解: t=1 時(shí),,發(fā)生 trip 這一行為的概率為: t=2 時(shí),,根據(jù)上述的獨(dú)立輸出假設(shè),發(fā)生 lab 這一行為的概率為: t=3 時(shí),,根據(jù)上述的獨(dú)立輸出假設(shè),,發(fā)生sleep 這一行為的概率為: 綜上, 2,、解碼問題(預(yù)測問題) 解決該類問題,,通常使用維特比算法。維特比算法是一種動(dòng)態(tài)規(guī)劃算法,,它用于尋找最有可能產(chǎn)生觀測序列的隱藏狀態(tài)序列,。 回溯每一步的最大概率: 3、參數(shù)估計(jì)問題(屬于非監(jiān)督學(xué)習(xí)算法參數(shù)估計(jì)時(shí),,有兩種不同的估計(jì)情況,。 第一種是,我們已知大量的隱藏狀態(tài)集和觀測狀態(tài)集,,并且知道它們之間的對應(yīng)關(guān)系,, 這樣在訓(xùn)練參數(shù)時(shí),,直接計(jì)算各個(gè)參數(shù)的相對頻度即可代替概率,。這種情況的數(shù)據(jù)屬于 使用的是鮑姆-韋爾奇算法,。
鮑姆-韋爾奇算法的思想是這樣的: 首先初始化各個(gè)參數(shù)的值,值的大小不重要,,重要的是要保證這些參數(shù)在模型中時(shí),,可以輸出觀測序列。有了初始化的各個(gè)參數(shù)后,,隱馬爾可夫模型就算初步齊全了,,這時(shí)使用該模型輸出所有可能的觀測序列以及產(chǎn)生這些觀測序列的概率。有了這些初步得到的觀測序列和概率后,,其實(shí)就相當(dāng)于有了一定的人工標(biāo)注數(shù)據(jù),,此時(shí)再去計(jì)算模型的參數(shù), 一步步迭代,,直到模型收斂到一個(gè)局部最優(yōu)點(diǎn),。 文章參考自: 吳軍《數(shù)學(xué)之美》; 李航《統(tǒng)計(jì)學(xué)習(xí)方法》,; 周志華《機(jī)器學(xué)習(xí)》,; 博客園,我是 8 位的,,隱馬爾可夫模型(一) http://www.cnblogs.com/bigmonkey/p/7230668.html,; 博客園,bonelee,,隱形馬爾可夫模型——前向算法就是條件概率 https://www.cnblogs.com/bonelee/p/7059082.html |
|