初識(shí)(隱)馬爾可夫模型|一種預(yù)測(cè)未來(lái)的算法

一、什么是馬爾可夫模型

馬爾可夫在研究概率論時(shí)候發(fā)現(xiàn):現(xiàn)實(shí)世界中,很多事情的未來(lái)只取決于現(xiàn)在,而與過(guò)去無(wú)關(guān)!

具體來(lái)說(shuō)就是——很多系統(tǒng)轉(zhuǎn)換到一個(gè)新?tīng)顟B(tài)的概率,只由當(dāng)前狀態(tài)決定,與歷史路徑無(wú)關(guān)!

如果一個(gè)系統(tǒng)的動(dòng)態(tài)變化符合這個(gè)假設(shè),我們就會(huì)說(shuō)它具備馬爾可夫性。

比如,若我們認(rèn)為短期天氣變化是具備馬爾科夫性的—即明天的天氣是什么只取決于今天的天氣狀況,和昨天以及更久的以前無(wú)關(guān)。

那么基于這個(gè)模型我們來(lái)看看怎樣進(jìn)行天氣預(yù)測(cè)——

假設(shè)長(zhǎng)期觀察后發(fā)現(xiàn)某一個(gè)地區(qū)天氣變化有以下規(guī)律:

某一天天氣是晴,那么它接下來(lái)一天的天氣是晴的概率是80%,是雨的概率是20%;

某一天天氣是雨,那么它接下來(lái)一天的天氣是晴的概率是40%,是雨的概率是60%;

做成表格形式如下:

當(dāng)前天氣\下一天天氣
80% 20%
40% 60%

問(wèn)題來(lái)了——

已知今天天氣是晴天

那明天天氣狀態(tài)如何?

很明顯明天天氣是晴天的概率是80%,雨天的概率是20%。

后天呢?

該根據(jù)馬爾可夫模型,后天天氣只跟明天天氣有關(guān)。

那么后天天氣是晴天的概率是:

P(后天=晴)=P(明天=晴)×0.8+P(明天=雨)×0.4=0.8×0.8+0.2×0.4=0.72

P(后天=雨)= P(明天=晴)×0.2+P(明天=雨)×0.6=0.8×0.2+0.2×0.6=0.28

其中P(后天=晴)代表后天是雨天的概率。

這就是馬爾可夫可夫模型最基礎(chǔ)的應(yīng)用。

小結(jié)下

馬爾可夫模型最初出現(xiàn)是為了預(yù)測(cè)未來(lái)或者說(shuō)推斷一個(gè)系統(tǒng)動(dòng)態(tài)變化的規(guī)律,

利用馬爾可夫模型需要知道三個(gè)條件:

  1. 狀態(tài)集合 : 系統(tǒng)可能出現(xiàn)的所有狀態(tài),比如 {晴、雨}
  2. 初始狀態(tài)分布:系統(tǒng)一開(kāi)始在哪個(gè)狀態(tài)的概率,比如上文中 已知今天晴天(可以認(rèn)為是今天晴天概率100%);
  3. 轉(zhuǎn)移概率矩陣:當(dāng)前狀態(tài)到下一個(gè)狀態(tài)轉(zhuǎn)換概率矩陣,比如上文中當(dāng)前天氣到下一天天氣的轉(zhuǎn)換表格就是轉(zhuǎn)移概率。

講到這里,我們有了第一個(gè)疑問(wèn):怎么判斷一個(gè)系統(tǒng)的動(dòng)態(tài)變化規(guī)律能夠利用馬爾可夫模型進(jìn)行推斷?

接下來(lái),我們就開(kāi)始探討這件事——


二、馬爾可夫模型的適用范圍

首先要聲明

“沒(méi)有完全馬爾可夫的世界,只有足夠接近的馬爾可夫模型的場(chǎng)景

在現(xiàn)實(shí)世界中一個(gè)事件的發(fā)生涉及到的因素太多、太復(fù)雜,很難全部建模和分析。

但是我們發(fā)現(xiàn)很多場(chǎng)景和系統(tǒng)中

