核心概念#

隱馬爾可夫模型(Hidden Markov Model, HMM)是一個並不複雜的數學模型,卻被認為是解決大多數自然語言處理問題最為快速、有效的方法。它成功地解決了語音識別、機器翻譯等複雜問題,關鍵在於將這些問題轉化為通信的解碼問題

通信模型#

  • 自然語言處理的問題可以用通信模型來理解:說話者是信息源,語音/文字是信道,聽者/計算機是接收端
  • 語音識別 = 根據接收到的聲學信號,推測說話者原本要表達的信息
  • 機器翻譯 = 根據接收到的外語信息,推測原始語言的意思
  • 拼寫校正 = 根據帶有拼寫錯誤的文字,推測說話者想表達的正確意思

用概率論的語言描述:根據觀測信號 $o_1, o_2, o_3, \ldots$ 找到最可能的信息 $s_1, s_2, s_3, \ldots$,即:

$$s_1, s_2, s_3, \ldots = \underset{all\ s_1, s_2, s_3, \ldots}{\text{ArgMax}}\ P(s_1, s_2, s_3, \ldots | o_1, o_2, o_3, \ldots)$$

利用貝葉斯公式可將其等價變換為:$P(o_1, o_2, \ldots | s_1, s_2, \ldots) \cdot P(s_1, s_2, \ldots)$,這正好可以用隱馬爾可夫模型來估計。

隱馬爾可夫模型#

  • 馬爾可夫鏈:19 世紀馬爾可夫提出,隨機過程中每個狀態 $s_t$ 只與前一個狀態 $s_{t-1}$ 有關,即 $P(s_t|s_1, s_2, \ldots, s_{t-1}) = P(s_t|s_{t-1})$
  • 隱馬爾可夫模型是馬爾可夫鏈的擴展:任一時刻 $t$ 的狀態 $s_t$ 是不可見的(隱含的),每個時刻會輸出一個符號 $o_t$,且 $o_t$ 只與 $s_t$ 相關(獨立輸出假設

基於馬爾可夫假設和獨立輸出假設,模型的概率可以分解為:

  • $P(o_1, o_2, \ldots | s_1, s_2, \ldots) = \prod_t P(o_t|s_t)$
  • $P(s_1, s_2, \ldots) = \prod_t P(s_t|s_{t-1})$

這使得解碼問題可用維特比算法(Viterbi Algorithm)高效求解。

應用實例#

  • HMM 最早的成功應用是語音識別:1970 年代 IBM 貝克夫婦(Baker)用 HMM 識別語音,將錯誤率從 30% 降到 10%
  • 1980 年代末李開復採用 HMM 框架開發了世界第一個大詞彙連續語音識別系統 Sphinx
  • 之後 HMM 陸續應用於機器翻譯、拼寫糾錯、手寫識別、圖像處理、基因序列分析,近年還用於股票預測和投資

延伸閱讀:隱馬爾可夫模型的訓練#

圍繞 HMM 有三個基本問題:

  1. 給定模型,計算某個輸出序列的概率(Forward-Backward 算法)
  2. 給定模型和輸出序列,找到最可能產生這個輸出的狀態序列(Viterbi 算法)
  3. 給定觀測數據,如何估計模型的參數(模型訓練)

有監督訓練#

  • 如果有足夠的人工標注數據(Human Annotated),可以直接用統計方法計算轉移概率 $P(s_t|s_{t-1})$ 和輸出概率 $P(o_t|s_t)$

無監督訓練:鮑姆-韋爾奇算法#

  • 很多應用中無法獲得標注數據,此時使用 Baum-Welch 算法(一種 EM 過程)
  • 核心思想:從一個初始模型 $M_{\theta_0}$ 出發,不斷找到使觀測數據概率更大的模型參數,迭代直到收斂
  • EM 過程保證收斂到局部最優點,但不保證全局最優;若目標函數是凸函數則可找到全局最優

本章小結#

隱馬爾可夫模型最初應用於通信領域,後推廣至語音和語言處理,成為連接自然語言處理和通信的橋樑。它需要一個訓練算法(鮑姆-韋爾奇算法)和一個解碼算法(維特比算法),掌握這兩類算法就基本上可以使用 HMM 這個工具了。