1. 程式人生 > >深度學習 (七)Hidden Markov Model

深度學習 (七)Hidden Markov Model

Summary

       從最開始學習演算法的時候就時長聽說這個演算法,今天抽空我們來系統聊聊這個,如果給HMM歸一下類那麼它屬於概率圖模型(PGM)範疇,Probabilistic Graphical Models(PGM)從字意上也能看出來它是概率論和圖論相結合起來了,可以看成概率和圖結合起來形成了一種新的資料結構來解決新的問題,在處理複雜問題和不確定性問題方面很有優勢,目前在影象處理和視訊等領域已經有非常廣泛的應用,而今天我們要分析的HMM也是概率圖的一種,另外還有一種叫貝葉斯網路,以後再說。

theory foundation

       隨機過程是依賴於引數的一族隨機變數的全體,引數通常是時間維度,隨機變數呢即某一現象的體現,如我們每天吃的食物的多少,今天吃了1kg明天如果餓可能吃1.5kg,我們把隨時間變化的量抽象出來即隨時間變化的一組隨機變數,也成為隨機過程,這個方向的研究產生於20世紀末,那麼這一研究的價值在哪裡呢?
       在研究隨機過程時人們透過表面的偶然性描述出必然的內在規律並以概率的形式來描述這些規律,從偶然中悟出必然正是這一學科的魅力所在。

Markov process

       這次不拿吃飯了,拿大部分人都參與的事情股票為例,如果我們從一系列的隨機過程中能抽象出來必然規則,那麼你豈不是發財了,哈哈
       在研究隨機過程理論時常常賦予每個隨機事件一個概率,我們更關注的是未來某件事發生不發生的概率,隨機過程本來是一件普通平常的事情,不過如果對過程裡面的概率做各種假設,就會得到各種特殊的隨機過程,那時俄國數學家 馬爾科夫也假設了一種情況,他認為隨機過程中每個時間發生的概率與其它事件無關,只有當前時間或條件有關,來看一下數學表述:
在這裡插入圖片描述


       以後人們就稱具有這種性質的過程為馬爾科夫過程。

Hidden Markov Model

       以網上經常拿出來說得例子為例,簡化假設天氣狀況有下雨天rainy、晴天sunny兩種狀態,天氣狀態相當於一個狀態集合,在一個系統中一般事件是有概率的,可以將這一過程稱為馬爾科夫過程,明天是否下雨只與今天有關,與過去無關,可以用S1 S2 表示這兩個狀態,其值構成的集合叫做狀態空間,馬爾科夫過程的假設即當前狀態St只與前一個狀態St-1有關,與St-2等之前的狀態無關,如下:
在這裡插入圖片描述
       最上面為馬爾科夫公式,其次為其定義,π表示狀態序列的初始概率,N表示初始狀態個數,有幾個狀態即有幾個初始概率值,A表示的是隨時間t到t+1時狀態變換概率叫做轉移概率(state transition probability)。

       在實際問題中我們往往不知道隱含狀態,但可以通過隱含狀態觀測到發生一些事件的概率,繼續以去超市為例,作為居家男人經常去超市也是常事,買一些大米、菜、油鹽醬醋茶啥的,假如今天下雨我可能去超市買東西也可能去上班了work,男人畢竟要掙錢養家嘛 我還可能去健身,於是就有了下雨還是晴天都可能發生這三件事情,發生的這三件事情以及對應概率已經有了,如下圖:
在這裡插入圖片描述
       上圖可以看到有兩個狀態序列,一個是隱藏的馬爾科夫過程 S = {S(rainy),S(sunny)} ,另一個是可觀察到的狀態序列集合, O = {O(sport),O(shop),O(work)},兩個序列是概率相關的,以及兩個概率矩陣,通常我們把類似於這樣有一個隱馬爾可夫過程和與這個過程概率相關且可觀察到的序列構成的問題模型,稱為隱馬爾可夫模型,其目的是通過現有現象或條件來解決未知引數的馬爾科夫過程問題。

Two hypothesis

  • 隨機過程假設
    是針對隱含狀態序列,每個隱含狀態序列發生與否只與前一個有關係,與再前面的狀態無關,即馬爾科夫過程
  • 觀察狀態獨立假設
    另一個假設是觀察狀態的序列之間相互獨立,每個觀察狀態只與當前對應的隱含狀態有關係,與其它隱含狀態無關
    斜體樣式

Definition

一個 HMM 模型可以用一個5元組 { N, M, π,A,B } 表示,其中:

  • N 隱藏狀態的數量
    表示隱藏狀態的數量,可能知道也可能不知道
  • M 觀測狀態的數量
    表示可觀測狀態的數量,可以通過訓練集獲得
  • π={πi} 初始狀態概率
    代表的是剛開始的時候各個隱藏狀態的發生概率;
  • A={aij} 為隱藏狀態的轉移矩陣
    N*N維矩陣,代表的是第一個狀態到第二個狀態發生的概率;
  • B={bij}為混淆矩陣
    N*M矩陣,代表的是處於某個隱狀態的條件下,某個觀測發生的概率
    在狀態轉移矩陣和混淆矩陣中的每個概率都是時間無關的,即當系統演化時,這些矩陣並不隨時間改變。對於一個 N 和 M 固定的 HMM 來說,用 λ={π, A, B } 表示 HMM 引數