只考慮上一時(shí)刻的影響,其它忽略,也可以推斷出未來(lái)趨勢(shì)!

就是說(shuō)在這種場(chǎng)景下可以用馬爾可夫模型來(lái)推算未來(lái)趨勢(shì)。

那怎么判斷一個(gè)系統(tǒng)或者某個(gè)場(chǎng)景可以使用馬爾可夫模型進(jìn)行推斷呢?

目前主要有三種方法:

① 經(jīng)驗(yàn)觀察(數(shù)據(jù)統(tǒng)計(jì)法)

拿歷史數(shù)據(jù)看看:

比如天氣序列:

昨天 晴 → 今天 晴
昨天 雨 → 今天 晴

我們可以統(tǒng)計(jì):

昨天天氣 今天晴的概率
0.8
0.4

再進(jìn)一步看:

如果我們考慮前天呢?比如:

  • 前天晴、昨天天晴 → 今天晴 的概率
  • 前天雨、昨天天晴 → 今天晴 的概率

如果這兩者幾乎相等,說(shuō)明“前天”對(duì)預(yù)測(cè)沒(méi)啥額外信息;
此時(shí)我們可以說(shuō):這個(gè)系統(tǒng)“近似滿(mǎn)足馬爾可夫性”。

② 物理或邏輯判斷(理論依據(jù)法)

有些系統(tǒng)天然地具有“當(dāng)前決定未來(lái)”的特征。

比如:

  • 一個(gè)粒子的運(yùn)動(dòng),只要知道當(dāng)前位置和速度(即當(dāng)前狀態(tài)),下一步就能算出它的位置;
  • 某機(jī)器設(shè)備只要知道當(dāng)前狀態(tài)(開(kāi)/關(guān)、溫度、壓力),就能預(yù)測(cè)下一個(gè)狀態(tài)。

在這種情況下,系統(tǒng)物理上就符合馬爾可夫性。

這是從上帝視角看的:世界是馬爾可夫的,因?yàn)榇丝痰囊磺袥Q定了下一刻。

但從人類(lèi)建模視角看:世界不是馬爾可夫的,因?yàn)槲覀冇肋h(yuǎn)拿不到“此刻的一切”。

③ 實(shí)驗(yàn)驗(yàn)證(建模后檢驗(yàn)法)

即便一開(kāi)始不能確定,也可以:

  1. 用馬爾可夫模型建模;
  2. 再用更復(fù)雜的“高階模型”或“帶記憶的模型”建模;
  3. 比較它們?cè)陬A(yù)測(cè)上的效果。

如果馬爾可夫一階模型(只看當(dāng)前)和二階模型(看當(dāng)前+上一個(gè))效果差不多,
那就說(shuō)明一階馬爾可夫假設(shè)足夠用了。

如果通過(guò)以上驗(yàn)證后系統(tǒng)變換還是不符合馬爾可夫性怎么辦?

可以有幾種改進(jìn)方向??

情況 處理方法
需要考慮更早的狀態(tài) 使用 高階馬爾可夫模型(如二階:考慮上兩個(gè)時(shí)刻)
狀態(tài)信息不完整 擴(kuò)充“狀態(tài)定義”,讓狀態(tài)本身攜帶更多歷史信息
系統(tǒng)太復(fù)雜 使用 隱馬爾可夫模型 (HMM)循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN) 來(lái)建模時(shí)間依賴(lài)

例如:
如果“今天的天氣”受“昨天+前天”影響,我們可以把“昨天+前天”合并定義成一個(gè)復(fù)合狀態(tài):

狀態(tài) = (前天天氣, 昨天天氣)

這樣又能“恢復(fù)”馬爾可夫性。

那是否是說(shuō)所有系統(tǒng)最后都可以利用馬爾可夫模型進(jìn)行推斷?

非也!

