隱馬爾可夫模型

隱馬爾可夫模型(HMM)是一種統計模型算法

先來看一個維基百科提供的例子:atom

https://en.wikipedia.org/wiki/Hidden_Markov_modelspa

假設你有一個住得很遠的朋友,他天天跟你打電話告訴你他那天作了什麼。你的朋友僅僅對三種活動感興趣:公園散步,購物以及清理房間。他選擇作什麼事情只憑天氣。你對於他所住的地方的天氣狀況並不瞭解,可是你知道總的趨勢。在他告訴你天天所作的事情基礎上,你想要猜想他所在地的天氣狀況。orm

你知道這個地區的總的天氣趨勢,而且平時知道你朋友會作的事情.也就是說這個隱馬爾可夫模型的參數是已知的xml

這就是一個簡單的 HMM,天氣情況屬於狀態序列,而她的行爲則屬於觀測序列。而根據天氣的不一樣,有相對應的機率產生不一樣的行爲。在這裏,爲了簡化,把天氣狀況簡單歸結爲晴天和雨天兩種狀況。雨天,他選擇去散步,購物,收拾的機率分別是0.1,0.4,0.5, 而若是是晴天,他選擇去散步,購物,收拾的機率分別是0.6,0.3,0.1。而天氣的轉換狀況以下:這一天下雨,則下一天依然下雨的機率是0.7,而轉換成晴天的機率是0.3;這一天是晴天,則下一天依然是晴天的機率是0.6,而轉換成雨天的機率是0.4. 同時還存在一個初始機率,也就是第一天下雨的機率是0.6, 晴天的機率是0.4.

 

咱們的觀察集合是: blog

V={散步,購物,收拾};
遞歸

全部的可能的觀察數:ip

M=3;
get

觀察者只能看到朋友的行爲序列,卻不能看到朋友所在地區的天氣。數學

咱們的狀態集合是:

Q={雨天,晴天};

全部的可能的狀態數:

N=2

初始狀態分佈爲:

π=(0.6,0.4)T

狀態轉移機率分佈矩陣A:

 

觀測狀態機率矩陣B:

 
 

如今,重點是要了解並解決HMM 的三個問題:
問題1,已知整個模型, 朋友告訴我,連續三天,他下班後作的事情分別是:散步,購物,收拾。那麼,根據模型,計算產生這些行爲的機率是多少。
問題2,一樣知曉這個模型,一樣是這三件事, 朋友要我猜,這三天他下班後北京的天氣是怎麼樣的。這三天怎麼樣的天氣才最有可能讓他作這樣的事情。
問題3,最複雜的, 朋友只告訴我這三天他分別作了這三件事,而其餘什麼信息我都沒有。他要我創建一個模型,晴雨轉換機率,第一每天氣狀況的機率分佈,根據天氣狀況他選擇作某事的機率分佈。

 

具體如何解決這三大問題。須要數學基礎,機率基礎。

問題1的解決1:遍歷算法。

要計算產生這一系列行爲的機率,那咱們把每一種天氣狀況下產生這些行爲都羅列出來,那每種狀況的和就是這個機率。

有3天,天天有2種可能的天氣狀況,則總共有

種狀況

舉例其中一種狀況 :

P(下雨,下雨,下雨,散步,購物,收拾)= P(第一天下雨)P(第一天下雨去散步)P(次日接着下雨)P(下雨去購物)P(第三天還下雨)P(下雨回家收拾)=0.6X0.1X0.7X0.4X0.7X0.5=0.00588
固然,這裏面的 P(次日接着下雨)固然是已知第一天下雨的狀況下,次日下雨的機率,爲0.7.
將八種狀況相加可得,三天的行爲爲{散步,購物,收拾}的可能性爲0.033612. 看似簡單易計算,可是一旦觀察序列變長,計算量就會很是龐大


問題1 的解決2:向前算法。

1)先計算 t=1時刻,發生‘’散步‘’一行爲的機率:

1.1)若是下雨,則爲

1.2)若是晴天:

2)t=2 時刻,發生「購物」的機率,固然,這個機率能夠從 t=1 時刻計算而來:

2.1)若是t=2下雨,則

2.2)若是 t=2晴天,則

P(第一天散步,次日購物,次日晴天)=0.0486 (同理可得)

3)t=2 時刻:

3.1)若是 t=3,下雨,則

3.2)若是t=3,晴天,則

P(第一天散步,次日購物,第三天收拾,第三天晴天)= 0.004572

那麼 P(第一天散步,次日購物,第三天收拾),這一律率則是第三天,下雨和晴天兩種狀況的機率和:

0.02904+0.004572=0.033612

以上例子能夠看出,向前算法計算了每一個時間點時,每一個狀態的發生觀測序列的機率,看似繁雜,但在 T 變大時,複雜度會大大下降。

 

問題1的解決3:向後算法

顧名思義,向前算法是在時間 t=1的時候,一步一步往前計算。而相反的,向後算法則是倒退着,從最後一個狀態開始,慢慢日後推。
給定的模型 ,觀測序列O,定義t時刻狀態爲qi 的條件下,從t+1到T時刻的部分部分觀察序列爲Oi +1, Oi+2, ... , OT, 記做:
 

能夠用遞歸的方式求得後向機率

及觀測機率

(1)初始化後向機率:

(2)遞推:

 

其中第一項則是轉移機率,次日下雨轉到第三天下雨的機率爲0.7;第二項則是觀測機率,第三天下雨的情況下,在家收拾的機率爲0.5;第三項就是咱們定義的向後變量

同理,可得

(3)終止:

三種算法的答案是一致的

相關文章
相關標籤/搜索