隐含馬爾可夫模型常用于解決自然語言處理的問題。例如語音識别、機器翻譯等。
目錄
通信模型
隐含馬爾可夫模型
延伸閱讀:隐含馬爾可夫的訓練
小結
通信模型
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVPjdVY3ljVklGaywEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYvwFd4VGdvwlMvw1ayFWbyVGdhd3P3MTM1YDN2EDMzgDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
在通信模型中,如何根據觀察資料o1,o2,o3,...來推測信号源發送的資訊s1,s2,s3,...呢?用機率論的語言來表述,就是求在已知o1,o2,o3,...的情況下s1,s2,s3,...的最大機率,即
根據P(A|B)*P(B)=P(B|A)*P(A),上式右側等價于
在求最大值的時候,分母P(o1,o2,o3,...)是一個可忽略的常數,等價于求5.2式的分子的最大值。
哈哈,變成這個形式還是不會求解呢?啦啦啦告訴你,這個公式完全可以用隐含馬爾可夫模型(Hidden Markov Model)來估計哇。
隐含馬爾可夫模型
介紹馬爾可夫模型,還是要從馬爾可夫鍊說起。19世紀的時候,機率論的發展從研究随機變量轉變為随機過程。随機過程比随機變量要複雜一丢丢。假設有一個狀态集合{s1,s2,s3},首先,一個時間序列t1,t2,t3,...中t時刻選取的狀态
是随機的,如序列
。第二,任一狀态
的取值可能與周圍其它的狀态有關。這樣随機狀态就有了兩個次元的不确定性。馬爾可夫為了簡化問題,提出了一種簡化的假設,即随機過程中各個狀态
的機率分布,隻與它的前一個狀态
有關,即
。當然這種假設未必适合所有的應用,但是至少對以前很多不好解決的問題給出了近似解。這個假設後來就命名為馬爾可夫假設,而符合這個假設的随機過程則稱為馬爾可夫過程,也稱為馬爾可夫鍊。下圖給出一個離散的馬爾可夫過程。
在這個馬爾可夫鍊中,四個圈表示四個狀态,每條邊表示一個可能的狀态轉換,邊上的權值是轉移機率。如果某個時刻t的值為m2,那麼t+1時刻有40%的可能為m4,60%的可能為m3,因為t+1時刻的值隻與t時刻有關系,和t-1時刻沒關系。
把這個馬爾可夫鍊想象為一台機器,它随機的選擇一個狀态作為初始狀态,然後按照上述規則随機輸出狀态,運作一段時間T後,我們會得到狀态序列:
。看到這個序列,不難數出某個狀态
出現的次數#(
),以及
轉換到
的次數#(
)。
到
的轉移機率可以通過#(
)/#(
)得到。
隐含馬爾可夫模型是對上述馬爾可夫鍊的一個擴充:任意時刻t的狀态
是不可見的,是以我們不能通過觀察序列直接獲得轉移機率。但是隐含馬爾可夫模型在每個時刻t都有一個輸出
,且
僅與
相關。這個被稱為獨立輸出假設。簡而言之,序列
是由一個馬爾可夫鍊産生的,并且
到
符合獨立輸出假設,就是隐含馬爾可夫模型的結構了。如圖:
由于序列
是基于馬爾可夫假設的,是以5.3式的右半部分等價于
由于獨立輸出假設,是以5.3式的左半部分等價于
這樣通信的解碼問題就可以用隐含馬爾可夫模型來解決了。至于如何找出式子的最大值,可以使用維特比算法(Viterbi Algorithm)。
延伸閱讀:隐含馬爾可夫的訓練
圍繞着隐含馬爾可夫模型有三個基本問題:
- 給定一個模型,如何計算某個特定的輸出序列的機率
- 給定一個模型和某個特定的輸出序列,如何找到最可能産生這個輸出的狀态序列
- 給定足夠量的觀測資料,如何估計隐含馬爾可夫模型的參數
第一個問題很簡單,對應的算法是Forward-Backward算法。第二個問題使用著名的維特比算法解決。第三個問題在此讨論。
轉移機率(Transition Probability)
和生成機率(Generation Probability)
被稱為隐含馬爾可夫模型的參數,而計算和估計這些參數的過程稱為模型的訓練。
從條件機率的定義出發,如果我們有足夠多的人工标記的資料,生成機率可以通過觀測次數得到:
跟前面求馬爾可夫鍊的轉移機率一樣,如果我們有大量人工标注的資料,通過統計次數就可以估計轉移機率:
然而有些情況下我們無法做出标注,有些情況下标注的成本較大,比較實用的方式是直接通過觀測序列就能推測出模型的參數,這類方法叫做無監督的訓練方法,其中主要使用的鮑姆-韋爾奇算法(Baum-Welch Algorithm)。
兩個不同的模型可以産生同樣的輸出序列,但總會
比另一個
更有可能産生觀測序列,其中
為模型的參數。鮑姆-韋爾奇算法就是用來尋找這個最可能的模型
.
鮑姆-韋爾奇算法思想:
首先找到一組能夠産生輸出序列O的模型參數(顯然他們是一定存在的,假設轉移機率P和輸出機率Q為均勻分布時,模型可以産生任何輸出)。現在,有了初始模型
,需要在此基礎上找到更好的模型。假定我們解決了第一個和第二個問題,那麼我們可以求出目前模型産生輸出O的機率,及産生輸出O的可能狀态序列及這些狀态序列的機率。把這些可能的狀态序列看做是“标注的訓練資料”,我們可以計算出一組新的模型參數
,并且可以證明模型1的O輸出機率大于模型0的輸出機率,如此循環往複,直到模型的品質不再顯著提高為止。
鮑姆-韋爾奇算法的每一此疊代都是不斷的估計(Expectation)新的模型參數,使得輸出的機率(我們的目标函數)達到最大化(Maximization),是以這個過程被稱為期望最大化(Expectation-Maximization),簡稱EM過程。EM過程保證算法一定能收斂到一個局部最優點,很遺憾它一般不能保證找到全局最優點。是以,在一些自然語言處理的應用,比如詞性标注中,這種無監督的鮑姆-韋爾奇算法訓練出的模型會比有監督的訓練得到的模型效果略差,因為前者未必能收斂到全局最優點。但是如果目标函數是凸函數(比如資訊熵),則隻有一個最優點,這種情況下EM過程可以找到最佳值。
小結
隐含馬爾可夫模型最初應用于通信領域,繼而推廣到語音和語言進行中,成為連接配接自然語言處理與通信的橋梁。同時,隐含馬爾可夫模型也是機器學習的主要工具之一。和幾乎所有的機器學習的模型工具一樣,它需要一個訓練算法(鮑姆-韋爾奇算法)和使用時的解碼算法(維特比算法)。掌握了這兩類算法,就基本上可以使用隐含馬爾可夫模型這個工具了。