馬爾可夫模型(HMM)本質(zhì)上是一種基于(時(shí)間)序列的概率模型,就是說(shuō)它必須滿(mǎn)足:

  • 系統(tǒng)狀態(tài)是離散或可離散化的、或可以用有限個(gè)隱狀態(tài)表示(隱馬爾可夫模型);
  • 系統(tǒng)是基于時(shí)間序列/序列演化的,有明確的順序;
  • 狀態(tài)隨時(shí)間變化具有局部依賴(lài)性,過(guò)去的影響可以被“當(dāng)前狀態(tài)”壓縮表示。

典型例子:

  • 語(yǔ)音識(shí)別(音素狀態(tài)序列)
  • 導(dǎo)航系統(tǒng)中的軌跡預(yù)測(cè)
  • 用戶(hù)行為建模(點(diǎn)擊序列、行為序列)

那不適合直接用 HMM 的情況有哪些呢?

一些系統(tǒng)雖然有序列,但歷史依賴(lài)很強(qiáng)、狀態(tài)空間龐大、狀態(tài)非離散,HMM 很難直接建模:

  • 自然語(yǔ)言長(zhǎng)句子生成(長(zhǎng)距離依賴(lài)非常明顯)
  • 股市價(jià)格預(yù)測(cè)(價(jià)格受長(zhǎng)期趨勢(shì)影響,非一階馬爾可夫)
  • 高維連續(xù)控制系統(tǒng)(機(jī)器人控制、物理仿真)

在這些系統(tǒng)里,用 HMM 可能會(huì)丟失重要?dú)v史信息或者狀態(tài)信息,需要用 RNN、Transformer、LSTM、強(qiáng)化學(xué)習(xí)等方法。

所以不能說(shuō)“所有系統(tǒng)都可以用馬爾可夫模型推斷”,只能說(shuō)“很多序列化、短期相關(guān)的系統(tǒng)可以用馬爾可夫模型進(jìn)行有效推斷”,而對(duì)于更復(fù)雜的系統(tǒng),需要改進(jìn)或用更強(qiáng)大的模型。


三、馬爾可夫模型怎么使用?

ok,在了解了馬爾可夫模型的適用范圍后,我們來(lái)談?wù)勸R爾可夫模型怎么使用?

在第一章最后,我們談到利用馬爾可夫模型需要知道三個(gè)條件:

  1. 狀態(tài)集合 : 系統(tǒng)可能出現(xiàn)的所有狀態(tài),比如 {晴、雨}
  2. 初始狀態(tài)分布:系統(tǒng)一開(kāi)始在哪個(gè)狀態(tài)的概率,比如上文中 已知今天晴天(可以認(rèn)為是今天晴天概率100%);
  3. 轉(zhuǎn)移概率矩陣:當(dāng)前狀態(tài)到下一個(gè)狀態(tài)轉(zhuǎn)換概率矩陣,比如上文中當(dāng)前天氣到下一天天氣的轉(zhuǎn)換表格就是轉(zhuǎn)移概率。

我們對(duì)一個(gè)系統(tǒng)進(jìn)行馬爾可夫建模,關(guān)鍵就獲取這三個(gè)條件,這三者一旦確定,整個(gè)馬爾可夫過(guò)程就被完全定義。

接下來(lái)我們就來(lái)討論下這三項(xiàng)是怎么獲取的

3.1 狀態(tài)集合(State Set)怎么定義?

?? 含義

狀態(tài)是在某一時(shí)刻下,能夠描述系統(tǒng)當(dāng)前行為特征、并決定其未來(lái)演化規(guī)律的變量或變量集合。

狀態(tài)是系統(tǒng)的核心內(nèi)部變量,它決定系統(tǒng)的演化與輸出;而觀測(cè)值只是狀態(tài)投射到外部世界后的一個(gè)“影子”。

比如:我們說(shuō)一個(gè)人的有一個(gè)狀態(tài)是勇敢或者怯懦,這個(gè)狀態(tài)能夠決定他面對(duì)真正困難的具體行為是迎難而上還是躲避,但是我們從他外貌和日常生活中很難直接觀測(cè)出來(lái),只能通過(guò)無(wú)數(shù)個(gè)小事去推斷他的這個(gè)狀態(tài)。

