機器學習算法之隱馬爾可夫模型

2021-02-18 智能與算法之路


點擊上方「智能與算法之路」,選擇「星標」公眾號

資源乾貨,第一時間送達

今天為大家介紹的是隱馬爾可夫模型(Hidden Markov Model),隱馬爾可夫模型最初是在20世紀60年代後半期Leonard E. Baum和其它一些作者在一系列的統計學論文中描述的。HMM最初的應用之一是開始於20世紀70年代中期的語音識別。

隱馬爾可夫模型

簡單介紹

隱馬爾可夫模型是關於時序(順序)的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。隱藏的馬爾可夫鏈隨機生成的狀態的序列,稱為狀態序列(state sequence);每個狀態生成一個觀測,而由此產生的觀測的隨機序列,稱為觀測序列(observation sequence)。序列的每一個位置又可以看作是一個時刻。

我們知道句子的表達不僅與其構成的詞語有關,還與詞的位置以及語法有關。因此對於語言來說,如果忽略語序進行理解,往往得不到句子正常的意思。(儘管如此,樸素貝葉斯在垃圾郵件分類上仍取得很好的效果)HMM在建立模型的時候可以考慮之前狀態對當前的影響。例如,我們要給以下句子做詞性標註

我(名詞)愛(動詞)學習(名詞/動詞?)

如果單獨去給『學習』這個詞標註的話,『學習』可能是名詞也可以是動詞。但在上面那句話裡『學習』顯然是名詞,因為學習前面的詞『』是動詞,後面應該接名詞,因此『學習』標註應該標註為名詞。這裡我們在標註的時候考慮前面詞語的詞性對當前詞的詞性的影響。HMM也是這樣去給詞語標註詞性的。只不過HMM是這麼看待以上問題,我 愛 學習 被看做長度為3的序列,這個序列為觀測序列。它們的詞性可以理解為詞語的某個狀態,由於我們現在是要給詞語做標註,因此我們是不知道每個觀測值(詞語)的狀態(詞性)的。並且我們知道句子的基本構成有主謂賓定狀補,詞語的詞性往往與該詞在句子充當的成分有關。例如謂語(愛)之後的詞(學習)很有可能名詞這麼一種轉態改變的規則。

用HMM的概念來說,我愛學習是觀測序列,詞語的詞性序列是一個狀態序列,詞性變化規則為狀態轉移矩陣(描述不同狀態相互轉換的概率)。在深入介紹隱馬爾可夫模型之前先引入一些基本概念。

馬爾可夫性

馬爾可夫性質是概率論中的一個概念。當一個隨機過程在給定現在狀態及所有過去狀態情況下,其未來狀態的條件概率分布僅依賴於當前狀態;換句話說,在給定現在狀態時,它與過去狀態(即該過程的歷史路徑)是條件獨立的,那麼此隨機過程即具有馬爾可夫性質。具有馬爾可夫性質的過程通常稱之為馬爾可夫過程。當前情況盡跟之前n個狀態有關的隨機過程稱為n階馬爾科夫過程。

例子

拿天氣和海藻的例子來說
假設海藻的溼度與天氣有某種關聯,為了簡易的去定義這個問題,定義海藻存在四種觀測值{dry,dryish,damo,soggy},天氣的狀態也只有三種狀態{sunny,cloudy,rainy}。
(這裡我們直接定義了觀測序列為一段時間內,海藻的溼度的一個序列,隱含狀態為同一段時間內,天氣的狀態序列,我們假設一個盲人只能通過觸摸判斷海藻溼度來推測天氣這麼一個情景)

在不同天氣下,觀測到海藻不同的溼度的概率是不同的

上面其實是一個觀測矩陣,表示在不同的隱含狀態下觀測到不同海藻溼度的概率,你會發現該矩陣每一行求和的結果都等於1。這個矩陣的數據是通過經驗獲得的,例如你統計了很多個晴天的狀態下,海藻有著不一樣的溼度,通過對大量數據的一個統計,我們就可以得到晴天狀態下,觀測到不同溼度的海藻的概率。

當然天氣之間也是存在互相轉化的,但令人頭疼的是,昨天的天氣或者更久以前的天氣會對今天的天氣有所影響,這樣考慮問題會使得問題變得格外複雜,因此隱馬爾可夫做了最基本的假設,即當前狀態只與前一個狀態有關(齊次馬爾可夫性假設)。同時也做觀測獨立性假設,所有的觀測之間是互相獨立的,某個觀測之和生成它的狀態有關係。

