1. 程式人生 > >隱馬爾科夫模型(HMM)

隱馬爾科夫模型(HMM)

馬爾科夫鏈

馬爾科夫鏈,因安德烈.馬爾科夫(A.A.Markov,1856-1922)得名,是指數學中具有馬爾科夫性質的離散事件隨機過程。

每個狀態的轉移只依賴於之前的n個狀態,這個過程被稱為1個n階的模型,其中n是影響轉移狀態的數目。
最簡單的馬爾科夫過程就是一階過程,每一個狀態的轉移只依賴於其之前的那一個狀態。用數學表示式表示就是:
這裡寫圖片描述

假設天氣服從馬爾科夫鏈
馬爾科夫鏈

轉移矩陣這裡寫圖片描述

如果已知今天是晴天,那麼明天天氣的概率是:
(10)[0.90.50.10.5]=(0.90.1)
即明天是晴天的概率是0.9,陰天的概率是0.1

從今天(晴或陰)開始,在遙遠未來的某天,晴陰的概率分佈是什麼?
這裡寫圖片描述

如果n無窮大,由於
這裡寫圖片描述

可知,不管今天晴陰,很多天之後的晴陰分佈收斂到一個固定分佈,這個固定分佈叫 穩態分佈

在轉移狀態不變,很久的未來,每一天天氣都是q=(0.833 0.167)的一個樣本點

至此,我們就為上面的一階馬爾科夫過程定義以下三部分:

  1. 狀態:晴天、陰天
  2. 初始向量:定義系統在時間為0的時候的狀態的概率
  3. 狀態轉移矩陣:每種天氣轉換的概率。

所有的能被這樣描述的系統都是一個馬爾可夫過程

馬爾科夫鏈的缺陷

很明顯,前後關係的缺失,帶來了資訊的缺失:
比如我們的股市,如果只是觀測市場,我們只能知道當天的價格、成交量等資訊,但是並不知道當前股市處於什麼樣的狀態(牛市、熊市、震盪、反彈等),在這種情況下我們有兩個狀態集合,一個可以觀察到的狀態集合(股市價格成交量狀態等)和一個隱藏的狀態集合(股市狀態)。

希望根據股市價格成交量狀況和馬爾科夫假設來預測股市的狀況。
可以觀察到的狀態序列和隱藏的狀態序列是概率相關的。
我們可以將這種型別的過程建模為有一個隱藏的馬爾科夫過程和一個與這個隱藏馬爾科夫過程概率相關的並且可以觀察到的狀態集合,就是隱馬爾科夫模型。

隱馬爾科夫模型狀態遷移圖

隱馬爾可夫鏈

隱馬爾可夫模型(Hidden Markov Model,HMM)是統計模型,它用來描述一個含有隱含未知引數的馬爾可夫過程。其難點是從可觀察的引數中確定該過程的隱含引數。然後利用這些引數來作進一步的分析,例如模式識別。

下面用一個簡單的例子來闡述:

假設我手裡有三個不同的骰子。
第一個骰子6個面(稱這個骰子為D6),每個面(1,2,3,4,5,6)出現的概率是1/6。
第二個骰子是個四面體(稱這個骰子為D4),每個面(1,2,3,4)出現的概率是1/4。
第三個骰子有八個面(稱這個骰子為D8),每個面(1,2,3,4,5,6,7,8)出現的概率是1/8。

隱馬爾科夫

假設我們開始擲骰子,我們先從三個骰子裡挑一個,挑到每一個骰子的概率都是1/3。然後我們擲骰子,得到一個數字,1,2,3,4,5,6,7,8中的一個。不停的重複上述過程,我們會得到一串數字,每個數字都是1,2,3,4,5,6,7,8中的一個。例如我們可能得到這麼一串數字(擲骰子10次):1 6 3 5 2 7 3 5 2 4

這串數字叫做可見狀態鏈。但是在隱馬爾可夫模型中,我們不僅僅有這麼一串可見狀態鏈,還有一串隱含狀態鏈。在這個例子裡,這串隱含狀態鏈就是你用的骰子的序列。比如,隱含狀態鏈有可能是:D6 D8 D8 D6 D4 D8 D6 D6 D4 D8

一般來說,HMM中說到的馬爾可夫鏈其實是指隱含狀態鏈,因為隱含狀態(骰子)之間存在轉換概率(transition probability)。轉換概率可能不同。

可見狀態之間沒有轉換概率,但是隱含狀態和可見狀態之間有一個概率叫做輸出概率(emission probability)。就我們的例子來說,六面骰(D6)產生1的輸出概率是1/6。