狀態(tài)集合是系統(tǒng)中可能出現(xiàn)的所有“狀態(tài)”取值集合。
比如:

  • 天氣模型:{晴,陰,雨}
  • 用戶(hù)行為模型:{瀏覽,點(diǎn)擊,購(gòu)買(mǎi),離開(kāi)}
  • 導(dǎo)航模型:{路段A,路段B,路段C}
  • 語(yǔ)音識(shí)別:{音素b, a, t, ...}

?? 定義方法

  1. 已知定義
    如果系統(tǒng)本身就是離散的(如天氣、用戶(hù)行為、交通路段),我們直接采用原來(lái)的定義。

例:天氣模型,我們?nèi)藶闆Q定狀態(tài)集合為 {晴, 陰, 雨}。

  1. 數(shù)據(jù)驅(qū)動(dòng)劃分并定義
  • 我們沒(méi)有直接的狀態(tài)標(biāo)簽,只有觀測(cè)數(shù)據(jù)(比如氣壓、溫度、股價(jià)特征等)。
  • 通過(guò)聚類(lèi),把這些觀測(cè)樣本分成幾組,每組的統(tǒng)計(jì)特征相似。
  • 每一組就代表一種狀態(tài)(比如晴天、雨天、震蕩期、下跌期)。
  • 新的觀測(cè)數(shù)據(jù)出現(xiàn)時(shí),只要看看它最像哪一類(lèi)(例如通過(guò)距離或概率),
    就能判斷它“當(dāng)前處于哪個(gè)狀態(tài)”。
  • 然后再用狀態(tài)序列統(tǒng)計(jì)轉(zhuǎn)移頻率,得到轉(zhuǎn)移概率矩陣

例:在語(yǔ)音識(shí)別中,我們先提取音頻特征,然后用聚類(lèi)算法(如K-Means)把聲學(xué)特征劃成若干類(lèi),每一類(lèi)對(duì)應(yīng)一個(gè)“隱藏狀態(tài)”。

  1. 理論建模確定
    對(duì)于一些控制系統(tǒng)或物理系統(tǒng),狀態(tài)就是系統(tǒng)變量的組合。

例:機(jī)器人狀態(tài) = [位置x, 速度v, 姿態(tài)θ]。

3.2、初始狀態(tài)分布(Initial State Distribution)怎么獲???

?? 含義

初始狀態(tài)分布(通常記作 π)表示系統(tǒng)在起始時(shí)刻各狀態(tài)出現(xiàn)的概率

  • 當(dāng)前狀態(tài)已知:設(shè)為 100%(確定狀態(tài))
  • 當(dāng)前狀態(tài)未知:用歷史統(tǒng)計(jì)分布

比如在某一個(gè)地區(qū)的?? 天氣模型,根據(jù)歷史統(tǒng)計(jì),假設(shè):

P(晴)=0.6, P(陰)=0.3, P(雨)=0.1

若如你只是想預(yù)測(cè)“明天天氣”,而今天確實(shí)知道是晴天,
那就直接設(shè)定:

π=[1,0,0]

——這時(shí)候馬爾可夫鏈的第一步是從“晴天”出發(fā),完全確定。
但如果你想做“未來(lái) 30 天的天氣序列仿真”,而你不知道今天的天氣,
就只能用過(guò)去經(jīng)驗(yàn)分布(比如平均氣候統(tǒng)計(jì)):

π=[0.6,0.3,0.1]

這更符合隨機(jī)仿真的設(shè)定。

?? 獲取方法

  • 直接設(shè)定:適合有明確起點(diǎn),且知道起點(diǎn)明確狀態(tài)的場(chǎng)景
  • 從數(shù)據(jù)統(tǒng)計(jì):無(wú)明確起點(diǎn),直接統(tǒng)計(jì)樣本中初始狀態(tài)出現(xiàn)的頻率;
  • 假設(shè)均勻分布:如果缺乏先驗(yàn)知識(shí),可認(rèn)為所有狀態(tài)等可能;
  • 由其他模型估計(jì):有時(shí)初始狀態(tài)分布來(lái)自上一個(gè)系統(tǒng)的輸出結(jié)果(例如語(yǔ)音上下文、導(dǎo)航預(yù)測(cè))。