對應狀態轉移矩陣A

其中為狀態:i->j的概率,然後同樣你會發現每一行元素的求和等於1。

我們還需要序列的初始狀態π,這個初始狀態可以通過對多個樣本的初始狀態進行統計得出。

由此我們就已經定義了一個完整的隱馬爾可夫模型,該模型由觀測序列、狀態序列、以及初始狀態概率向量ππ、狀態轉移概率矩陣AA和觀測概率矩陣BB,其中後三個為隱馬爾可夫模型的參數一般用一個三元組表示。即

假設盲人連續記錄三天,得到觀察序列Q = {dry,damp,soggy},這三天的天氣為{sunny,cloudy,rainy}(儘管盲人無法觀測到,但可以通過馬爾可夫模型去估計這幾天的天氣)

隱馬爾可夫三個基本問題

概率計算問題:給定模型參數和觀測序列,計算出現某個觀測序列的概率

預測問題:給定模型參數和觀測序列,求最有可能的狀態序列

學習問題:給定觀測序列和狀態序列,得到模型參數

概率計算問題

給定模型參數和觀測序列計算觀測序列O的出現概率,直接計算即按照概率公式去計算

如果直接去計算,通過列舉所有可能的長度為T的狀態序列I,求各個狀態序列I與觀測序列的聯合概率,然後對所有可能的狀態序列求和得到結果

對於給定的I序列,O,I同時出現的聯合概率為

然後,對所有可能的狀態序列I求和,得到觀測序列O的概率

利用上述公式計算量很大,因為所有可能的狀態序列有很多種,上述方法時間複雜度是的,這種算法在數據量大的情況下,是不可行的。因此我們用前向算法去計算其時間複雜度為


前向算法

前向概率 :給定隱馬爾可夫模型參數λ 定義時刻t部分觀測序列為

,且狀態為的概率為前向概率,記作

每次計算利用了前一時刻N個狀態下的,避免了重複計算

前向算法其實是以空間換時間的一種方法。具體的第一項的前向概率為

後面的項的前向概率為

因此得出

同理我們可以導出後向概率與後向算法

後向算法的從序列後面開始計算概率,最後一項的後項概率為

其餘項的後向概率表示為

得出

利用前向概率和後向概率的定義可以將概率統一寫成

此式當t = 1 和 t = T -1時,則分別寫為原來的形式


學習問題

監督學習問題

如果訓練數據包含S個長度的長度的觀測序列和對隱狀態序列那麼我們可以直接用極大似然估計隱馬爾可夫模型的參數其中

π̂ 為需要統計S個樣本中初始狀態為的概率。

監督學習需要大量的數據,而且人工標註訓練數據的代價往往很高,故有時就會利用非監督學習的方法。

baum-welch算法

baum-welch算法又稱 前向-後向算法,由baum和welch,算法的本質其實就是用EM算法去估計P(O|λ)P(O|λ)的概率分布對應隱馬爾可夫模型的參數。

確定完全數據的對數似然函數

E步,求Q函數

去掉對λ而言的常數因子

M步

注意到滿足約束條件 ,利用拉格朗日乘子法,對其求偏導並令結果為0,得

對i求和得到γ

代入得

類似的求出

以上式子還可以寫成

預測問題

近似算法

近似算法實際是一種貪心的方法,在每一步選擇概率最大的狀態值作為結果,但這樣得到的結果有可能不是最佳的預測結果,但是近似算法的計算量非常的小。

維特比算法

維特比算法其實用了動態規劃的方法求解HMM的解碼問題。但在小的篇幅中很難把動態規劃講得淺顯易懂。因此有興趣的朋友可以去《數學之美》一書中去了解維特比算法。

資料來源:

《統計學習方法》     李航

  以及網上各位大佬的博文

歡迎關注我們,收穫資源乾貨

相關焦點

  • 詳解隱馬爾可夫模型(HMM)
    隱馬爾可夫模型由初始狀態概率向量C,狀態轉移概率矩陣A和觀測概率矩陣B決定,C和A決定狀態序列,B決定觀測序列,因此隱馬爾可夫模型可以用三元符號表示為:可以假設標註問題的數據是由隱馬爾可夫模型生成的,這樣可以利用該模型的學習與預測算法進行標註。隱馬爾科夫模型的三個基本問題:(1) 概率計算問題:給定模型lamda=(A,B,C)和觀測序列O=(o1,o2,...,oT),計算在該模型下觀測序列O出現的概率P(O|lamda)。
  • 賽爾筆記 | 隱馬爾可夫模型
    說到隱馬爾可夫模型(HMM),我們先來了解下馬爾可夫模型(Markov模型),Markov模型是一種統計模型,廣泛地應用在語音識別,詞性自動標註,音字轉換,概率文法等各個自然語言處理的應用領域。一. 馬爾可夫模型(Markov模型)設是隨機變量序列,其中每個隨機變量的取值在有限集
  • 隱馬爾可夫模型HMM及Python實現
    知乎專欄:經管人學數據分析隱馬爾可夫模型差不多是學習中遇到的最難的模型了,本節通過對《統計學習方法》進行學習並結合網上筆記,用Python代碼實現了隱馬模型觀測序列的生成、前向後向算法、Baum-Welch無監督訓練、維特比算法。比較清晰的了解了隱馬爾可夫模型,其實在實際運用中我們只需要調用庫就一行代碼解決問題。
  • 機器學習基礎圖表:概念、原理、歷史、趨勢和算法
    四大會計師事務所之一的普華永道(PwC)發布了多份解讀機器學習基礎的圖表,其中介紹了機器學習的基本概念、原理、歷史、未來趨勢和一些常見的算法。為便於讀者閱讀,機器之心對這些圖表進行了編譯和拆分,分三大部分對這些內容進行了呈現,希望能幫助你進一步擴展閱讀。
  • 隱馬爾可夫模型攻略
    這就是本文重點介紹的隱馬爾可夫模型。  隱馬爾可夫模型 (Hidden Markov Model) 是一種統計模型,用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數,然後利用這些參數來作進一步的分析。
  • 三張圖讀懂機器學習:基本概念、五大流派與九種常見算法
    編者按:本文由機器之心編譯自PwC,作者:Alan Morrison、Anand Rao,參與:吳攀、晏奇;36氪經授權發布。 機器學習正在進步,我們似乎正在不斷接近我們心中的人工智慧目標。語音識別、圖像檢測、機器翻譯、風格遷移等技術已經在我們的實際生活中開始得到了應用,但機器學習的發展仍還在繼續,甚至被認為有可能徹底改變人類文明的發展方向乃至人類自身。
  • 數學推導+純Python實現機器學習算法30:系列總結與感悟
    一點總結     整個系列對常用的、主流的機器學習模型與算法進行了梳理,主題只有兩個,一個是數學推導,一個手寫實現。因為機器學習原理大多都是由數學支撐,基本的機器學習數學公式推導對於深入掌握機器學習十分重要;另一方面,通過手寫實現機器學習算法,深入理解算法細節,進一步提高算法實現的代碼能力。
  • 隱馬爾可夫模型(HMM)攻略
    這就是本文重點介紹的隱馬爾可夫模型。隱馬爾可夫模型 (Hidden Markov Model) 是一種統計模型,用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數,然後利用這些參數來作進一步的分析。
  • 機器學習的基礎圖表!
    為便於讀者閱讀,機器之心對這些圖表進行了編譯和拆分,分三大部分對這些內容進行了呈現,希望能幫助你進一步擴展閱讀。一、機器學習概覽1. 什麼是機器學習?機器通過分析大量數據來進行學習。機器學習和人工智慧的關係機器學習是一種重在尋找數據中的模式並使用這些模式來做出預測的研究和算法的門類。機器學習是人工智慧領域的一部分,並且和知識發現與數據挖掘有所交集。
  • 機器學習課程教與學(教學大綱和教案)
    本課程的教學目的是使學生理解機器學習的基本問題和基本算法,掌握它們的實踐方法,為學生今後從事相關領域的研究工作或項目開發工作奠定堅實的基礎。(一)緒論(1學時)【內容】機器學習的基本概念,機器學習算法及其分類,課程內容介紹,編程環境及工具包。【重點】機器學習的基本概念,機器學習算法分類。(二)聚類(11學時,含4學時實驗課)【內容】K均值聚類及其改進算法,聚類的任務,樣本點常用距離度量,聚類算法評價指標,聚類算法分類,DBSCAN算法及其派生算法,AGNES算法。
  • 機器學習算法之LASSO算法
    算法的適用場景: Lasso回歸是有監督機器學習的一種常見的回歸方法。算法的基本邏輯: 一般來說,有監督的機器學習都有以下形式的優化目標:其中第一部分就是Loss函數,第二部分正則化項。由此可以看出基本上所有的有監督機器學習,其核心思想無非就是正則化參數的同時最小化經驗誤差函數。
  • 用 NumPy 手寫 30 個主流機器學習算法,GitHub 9K 星,全都開源了!(文末薦書)
    >獲取更多乾貨在右上方 ··· 設為星標 ★,第一時間獲取資源僅做學術分享,如有侵權,聯繫刪除轉載於 :機器之心剛在Github上找到了一個標星超高的Numpy算法,推薦一下出版社剛出的《圖解機器學習》書!
  • 「3步套路」快速掌握機器學習算法和模型 | 極客時間
    然而,機器學習領域浩如煙海,各類教材和入門課程層出不窮。特別是機器學習基礎需要不少的數學知識,這對於想進入這一領域的工程師而言,無疑是一個比較高的門檻。今天,我來和你聊一聊如何學習和掌握機器學習基礎知識,又如何通過核心的知識脈絡快速掌握更多的機器學習算法和模型。
  • 驚為天人,NumPy手寫全部主流機器學習模型,代碼超3萬行
    最近,來自普林斯頓的一位博士後將 NumPy 實現的所有機器學習模型全部開源,並提供了相應的論文和一些實現的測試效果。項目地址:https://github.com/ddbourgin/numpy-ml根據機器之心的粗略估計,該項目大約有 30 個主要機器學習模型,此外還有 15 個用於預處理和計算的小工具,全部.py 文件數量有 62 個之多。
  • 偶爾作弊的賭場——隱馬爾可夫中的動態規劃
    隱馬爾可夫模型(Hidden Markov Model,HMM)是關於時序的概率模型,是一個生成模型,由一個隱藏的馬爾科夫鏈隨機生成不可觀測的狀態序列描述。語音識別、基因預測等很多應用問題都可以建模成隱馬爾可夫模型的解碼問題。本文將以偶爾作弊的賭場為例介紹 HMM 解碼問題中涉及的動態規划算法。在探究這個問題之前,首先了解一下隱馬爾可夫模型的定義形式。
  • [算法]機器學習分類模型評估指標
    ,有監督主要是各種分類和回歸的算法,無監督主要是聚類。新的機器學習方法主要包括:深度學習和強化學習。深度學習中可以做分類和回歸的無監督算法,在無監督學習方法主要還是做分類,深度學習的無監督主要是生成模型GAN。強化學習是一種激勵性的學習方式,其評價方式也比較獨特。
  • 機器學習算法一覽
    包括關聯規則和聚類算法在內的一系列機器學習算法都屬於這個範疇。這類問題給出的訓練數據,有一部分有標籤,有一部分沒有標籤。我們想學習出數據組織結構的同時,也能做相應的預測。此類問題相對應的機器學習算法有自訓練(Self-Training)、直推學習(Transductive Learning)、生成式模型(Generative Model)等。
  • 大數據之機器學習常見算法分類匯總
    機器學習無疑是當前數據分析領域的一個熱點內容。很多人在平時的工作中都或多或少會用到機器學習的算法。這裡IT經理網為您總結一下常見的機器學習算法,以供您在工作和學習中參考。機器學習的算法很多。在機器學習領域,有幾種主要的學習方式。將算法按照學習方式分類是一個不錯的想法,這樣可以讓人們在建模和算法選擇的時候考慮能根據輸入數據來選擇最合適的算法來獲得最好的結果。監督式學習
  • 80頁筆記看遍機器學習基本概念、算法、模型,幫新手少走彎路
    目前有關機器學習的資料可謂層出不窮,其中既有書籍、課程視頻資料,也有很多算法模型的開源項目。
  • 機器學習免費課程 Top 10
    其中包括吳恩達在 Coursera上的機器學習。從授課內容來看,涵蓋了案例研究、統計學習、回歸、無監督機器學習隱馬爾可夫模型Python 等方面。你將能夠處理非常大的特徵集,並在各種複雜的模型中進行選擇。你還將分析數據方面(例如異常值)對所選模型和預測的影響。為了適應這些模型,你需要實現擴大到大型數據集的優化算法。