【機器學習】--隱含馬爾科夫模型從初識到應用

LHBlog發表於2018-04-09

一、前述

    馬爾可夫(1856~1922),蘇聯數學家。切比雪夫的學生。在概率論、數論、函式逼近論和微分方程等方面卓有成就。
    馬爾可夫模型(Markov Model)是一種統計模型,廣泛應用在語音識別,詞性自動標註,音字轉換,概率文法等各個自然語言處理等應用領域。經過長期發展,尤其是在語音識別中的成功應用,使它成為一種通用的統計工具。

二、具體

1、案例

問題一:
         如果今天的天氣狀況是晴天,那麼明天是多雲而且後天有霧的概率是多大?

         1*0.2*0.1(1*0.2是從晴天轉多雲的概率,*0.1是從多雲轉向有霧的概率)
問題二:
         如果今天有霧,那麼兩天後有雨的概率是多大?(第二天的天氣可以是晴天、多雲、有雨或有霧)

 

 概率累加即可

         
 問題三:    
         在天氣問題中,如果今天是晴天,我們求第三天最可能的天氣狀況,應該怎麼做?
   (假定今天的天氣只能通過過去幾天已知的天氣情況進行預測——而對於其他因素,譬如風力、氣壓等則沒有考慮。在這個例子以及其他相似的例子中,這樣的假設顯然是不現實的)

問題四:

直接演算法
如果今天的天氣狀況是晴天,那麼明天是多雲而且後天有霧的概率是多大?
        p(S2=cloudy,S3=foggy|S1=sunny)
      =P(S3=foggy|S2=cloudy,S1=sunny)*P(S2=cloudy|S1=sunny)
      =P(S3=foggy|S2=cloudy)*P(S2=cloudy|S1=sunndy)
      =0.1*0.2
      =0.02
總結:

在問題一中,我們注意到注意每一個狀態都是唯一的依賴於前一個狀態,就像交通燈一樣,如果交通燈為綠色,那麼下一個顏色狀態將始終是黃色——也就是說,該系統是確定性的。確定性系統相對比較容易理解和分析,因為狀態間的轉移是完全已知的,對於給定的天氣狀況,我們可以直接通過狀態間的裝換概率來計算,但問題二中,我們只已知了今天和後天的天氣狀況,而明天的天氣狀況是隱藏的,未知的,它可能是晴天、雨天、多霧、多雲這些狀態,所以,這個時候我們前面的狀態馬爾可夫模型就要做一些變化


2、   隱馬爾可夫模型(Hidden Markov Model,HMM)概述

      在正常的馬爾可夫模型中,狀態對於觀察者來說是直接可見的。這樣狀態的轉換概率便是全部的引數。
而在隱馬爾可夫模型中,狀態並不是直接可見的,但受狀態影響的某些變數則是可見的每一個狀態在可能輸出的符號上都有一概率分佈。因此輸出符號的序列能夠透露出狀態序列的一些資訊。其難點是從可觀察的引數中確定該過程的隱含引數。然後利用這些引數來作進一步的分析,例如模式識別。
       HMM(隱馬爾科夫模型)是自然語言處理中的一個基本模型,用途比較廣泛,如漢語分詞、詞性標註及語音識別等,在NLP中佔有很重要的地位。
        一個更實際的問題是語音識別,我們聽到的聲音是來自於聲帶、喉嚨大小、舌頭位置以及其他一些東西的組合結果。所有這些因素相互作用產生一個單詞的聲音,一套語音識別系統檢測的聲音就是來自於個人發音時身體內部物理變化所引起的不斷改變的聲音。
  一些語音識別裝置工作的原理是將內部的語音產出看作是隱藏的狀態,而將聲音結果作為一系列觀察的狀態,這些由語音過程生成並且最好的近似了實際(隱藏)的狀態。在這兩個例子中,需要著重指出的是,隱藏狀態的數目與觀察狀態的數目可以是不同的。一個包含四個狀態的天氣系統(晴天、多雲、雨天)中,一個觀察現象;純粹的語音可以由80個音素描述,而身體的發音系統會產生出不同數目的聲音,或者比80多,或者比80少。
  在這種情況下,觀察到的狀態序列與隱藏過程有一定的概率關係。我們使用隱馬爾科夫模型對這樣的過程建模,這個模型包含了一個底層隱藏的隨時間改變的馬爾科夫過程,以及一個與隱藏狀態某種程度相關的可觀察到的狀態集合。


3、   隱馬爾可夫模型(Hidden Markov Model,HMM)原理

 

     HMM由初始概率分佈Π,狀態轉移分佈概率A以及觀測概率分佈B確定。


   Q是所有可能的狀態的集合,N是可能的狀態數:

 

  V是所有可能觀測的集合,M是所有可能的觀測數:

HMM由初始概率分佈Π、狀態轉移概率分佈A以及觀測概率分佈B確定。
 Π和A決定狀態序列,B決定觀測序列,因此HMM可以用三元符號表示,稱為HMM三要素:
 

4、應用(對天氣案例問題二)

        1、直接演算法(暴力演算法)

如果今天有霧,那麼兩天後有雨的概率是多大?(第二天的天氣可以是晴天、多雲、有雨或有霧)
       P(S3=foggy|S1=foggy)
=P(S3=foggy,S2=sunny|S1=foggy)+P(S3=foggy,S2=cloudy|S1=foggy)
  +P(S3=foggy,S2=rainy|S1=foggy)+P(S3=foggy,S2=foggy|S1=foggy)
=P(S3=foggy|S2=sunny)*P(S2=sunny|S1=foggy)+
   P(S3=foggy|S2=cloudy)*P(S2=cloudy|S1=foggy)+
   P(S3=foggy|S2=rainy)*P(S2=rainy|S1=foggy)+
    P(S3=foggy|S2=foggy)*P(S2=foggy|S1=foggy)
=0.1*0.0+0.1*0.4+0.1*0.3+0.3*0.3=0.16


    2、前向演算法

 

 

 

       

 

相關文章