3.3、轉(zhuǎn)移概率矩陣(Transition Probability Matrix)怎么獲???

?? 含義

描述系統(tǒng)從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)的概率:

a_{ij}=P(S_{t+1}=j∣S_t=i)

比如天氣模型:

當(dāng)前→次日
0.7 0.2 0.1
0.3 0.4 0.3
0.2 0.5 0.3

?? 獲取方法

1?? 監(jiān)督學(xué)習(xí)(直接從標(biāo)注數(shù)據(jù)計(jì)算)

如果我們有大量的狀態(tài)序列樣本(每一天的真實(shí)狀態(tài)),
那就可以直接統(tǒng)計(jì):
a_{ij}=\frac{從i轉(zhuǎn)到j(luò)的次數(shù)}{狀態(tài)i出現(xiàn)的次數(shù)}

例:天氣序列

晴 → 晴 → 陰 → 晴 → 雨 → 晴 ...

統(tǒng)計(jì)轉(zhuǎn)移次數(shù)即可。

這種方法最直接、最可靠,但需要“狀態(tài)可見(jiàn)”——也就是每一步的狀態(tài)必須能觀測(cè)到。

2?? 無(wú)監(jiān)督學(xué)習(xí)(隱藏狀態(tài),用算法推斷,隱馬爾可夫模型)

如果狀態(tài)不可直接觀測(cè)(例如語(yǔ)音識(shí)別中的“音素”),
我們就需要用 EM算法(期望最大化)Baum-Welch算法 來(lái)訓(xùn)練。

思想:

  • 假設(shè)一組隨機(jī)轉(zhuǎn)移概率;
  • 計(jì)算在這些概率下,出現(xiàn)觀測(cè)序列的可能性;
  • 調(diào)整參數(shù),使得觀測(cè)序列的出現(xiàn)概率增加;
  • 不斷迭代,直到收斂。

換句話(huà)說(shuō),我們?cè)凇胺聪蛲评怼保?br> 找出那組轉(zhuǎn)移概率矩陣,最有可能解釋我們觀測(cè)到的數(shù)據(jù)。


3?? 先驗(yàn)經(jīng)驗(yàn) + 數(shù)據(jù)修正

有時(shí)我們沒(méi)有足夠數(shù)據(jù),只能靠經(jīng)驗(yàn)設(shè)定一個(gè)初始矩陣,然后用數(shù)據(jù)進(jìn)行微調(diào)。

比如導(dǎo)航系統(tǒng):

  • 經(jīng)驗(yàn):直行概率高、掉頭概率低;
  • 實(shí)測(cè)數(shù)據(jù):根據(jù)實(shí)際路口通過(guò)情況再修正。

小結(jié)

使用馬爾可夫模型的關(guān)鍵,就是找到合適的狀態(tài)定義,并通過(guò)觀測(cè)數(shù)據(jù)(或算法)獲取初始分布與轉(zhuǎn)移概率矩陣。
這三者一旦確定,就能讓我們基于某一個(gè)時(shí)刻的狀態(tài)預(yù)測(cè)未來(lái),或計(jì)算系統(tǒng)隨時(shí)間演化的規(guī)律。


四、HMM隱馬爾可夫模型

在上文中也提到,很多現(xiàn)實(shí)場(chǎng)景中,我們并不能直接獲取系統(tǒng)的狀態(tài),只有對(duì)系統(tǒng)的觀測(cè)值,這種情況又該如何處理呢? 這個(gè)章節(jié)我們展開(kāi)來(lái)談?wù)劇?/p>

在回答這個(gè)問(wèn)題前,我們首先回顧下,狀態(tài)和觀測(cè)值的區(qū)別,狀態(tài)是一個(gè)系統(tǒng)的內(nèi)在決定性的屬性,比如一個(gè)人,善良、邪惡、勇敢、怯懦、自信、自卑;觀測(cè)值則是從外面不同觀察者獲取的數(shù)值,可能有局限,有偏差。