Three Question

evaluation(the probability of the observation)

       該問題是模型相關的引數都已經知道,我們是要求出來得到當前這種觀察序列的概率是多少?該問題可以驗證我們觀察到的概率是否正確,解放一般有三種方法。

iteration

       該方法即算出產生這種序列有多少種可能,該例子中觀察序列為t=1 、t=2、t=3三個時刻狀態,那麼每個時刻隱含狀態都有兩種情況,為2的3次方8中,假如隱含狀態很多計算量將會很大,因此工程師這種方法不適用,計算過程如下:
在這裡插入圖片描述

forward algorithm

       此法為前向計演算法,根據時間順序從t=1時開始計算,一直到最後一個觀察序列,前面計算好的值不用重複計算,有效率的提升。
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
       如上圖在計算t=3時,可以將t=2時的結果代入,容易的出來結果。
上述演算法也是基於了兩個假設,隱層狀態只與前一個狀態有關,當前觀察序列只與當前的隱含狀態有關,其它無關。

recognition(corresponding state sequence)

       此類問題是最常用的一個方法,大部分問題都是已經可觀察序列去尋找最可能的隱含狀態序列,如語音識別、模式識別等都可以用這個猜測隱含狀態的方式來解碼。
看下圖不斷解碼文字:
在這裡插入圖片描述

Viterbi (dynamic programming)

       動態規劃是一種最優化演算法技術,由美國數學家Bellman發明,如果一個問題含有重疊子問題求解全域性最優,而且可以找到處理子問題一樣的遞推關係式子,即可以用動態規劃技術來解決,viterbi是動態規則典型的例子。
       以上面求天氣這一隱藏狀態為例,已知的是觀察序列以及各個概率引數,求隨著時間t變化,最大的隱含狀態序列是啥?
       維特比演算法過程如下
       當時間t=1時 我們計算出來兩種情況概率分別如下圖,可以取出來最大值以及將結果快取起來以後的步驟需要用到。
在這裡插入圖片描述
       按上圖可以一次計算出來t=2時 取哪個隱含狀態概率最大,t=3 ,t=n等

用動態規劃即要抽象出來公式,如下:
在這裡插入圖片描述

       驗證公式,t=2代入,上圖公式需要理解的是i 、j他們所屬的範圍都是隱含狀態空間,
在這裡插入圖片描述
       上圖中過程會有很多重複計算,可以快取起來避免重複計算,動態規劃在很多問題中都很有用。

training(adjust the model parameters)

       這個問題是三個鍾最複雜的,即我們在各種模型中訓練引數問題,使得我們的模型達到最優,訓練又分為了兩種情況

  • 已經觀測序列和狀態序列
    可以求出來各個引數表示式,根據最大似然原理來求解
  • 狀態序列未知
    大概過程是假設另一個模型引數,此演算法為Baum-Welch保姆韋爾奇,求兩個模型引數的期望,然後不過迭代使得期望最大,新模型引數收斂,訓練過程需要的樣本比較多,先不祥述。

應用

       到目前為止它一直被認為是解決大多數自然語言處理問題最為快速、有效的方法,它還成功的解決了語音識別、詞性標註、機器翻譯等問題,它的重要程度不言而喻。
       通訊的本質是一個編解碼和傳輸的過程,大家可以看一看吳軍老師的數學之美第五章關於隱馬的描述以及例子。

  • 詞性標註
    在這裡插入圖片描述
  • 語音識別
    在這裡插入圖片描述

隨筆

維特比演算法
       安德魯維特比發明了維特比演算法,並且創辦了高通公司,它是通訊領域應用最廣泛的解碼技術,將解碼複雜度降低萬倍,使得解碼真正得到實施和應用,它是現在計演算法傳輸上網等的基礎,意義推動了網際網路發展。
聲波處理步驟一般分為三步
1.抽取特徵 去燥
2.將特徵轉換為音節
3.音節解碼為語句
       維特比做的事情主要在第三步將音節字元轉為語句,人們可以理解的自然語言文字或聲音。
       漢語二義性會有很多歧義,造成解碼困難主要是計算量太大,指數爆炸,維特比是將音節看做隱含序列,將對應的語句看做是狀態序列,並根據時間從t=1時逐漸解碼知道句子長度,t=n,為止,大致和上述類似。

參考文章:
https://www.cnblogs.com/bigmonkey/p/7230668.html
https://www.cnblogs.com/skyme/p/4651331.html
https://www.cnblogs.com/ldphoebe/p/5763249.html
https://www.cnblogs.com/pinard/p/6945257.html
https://www.cnblogs.com/skyme/p/4651331.html