隱馬爾科夫模型示意圖

隱含狀態轉換關係示意圖

和HMM模型相關的演算法主要分為三類,分別解決三種問題:

  1. 知道骰子有幾種(隱含狀態數量),每種骰子是什麼(轉換概率),根據擲骰子擲出的結果(可見狀態鏈),我想知道每次擲出來的都是哪種骰子(隱含狀態鏈)。 在語音識別領域呢,叫做解碼問題。
  2. 還是知道骰子有幾種(隱含狀態數量),每種骰子是什麼(轉換概率),根據擲骰子擲出的結果(可見狀態鏈),我想知道擲出這個結果的概率。 -反欺詐。
  3. 知道骰子有幾種(隱含狀態數量),不知道每種骰子是什麼(轉換概率),觀測到很多次擲骰子的結果(可見狀態鏈),我想反推出每種骰子是什麼(轉換概率)。

對應

  1. Recognition:Given the observation sequence O=O1O2...OT and a model λ=A,B,π,how do we choose a corresponding state sequence Q=q1q2...qT which is optimal in some sense, i.e.,best explains the observations
  2. Evaluation:Given the observation sequence O=O1O2...OT and a mode λ=A,B,π, how do we efficiently compute P(O|λ), i.e.,the probability of the observation sequence given the model
  3. Training:Given the observation sequence O=O1O2...OT , how do we adjust the model parameters λ=A,B,π to maximize P(O|λ)

隱馬爾科夫例子:

一個東京的朋友每天根據天氣{下雨,天晴}決定當天的活動{公園散步,購物,清理房間}中的一種,我每天只能在twitter上看到她發的推“啊,我前天公園散步、昨天購物、今天清理房間了!”,那麼我可以根據她發的推特推斷東京這三天的天氣。在這個例子裡,顯狀態是活動,隱狀態是天氣。

隱馬爾科夫例子

對應上面的三個問題:

  1. 已知整個模型,我觀測到連續三天做的事情是:散步,購物,收拾,我想猜,這三天的天氣是怎麼樣的。
  2. 已知整個模型,我觀測到連續三天做的事情是:散步,購物,收拾。那麼根據模型,計算產生這些行為的概率是多少。
  3. 最複雜的,我只知道這三天做了這三件事兒,而其他什麼資訊都沒有。我得建立一個模型,晴雨轉換概率,第一天天氣情況的概率分佈,根據天氣情況選擇做某事的概率分佈。

隱馬爾科夫鏈的解法:

  1. 問題一:Viterbi Algo,維特比演算法。
  2. 問題二:Forword Algorithm,向前演算法,或者 Backward Algorithm,向後演算法。
  3. 問題三:Baum-Welch Algo,鮑姆-韋爾奇演算法

問題1 的解法:維特比演算法

  • 找到概率最大的隱含序列,意味著計算 argmaxQP(Q|O,λ) ,相當於計算 argmaxQP(QO|λ)
  • Viterbi 演算法(動態規劃)定義 δj(t),儲存在時間t時,觀測值和狀態Sj 的最大可能性
  • 歸納:
    • 這裡寫圖片描述
  • 使用回溯(backtracking)(保持最大引數對於每個t和j)來發現最優解

問題2 的解法1:遍歷演算法

三天的天氣共有6種可能,遍歷所有的可能,計算產生此種觀測值的概率。

具體步驟:

  • 需要計算 P(O|λ) ,給出模型 λ 的條件下,可見序列為 O=O1O2...OT 的可能性。
  • 我們能夠列舉所有可能的隱含狀態序列 Q=q1q2...qT
  • 對於其中一個隱含狀態序列 Q
    • 這裡寫圖片描述
  • 對於這個隱含狀態序列 Q 的可能性是:
  • 這裡寫圖片描述
  • 因此聯合可能性為:
  • 這裡寫圖片描述
  • 考慮所有可能隱含狀態序列
  • 這裡寫圖片描述
  • 存在問題:需要 2TNT 的計算量
  • NT的可能的隱含狀態序列
  • 每個序列需約 2T的計算量

問題2 的解法2:向前演算法

  • 定義前向變數 αj(t) 作為 直到時間t ,和隱藏狀態Sj下,部分可見序列的可能性:
    • 這裡寫圖片描述
  • 可用歸納計算:
    • 這裡寫圖片描述
  • 通過 N2T 複雜度的計算:
    • 這裡寫圖片描述

問題2 的解法3:後向演算法

