隱馬爾科夫 HMM 模型

2021-08-09 11:17:59 字數 4006 閱讀 6722

隱馬爾科夫(hidden markov model)模型是一類基於概率統計的模型,是一種結構最簡單的動態貝葉斯網,是一種重要的有向圖模型。自上世紀80年代發展起來,在時序資料建模,例如:語音識別、文字識別、自然語言處理等領域廣泛應用。隱馬爾科夫模型涉及的變數、引數眾多,應用也很廣泛,以至於很多人不明白模型到底在做什麼,模型能夠做什麼。

首先需要明確的是什麼是馬爾科夫性質。假設隨機過程中某一時刻的狀態s

ts_t

st​的概率分布滿足:

p (s

t∣st

−1,s

t−2,

...,

s0)=

p(st

∣st−

1)p(s_t|s_,s_,...,s_0)=p(s_t|s_)

p(st​∣

st−1

​,st

−2​,

...,

s0​)

=p(s

t​∣s

t−1​

)通俗的說就是,隨機過程中某一時刻的狀態s

ts_t

st​,只與它前一時刻的狀態st−

1s_st−1

​有關,以上就是馬爾科夫性質。我們知道自然世界中的很多現象都不符合這一性質,但是我們可以假設其具有馬爾科夫性質,這為原來很多無章可循的問題提供了一種解法。

如果某一隨機過程滿足馬爾科夫性質,則稱這一過程為馬爾科夫過程,或稱馬爾科夫鏈。

在馬爾科夫鏈中,每乙個圓圈代表相應時刻的狀態,有向邊代表了可能的狀態轉移,權值表示狀態轉移概率。

那hmm中的隱體現在哪呢?這裡「隱」指的是馬爾科夫鏈中任意時刻的狀態變數不可見,也就是說狀態序列s0,

s1,.

..,s

ts_0,s_1,...,s_t

s0​,s1

​,..

.,st

​無法直接觀測到。但是hmm中每時刻有乙個可見的觀測值o

to_t

ot​與之對應,而且o

to_t

ot​有且僅於當前時刻隱狀態s

ts_t

st​有關,s

ts_t

st​外化表現為o

to_t

ot​的概率稱為輸出概率,因此隱馬爾科夫模型的結構圖如下所示。

因此隱馬爾科夫模型中馬爾科夫鏈指的是隱狀態s0,

s1,.

..,s

ts_0,s_1,...,s_t

s0​,s1

​,..

.,st

​序列。

上面的定義雖然給出了隱馬爾科夫模型的書面表達,但是對於隱馬爾科夫模型的隱狀態、觀測值、轉移概率、輸出概率我們依然沒有乙個直觀的概念。下面將採用擲骰子的例子,將隱馬爾科夫模型的各種概念和例子中的變數聯絡起來。

我們假設乙個賭場裡來了乙個老千,他帶有兩種作弊骰子,分別記為骰子2,骰子3,骰子2擲出較小點數的概率較大,骰子3擲出較大點數的概率更大。所以現在我們有三種骰子,分別是賭場正常骰子1,和兩種作弊骰子2,骰子3。這就是三種隱狀態,因為我們不知道老千每次使用的是哪種骰子。但是我們知道老千切換骰子的習慣,可以表示如下圖:

這個概率就是轉移概率,表明了隱狀態從一種狀態轉換到另一種狀態的概率,可以寫成矩陣的形式:

a =(

0.15

0.45

0.40

0.30

0.20

0.50

0.20

0.50

0.30

)a= \left( \begin 0.15 & 0.45 & 0.40\\ 0.30 & 0.20 & 0.50\\ 0.20 & 0.50 & 0.30 \end \right)

a=⎝⎛​0

.150

.300

.20​

0.45

0.20

0.50

​0.4

00.5

00.3

0​⎠⎞

​我們也知道三種骰子擲出1~6點的概率分別如下:

這些概率就稱作輸出概率,因為這個概率表明了從某種骰子(隱變數)到骰子點數(可觀測值)的概率。輸出概率也可以用矩陣的形式表示如下:

b =(

0.16

0.16

0.16

0.16

0.16

0.16

0.06

0.06

0.06

0.06

0.06

0.70

0.40

0.20

0.15

0.05

0.05

0.05

)b= \left( \begin 0.16 & 0.16 & 0.16 & 0.16 & 0.16 & 0.16\\ 0.06 & 0.06 & 0.06 & 0.06 & 0.06 & 0.70\\ 0.40 & 0.20 & 0.15 & 0.05 & 0.05 & 0.05 \end \right)

b=⎝⎛​0

.160

.060

.40​

0.16

0.06

0.20

​0.1

60.0

60.1

5​0.

160.

060.

05​0

.160

.060

.05​

0.16

0.70

0.05

​⎠⎞​

以上轉移概率矩陣和輸出概率矩陣就囊括了整個hmm模型,這個模型描述了狀態轉移的所有可能以及概率,也表明了狀態改變帶來的外在表現的呈現以及概率。

因此,用一句話總結hmm模型就是:有乙個隨時間不斷改變的隱藏狀態,它持續影響系統的外在表現。

hmm模型可以用五元組(o,s

,a,b

,πo,s,a,b,\pi

o,s,a,

b,π)表示。其中

根據以上hmm模型五元組表示,我們可以歸納出hmm模型解決的三類主要問題。

已知狀態轉移矩陣a

aa,輸出矩陣b

bb,和觀測序列,求該觀測序列出現的可能性。

這就是評估問題,最顯而易見的乙個應用就是異常檢測,如果乙個多次hmm模型實驗的結果都顯示觀測序列出現的概率較小,說明觀測序列和模型不太吻合,則可以斷定系統可能出現了異常。該問題最簡單粗暴的解法就是直接組合出所有的可能隱藏狀態序列,然後求出每個隱藏狀態序列導致觀測序列發生的概率,最後將概率求和即是最終結果。但是列舉出所有可能的狀態序列是乙個指數**增長的問題,在實際系統中不太可能實現。因此有人提出了forward/backward 演算法。(具體演算法後面分章節再介紹)

已知狀態轉移矩陣a

aa,輸出矩陣b

bb,和觀測序列,找出最有可能產生該觀測序列的隱藏狀態序列。

這個問題通常被稱作解碼問題,該問題通常也被稱作「由果溯因」。隱狀態通常是導致系統外在表現變化的「內因」,觀測序列只是隱狀態變化帶來的「結果」。最常見的應用就是語音識別,即將某一段語音轉化成對應的文字序列。解決該問題也可以採用同問題一類似的列舉法,只需要將所有可能序列的概率求和改為找最大概率對應序列即可,但同樣效率不高。因此解決此類問題常用viterbi演算法。(具體演算法後面分章節再介紹)

已知僅僅是很多觀測序列,估計hmm模型的引數的可能取值。

這個問題被稱作學習問題,通過大量的樣本資料去學習最優的模型引數,該問題的求解比較複雜,常採用baum-welch演算法。

知乎【如何用簡單易懂的例子解釋隱馬爾可夫模型?】

隱馬爾科夫模型HMM

我們通常都習慣尋找乙個事物在一段時間裡的變化規律。在很多領域我們都希望找到這個規律,比如計算機中的指令順序,句子中的詞順序和語音中的詞順序等等。乙個最適用的例子就是天氣的 首先,本文會介紹聲稱概率模式的系統,用來 天氣的變化 然後,我們會分析這樣乙個系統,我們希望 的狀態是隱藏在表象之後的,並不是我...

HMM隱馬爾科夫模型

問題 講講hmm隱馬爾科夫模型 1 隱馬爾科夫模型是關於時序的概率模型,是由乙個隱藏的馬爾科夫鏈隨機生成不可觀測的隨機狀態序列,並由各個狀態生成乙個觀測而產生觀測隨機序列的過程。統計學習方法 cha10 概念解釋 馬爾可夫鏈 一階馬爾可夫過程,即未來狀態僅與當前狀態有關,與過去無關。馬爾可夫過程 狀...

隱馬爾科夫模型HMM

使用hmm模型時我們的問題一般有這兩個特徵 我們的問題是基於序列的,比如時間序列,或者狀態序列。我們的問題中有兩類資料,一類序列資料是可以觀測到的,即觀測序列 而另一類資料是不能觀察到的,即隱藏狀態序列,簡稱狀態序列。有了這兩個特徵,那麼這個問題一般可以用hmm模型來嘗試解決。這樣的問題在實際生活中...