但是實(shí)際場(chǎng)景中,我們大概率是很難獲取一個(gè)系統(tǒng)的真實(shí)狀態(tài),一個(gè)人的真實(shí)底色,只能利用大量觀測(cè)值推測(cè)一二,所以就出現(xiàn)了隱馬爾可夫模型。

HMM(隱馬爾可夫模型)是對(duì)普通馬爾可夫的拓展,它們的核心區(qū)別如下:

特性 普通馬爾可夫模型 隱馬爾可夫模型(HMM)
狀態(tài)可見(jiàn)性 狀態(tài)可直接觀測(cè) 狀態(tài)隱藏,需要通過(guò)觀測(cè)推測(cè)
觀測(cè) 不涉及觀測(cè) 每個(gè)隱藏狀態(tài)生成觀測(cè)數(shù)據(jù),通過(guò)觀測(cè)概率連接隱藏狀態(tài)
模型要素 狀態(tài) + 轉(zhuǎn)移概率 + 初始概率 狀態(tài) + 轉(zhuǎn)移概率 + 初始概率 + 觀測(cè) + 觀測(cè)概率
應(yīng)用場(chǎng)景 可以直接統(tǒng)計(jì)狀態(tài)變化 觀測(cè)數(shù)據(jù)可以測(cè)量,但內(nèi)部狀態(tài)未知
推斷任務(wù) 直接計(jì)算下一狀態(tài)概率 需要根據(jù)觀測(cè)序列推測(cè)最可能的隱藏狀態(tài)序列(如 Viterbi)

再舉幾個(gè)例子,來(lái)感受下隱馬爾可夫模型

1?? 音樂(lè)會(huì)(經(jīng)典 HMM 場(chǎng)景)

  • 隱藏狀態(tài):樂(lè)譜上正在演奏的音符
  • 觀測(cè):聽(tīng)到的聲音(可能有噪音、演奏差異)
  • 理解:樂(lè)譜是隱藏狀態(tài),它決定了實(shí)際聽(tīng)到的音符序列,但聲音本身可能有變化,不直接代表樂(lè)譜。

2??醫(yī)學(xué)診斷

  • 隱藏狀態(tài):病人的真實(shí)健康狀態(tài)(健康、輕微發(fā)病、重病)
  • 觀測(cè):體溫、血壓、實(shí)驗(yàn)室檢查結(jié)果
  • 理解:測(cè)量指標(biāo)只是病情的表現(xiàn),指標(biāo)會(huì)有噪聲,真正決定病情演變的是隱藏狀態(tài)。HMM就是用這些觀測(cè)推測(cè)病情序列。

3?? 戲劇

  • 隱藏狀態(tài):劇本中角色真正的心理狀態(tài)(開(kāi)心、緊張、憤怒)
  • 觀測(cè):演員的表情、臺(tái)詞
  • 理解:觀眾看到的是表象(觀測(cè)),真實(shí)的心理狀態(tài)(隱藏狀態(tài))才決定故事發(fā)展和臺(tái)詞的選擇。

隱馬爾可夫模型包含以下五個(gè)核心要素:

符號(hào) 含義
S = {S?, S?, ..., S_N} 隱藏狀態(tài)集合
V = {v?, v?, ..., v_M} 觀測(cè)值集合
A = [a??] 狀態(tài)轉(zhuǎn)移概率矩陣,表示從狀態(tài) i 到狀態(tài) j 的概率
B = [b?(k)] 觀測(cè)概率矩陣,表示在狀態(tài) j 下生成觀測(cè) v? 的概率
π = [π?] 初始狀態(tài)分布

一個(gè)完整的 HMM 通常寫(xiě)作:

λ=(A,B,π)

其中,A 決定了隱藏狀態(tài)之間如何轉(zhuǎn)移;

B 決定了每個(gè)狀態(tài)下“觀測(cè)值”可能出現(xiàn)的概率分布;
π 決定了系統(tǒng)最開(kāi)始可能在哪個(gè)隱藏狀態(tài)。

講到這里,我們?cè)僦厣晗履繕?biāo)

