對於某個系統包含了n個有限狀態,某個狀態隨着時刻推移而轉移到另外一個狀態。若是t時刻狀態與前面m個時刻相關則稱爲m階馬爾科夫鏈,即馬爾可夫過程是一個隨機過程,系統從一個狀態到另一個狀態存在轉移機率,而轉移機率經過前m個狀態來計算出來。這就是馬爾科夫模型,即MM,也可認爲是隨機有限狀態自動機。mysql
根據 ‘the quick brown fox jumps over the lazy dog’這句話,要獲得馬爾科夫鏈,先給每個單詞設定成一個狀態,而後計算狀態間轉換的機率。算法
當用大量文本去作統計的時候,會獲得更大的狀態轉移矩陣,例如 the 後面能夠鏈接的單詞,及相應的機率sql
馬爾科夫模型能處理直接觀察的序列的機率問題,經過馬爾科夫假設能創建起馬爾科夫鏈,從而解決一些序列問題。但有時候觀察的對象並非咱們待處理的目標對象,它的規律隱含在觀察對象中,觀察的事件和隱含事件存在必定的相關關係,這時候就要用到隱馬爾科夫模型,即HMM。網絡
實際上隱馬爾科夫模型是一個雙重隨機過程,過程當中包含狀態序列和觀察序列。第一重隨機過程是狀態通過隨機轉移生成狀態序列,而第二重隨機過程則是根據狀態序列隨機轉移生成觀察序列。數據結構
最大熵模型是一種根據熵來肯定的模型,最大熵模型認爲在全部可能的機率模型中熵最大模型是最好的。也就是說咱們只掌握未知分佈的部分信息,而契合已知分佈的有多個,而後經過熵最大來肯定分佈。併發
事件發生的機率只要知足全部已知約束,而且不對任何未知信息作假設,對將來作等機率處理。熵最大時,系統的不肯定性最大。機器學習
隱馬爾科夫模型中存在觀察獨立性假設,也就是任意時刻的觀察只依賴於該時刻的狀態,與其它時刻的觀察和狀態無關。但不少場景中咱們須要將觀察的特徵考慮進去,即認爲某個時刻的狀態取決於前一時刻狀態和當前時刻的觀察。而若是再使用最大熵模型來學習這些條件機率,則此爲最大熵馬爾科夫模型。函數
每一個時刻的條件機率以下,其中Z用於歸一化,爲每一個特徵函數的權重參數,f爲特徵函數,根據實際狀況能夠定義不少特徵函數的。學習
對於序列的處理,若是既想要考慮觀察與狀態之間的特徵,也要考慮先後狀態之間的特性,則會考慮條件隨機場,更具體的是線性條件隨機場。條件隨機場摒棄了隱馬爾科夫中的齊次馬爾科夫性假設和觀測獨立性假設,模型更加複雜,但能學習到更多特徵。ui
條件隨機場引入了特徵函數,在實際使用中咱們能夠定義不少個特徵函數,包括各類狀態的特徵和觀察的特徵。
若是再加上歸一化,最終條件隨機場的條件機率爲,
其中,
條件隨機場的訓練與隱馬爾科夫模型的訓練不一樣,隱馬爾科夫模型是對各種條件機率進行建模,而條件隨機場是從總體去擬合函數,能夠採用極大似然估計法。
-------------推薦閱讀------------
個人開源項目彙總(機器&深度學習、NLP、網絡IO、AIML、mysql協議、chatbot)
跟我交流,向我提問:
歡迎關注: