天天看點

HMM與CRFHMM與CRF

HMM與CRF

認識HMM與CRF模型

學習目标

  • 了解HMM與CRF模型的輸入和輸出.
  • 了解HMM與CRF模型的作用.
  • 了解HMM與CRF模型的使用過程.
  • 了解HMM與CRF模型之間的差異.
  • 了解HMM和CRF的發展現狀.

HMM模型的輸入和輸出

  • HMM(Hidden Markov Model), 中文稱作隐含馬爾科夫模型, 因俄國數學家馬爾可夫而得名. 它一般以文本序列資料為輸入, 以該序列對應的隐含序列為輸出.
  • 什麼是隐含序列:
    • 序列資料中每個單元包含的隐性資訊, 這些隐性資訊之間也存在一定關聯.
  • 舉個栗子:
給定一段文本: "人生該如何起頭"
           

我們看到的這句話可以叫做: 觀測序列

我們可以将這句話以詞為機關進行劃分得到:

[“人生”, “該”, “如何”, “起頭”]

那麼每個詞對應的詞性就是它的隐含序列, 如:

[“n”, “r”, “r”, “v”]

HMM模型的作用

  • 在NLP領域, HMM用來解決文本序列标注問題. 如分詞, 詞性标注, 命名實體識别都可以看作是序列标注問題.

HMM模型使用過程簡述

  • 首先, HMM模型表示為: lambda = HMM(A, B, pi), 其中A, B, pi都是模型的參數, 分别稱作: 轉移機率矩陣, 發射機率矩陣和初始機率矩陣.
  • 接着, 我們開始訓練HMM模型, 語料就是事先準備好的一定數量的觀測序列(feature)及其對應的隐含序列(label), 通過極大似然估計求得一組參數, 使由觀測序列到對應隐含序列的機率最大.
  • 在訓練過程中, 為了簡化計算, 馬爾可夫提出一種假設: 隐含序列中每個單元的可能性隻與上一個單元有關. 這個假設就是著名的隐含假設.
  • 訓練後, 我們就得到了具備預測能力的新模型: lambda = HMM(A, B, pi), 其中的模型參數已經改變.
  • 之後給定輸入序列(x1, x2, ..., xn), 經過模型計算lambda(x1, x2, ..., xn)得到對應隐含序列的條件機率分布.
  • 最後, 使用維特比算法從隐含序列的條件機率分布中找出機率最大的一條序列路徑就是我們需要的隐含序列: (y1, y2, ..., yn).

CRF模型的輸入和輸出

  • CRF(Conditional Random Fields), 中文稱作條件随機場, 同HMM一樣, 它一般也以文本序列資料為輸入, 以該序列對應的隐含序列為輸出.

CRF模型的作用

  • 同HMM一樣, 在NLP領域, CRF用來解決文本序列标注問題. 如分詞, 詞性标注, 命名實體識别.

CRF模型使用過程簡述

  • 首先, CRF模型表示為: lambda = CRF(w1, w2, ..., wn), 其中w1到wn是模型參數.
  • 接着, 我們開始訓練CRF模型, 語料同樣是事先準備好的一定數量的觀測序列及其對應的隐含序列.
  • 與此同時我們還需要做人工特征工程, 然後通過不斷訓練求得一組參數, 使由觀測序列到對應隐含序列的機率最大.
  • 訓練後, 我們就得到了具備預測能力的新模型: lambda = CRF(w1, w2, ..., wn), 其中的模型參數已經改變.
  • 之後給定輸入序列(x1, x2, ..., xn), 經過模型計算lambda(x1, x2, ..., xn)得到對應隐含序列的條件機率分布.
  • 最後, 還是使用維特比算法從隐含序列的條件機率分布中找出機率最大的一條序列路徑就是我們需要的隐含序列: (y1, y2, ..., yn).

HMM與CRF模型之間差異

  • HMM模型存在隐馬假設, 而CRF不存在, 是以HMM的計算速度要比CRF模型快很多, 适用于對預測性能要求較高的場合.
  • 同樣因為隐馬假設, 當預測問題中隐含序列單元并不是隻與上一個單元有關時, HMM的準确率會大大降低, 而CRF不受這樣限制, 準确率明顯高于HMM.

HMM和CRF的發展現狀

  • HMM和CRF模型曾在多種序列任務中表現出色, 伴随NLP工程師度過漫長的一段時期.
  • 但由于近年來深度學習發展迅速, 經典序列模型, 如HMM和CRF, 已經開始慢慢淡出人們的視野.
  • 是以, 我們這裡也是對其做了簡潔的總結知識, 讓大家對其有一定的基本認識.

繼續閱讀