馬爾可夫模型(Markov Model, MM):已知當(dāng)前“狀態(tài)”,預(yù)測(cè)未來(lái)“狀態(tài)”。它的關(guān)鍵行為是通過(guò)統(tǒng)計(jì)方法找到狀態(tài)之間的轉(zhuǎn)移矩陣。

隱馬爾可夫模型(Hidden Markov Model, HMM):已知當(dāng)前“觀測(cè)值”,推斷當(dāng)前或未來(lái)“隱藏狀態(tài)”。它的關(guān)鍵行為是根據(jù)觀測(cè)序列找到一個(gè)隱馬爾可夫模型,在這個(gè)隱馬爾可夫模型下計(jì)算出來(lái)觀測(cè)序列出現(xiàn)概率最大。

但是呢,人類(lèi)沒(méi)有辦法直接獲取全局最優(yōu)解

不過(guò),到這里偉大的數(shù)學(xué)家們又出手了:沒(méi)有辦法獲取到全局最優(yōu)解,那咱能不能根據(jù)以往經(jīng)驗(yàn)或者隨便給一隱馬爾可夫模型,然后不斷對(duì)這個(gè)模型進(jìn)行調(diào)整,使得調(diào)整后得模型計(jì)算出來(lái)的觀測(cè)序列出現(xiàn)概率一直增加,直到最后這個(gè)概率不增加了,就把最后的模型當(dāng)作全局最優(yōu)解。

當(dāng)然這種辦法給出的解只能叫做局部最優(yōu)解,是基于觀測(cè)序列和隱馬爾可夫模型給出的一個(gè)局部最優(yōu)解,是不是全局最優(yōu),鬼知道,不過(guò)只要樣本數(shù)量夠多、多進(jìn)行嘗試,局部最優(yōu)就會(huì)不斷逼近全局最優(yōu),或者發(fā)現(xiàn)這種情況無(wú)法用隱馬爾可夫模型推測(cè)。

ok,那接下來(lái),我們來(lái)談?wù)劔@取隱馬爾可夫模型的局部最優(yōu)解一種最經(jīng)典的算法——EM(Baum-Welch)算法

EM算法本質(zhì)是在觀測(cè)數(shù)據(jù)確定下,不斷用當(dāng)前模型對(duì)隱藏狀態(tài)進(jìn)行概率性的統(tǒng)計(jì)(E步),然后用這些完整的統(tǒng)計(jì)結(jié)果來(lái)重新計(jì)算(M步)出一套更好的、更匹配數(shù)據(jù)的模型參數(shù)。

具體來(lái)說(shuō)如下

問(wèn)題

已知一個(gè)觀測(cè)序列

O = (O_1, O_2, \dots, O_T)

假設(shè)它符合隱馬爾可夫模型,目標(biāo)是估計(jì) HMM 參數(shù)

λ=(A,B,π)

使這個(gè)隱馬爾可夫模型下下計(jì)算出來(lái)觀測(cè)序列出現(xiàn)概率 P(O∣λ)最大

解答

1?? 計(jì)算前向概率 α?(i):
表示在時(shí)刻 t 處于狀態(tài) i 并觀測(cè)到 O?...O? 的概率。
通過(guò)遞推計(jì)算:
α_1(i)=πibi(o_1)

\alpha_t(j) = \left( \sum_i \alpha_{t-1}(i) a_{ij} \right) b_j(o_t)

2?? 后向概率 β?(i):
表示從時(shí)刻 t 狀態(tài) i 出發(fā),觀測(cè)到 O_{t+1}...O_T的概率。
\beta_T(i) = 1

\beta_t(i) = \sum_j a_{ij} b_j(o_{t+1}) \beta_{t+1}(j)

觀測(cè)序列概率
P(O | \lambda) = \sum_{i=1}^{N} \alpha_{T}(i)

3?? 狀態(tài)期望概率 γ?(i):
觀測(cè)序列是O且時(shí)刻 t 在狀態(tài) i 的概率 ,這里要解釋下,時(shí)刻t有可能是狀態(tài)i,也有可能是狀態(tài)j,k等
\gamma_t(i) = P(q_t = i \mid O, \lambda) = \frac{\alpha_t(i) \beta_t(i)}{\sum_{k=1}^{N} \alpha_t(k) \beta_t(k)}