這裡寫圖片描述

  • 定義後向變數 βi(t) 作為時間t 之後,給定 t 時刻的隱藏狀態Si下,部分觀測序列的可能性:
    • 這裡寫圖片描述
  • 歸納計算:
    • 這裡寫圖片描述

問題3 的解法:Baum-Welch 演算法
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

隱馬爾可夫鏈應用:詞性標註

馬爾科夫模型本質上是一個有轉換概率的有限狀態機

這裡寫圖片描述

一個隱馬爾可夫模型,在一個特定狀態下會以一定概率發射出標記。

這裡寫圖片描述

我們想要計算 P(t1,...,tn|w1,...,wn) ,根據貝葉斯理論:
這裡寫圖片描述

我們要計算使上述概率最大的 序列 t . 分母都一樣主要看分子。

鏈式法則;
這裡寫圖片描述

標註轉移分佈:
這裡寫圖片描述

詞發射分佈:
這裡寫圖片描述

例子:詞性標註

  • t1...tN 標籤對應隱含狀態 (

    相關推薦

    模型HMM(二)前向後向算法評估觀察序列概率

    流程 來看 遞推 limits its 可能 基本 通過 如何     隱馬爾科夫模型HMM(一)HMM模型     隱馬爾科夫模型HMM(二)前向後向算法評估觀察序列概率     隱馬爾科夫模型HMM(三)鮑姆-韋爾奇算法求解HMM參數(TODO)     隱馬爾科夫模型

    [八]機器學習之模型HMM

    8.1 目標任務 1.用jieba庫實現中文詞性標註 2.用SnoeNLP庫實現中文詞性標註 8.2 實驗資料 novel.txt 8.3 實驗過程 8.3.1 實驗準備 1.安裝jieba庫: pip install jieba jieba庫繁體分詞和自定

    hmm前後向演算法 模型HMM(三)鮑姆-韋奇演算法求解HMM引數 模型HMM(四)維特比演算法解碼隱藏狀態序列 模型HMM(一)HMM模型

    跟醫生就醫推導過程是一樣的 隱馬爾科夫模型HMM(一)HMM模型     隱馬爾科夫模型HMM(二)前向後向演算法評估觀察序列概率     隱馬爾科夫模型HMM(三)鮑姆-韋爾奇演算法求解HMM引數     隱馬爾科夫模型HMM(四)維特比演算法解碼隱藏狀態序列     在隱馬爾科夫模型HMM(一)

    模型(HMM)

    馬爾科夫鏈 馬爾科夫鏈,因安德烈.馬爾科夫(A.A.Markov,1856-1922)得名,是指數學中具有馬爾科夫性質的離散事件隨機過程。 每個狀態的轉移只依賴於之前的n個狀態,這個過程被稱為1個n階的模型,其中n是影響轉移狀態的數目。 最簡單的馬爾科夫過

    模型(HMM) 舉例講解

    什麼問題用HMM解決 現實生活中有這樣一類隨機現象,在已知現在情況的條件下,未來時刻的情況只與現在有關,而與遙遠的過去並無直接關係。 比如天氣預測,如果我們知道“晴天,多雲,雨天”之間的轉換概率,那麼如果今天是晴天,我們就可以推斷出明天是各種天氣的概率,接著後天的天氣可以由明天的進行計算。這類問

    標註——模型(HMM)以及Python實現

    隱馬爾可夫模型(HMM)是可用於標註問題的統計模型。關於HMM通常包含三類問題:1.概率計算 2.引數學習 3.預測狀態。本部落格簡單羅列下HMM的知識點,給出程式碼。詳細地參考李航《統計學習方法》。 模型簡介 HMM描述先由隱藏的馬爾可夫鏈生成狀態序列,各個狀

    1個例子解釋 模型(HMM) 的 5 個基本要素

    隱馬爾可夫模型(Hidden Markov Model,HMM)是一個尋找事物在一段時間裡的變化模式的統計學方法,它用來描述一個含有隱含未知引數的馬爾可夫過程。其難點是從可觀察的引數中確定該過程的隱含引數。然後利用這些引數來作進一步的分析。 HMM 現已成功地

    基於監督學習的模型(HMM)實現中文分詞

    因為語料是分好詞來訓練的,所以程式碼寫起來還算簡單,HMM的引數pi,A,B訓練只是做一個簡單的統計工作 反倒是寫維特比演算法時出了一些問題,因為之前都是紙上談兵,真正寫這個演算法才發現之前有的地方沒有搞明白!! 維特比的演算法大致如下: 注:下面[]中代表下標

    中文 NLP(3) -- 四大概率演算法模型模型 HMM 和 維特比演算法 Viterbi

    之前說過,基於NLP處理的演算法思想目前主要有兩大流派:統計論流派和深度學習流派。而在統計論中,常用的 4 大概率模型分別是 樸素貝葉斯模型,隱馬爾科夫模型,最大熵模型和條件隨機場模型。 對於樸素貝葉斯模型,前面已經多次打過交道,原理也相對簡單。這裡解析第二大模型 -- 隱

    模型HMM介紹

    馬爾科夫鏈是描述狀態轉換的隨機過程,該過程具備“無記憶”的性質:即當前時刻$t$的狀態$s_t$的概率分佈只由前一時刻$t-1$的狀態$s_{t-1}$決定,與時間序列中$t-1$時刻之前的狀態無關。定義馬爾科夫鏈的轉移矩陣為$A$,有$$A_{ij}=p\left(s_{t}=j |

    模型(HMM)原理詳解

      隱馬爾可夫模型(Hidden Markov Model,HMM)是可用於標註問題的統計學習模型,描述由隱藏的馬爾可夫鏈隨機生成觀測序列的過程,屬於生成模型。HMM在語音識別、自然語言處理、生物資訊、模式識別等領域都有著廣泛的應用。 一、 HMM模型的定義     HMM模型是關於時序的概率模型,描述由一個

    自然語言處理---用模型HMM)實現詞性標註---1998年1月份人民日報語料---learn---test---evaluation---Demo---java實現

    fileinput 流程 n) 一次 tostring model pen mem rbd 先放上一張Demo的測試圖 測試的句子及每個分詞的詞性標註為: 目前/t 這/rzv 條/q 高速公路/n 之間/f 的/ude1 路段/n 已/d 緊急/a 封閉/v 。/

    模型(Hidden Markov Model,HMM

    【轉自:https://blog.csdn.net/mingzai624/article/details/52399235】 介紹 定義 wiki上有定義: 隱馬爾可夫模型(Hidden Markov Model,HMM)是統計模型,它用來描述一個含有隱含未知引數的馬爾可夫過

    HMM模型

    一、定義 從定義可以看出,隱馬爾可夫模型做了兩個基本假設: 二、 隱馬爾可夫模型的三要素:初始狀態概率矩陣、狀態轉移概率矩陣A、觀測概率矩陣 B  三、隱馬爾科夫的3個基本問題  3.1  概率計算演算法 3.1.1 直

    模型HMM)與維特比(Viterbi)演算法通俗理解

    隱馬爾科夫模型:https://blog.csdn.net/stdcoutzyx/article/details/8522078 維特比演算法:https://blog.csdn.net/athemeroy/article/details/79339546 隱含馬爾可夫模型並不是俄

    模型HMM)的學習筆記

           被隱馬爾科夫模型整了一個星期,剛發現這個視訊講的不錯,https://www.bilibili.com/video/av32471608/?p=3,B站上 :機器學習-白板推導系列-馬爾科夫模型HMM(Hidden Markov Model)。

    機器學習中的模型HMM)詳解

    前導性推薦閱讀資料: 歡迎關注白馬負金羈的部落格 http://blog.csdn.net/baimafujinji,為保證公式、圖表得以正確顯示,強烈建議你從該地址上檢視原版博文。本部落格主要關注方向包括:數字影象處理、演算法設計與分析、資料結構、機器學

    模型HMM)學習筆記二

      這裡接著學習筆記一中的問題2,說實話問題2中的Baum-Welch演算法程式設計時矩陣轉換有點燒腦,開始編寫一直不對(程式設計還不熟練hh),後面在紙上仔細推了一遍,由特例慢慢改寫才執行成功,所以程式碼裡面好多處都有print。     筆記一中對於問題1(概率計算問題)採用了前向或後向演算

    模型HMM)——qjzcy的部落格

    工作學習中的一點體會——隱馬爾科夫模型 HMM(一) 一.             提綱 1)  假設 2)  模型 3)  五個引數 4)  解決三個問題 5)  三個方法 6)  Vertibe演算法 7)  改進 二.兩個假設 1、 馬爾科夫性假設: 一個特定狀態

    模型

    算法 模型 三元 符號表 nbsp 元組 時間 bsp 初始 馬爾科夫過程 馬爾科夫過程可以看做是一個自動機,以一定的概率在各個狀態之間跳轉。 考慮一個系統,在每個時刻都可能處於N個狀態中的一個,N個狀態集合是 {S1,S2,S3,...SN}。我們現在用q1,q2,q3