4?? 轉(zhuǎn)移期望概率 ξ?(i,j):
時(shí)刻 t 從狀態(tài) i 轉(zhuǎn)移到狀態(tài) j 的概率:
\xi_t(i, j) = P(q_t = i, q_{t+1} = j \mid O, \lambda) = \frac{\alpha_t(i) a_{ij} b_j(o_{t+1}) \beta_{t+1}(j)}{P(O \mid \lambda)}

M步:重新估計(jì)參數(shù) A、B、π
現(xiàn)在我們用這些期望概率重新計(jì)算模型參數(shù):

\pi_i' = \gamma_1(i)

a_{ij}' = \frac{\sum_{t=1}^{T-1} \xi_t(i, j)}{\sum_{t=1}^{T-1} \gamma_t(i)}

b_j'(k) = \frac{\sum_{t=1}^{T} [o_t = v_k] \, \gamma_t(j)}{\sum_{t=1}^{T} \gamma_t(j)}

這些更新意味著:

  • A 更新 = 實(shí)際上 i→j 的期望次數(shù) / i 狀態(tài)出現(xiàn)的總期望次數(shù)
  • B 更新 = 狀態(tài) i 發(fā)出觀測(cè) k 的期望次數(shù) / 狀態(tài) i 總出現(xiàn)次數(shù)
  • π 更新 = 第一個(gè)時(shí)刻各狀態(tài)的概率

也就是說(shuō),我們讓模型參數(shù)直接匹配“數(shù)據(jù)中期望的統(tǒng)計(jì)頻率”。

重復(fù) E步 + M步,直到收斂
因?yàn)镋M算法保證,每次更新使觀測(cè)序列的概率不斷增大。

最后,當(dāng)似然增大到變化極小時(shí)(或迭代次數(shù)達(dá)到上限),就認(rèn)為收斂,輸出 所有模型參數(shù)。

小結(jié)

在使用 HMM 時(shí),我們通常要解決以下三個(gè)經(jīng)典問(wèn)題??

問(wèn)題 名稱(chēng) 目標(biāo)
① 概率計(jì)算問(wèn)題 Evaluation 給定模型 λ 和觀測(cè)序列 O,求該觀測(cè)序列出現(xiàn)的概率 P(O|λ)
② 解碼問(wèn)題 Decoding 給定 λ 和 O,求最可能的隱藏狀態(tài)序列 Q
③ 學(xué)習(xí)問(wèn)題 Learning 給定觀測(cè)序列 O,估計(jì)模型參數(shù) (A, B, π) 使得 P(O|λ) 最大

Baum–Welch 是 EM 在 HMM 上的具體實(shí)現(xiàn):在“看不見(jiàn)狀態(tài)”的條件下,E 步用當(dāng)前模型軟估計(jì)隱藏狀態(tài)的期望統(tǒng)計(jì)(γ、ξ),M 步用這些期望統(tǒng)計(jì)更新參數(shù)(π、A、B),每次迭代使觀測(cè)似然單調(diào)不減,直到收斂(通常到局部最優(yōu))

總結(jié)

隱馬爾可夫模型(HMM)揭示了“觀測(cè)背后的隱藏規(guī)律”——我們看到的只是表象,而真正決定系統(tǒng)行為的是隱藏狀態(tài)。通過(guò)狀態(tài)轉(zhuǎn)移和觀測(cè)概率,HMM 能從外部信號(hào)中推斷系統(tǒng)內(nèi)部的演化邏輯。雖然它假設(shè)狀態(tài)轉(zhuǎn)移是離散且僅依賴(lài)上一個(gè)狀態(tài),難以處理復(fù)雜連續(xù)或長(zhǎng)距離依賴(lài),但這一思想為后續(xù)的 CRF、RNN、Transformer 等模型奠定了基礎(chǔ),讓機(jī)器具備了從觀測(cè)中理解“隱含因果”的能力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容