【機器學習】隱馬爾可夫模型

2021-01-16 AINLP


隱馬爾科夫模型是一種時序的概率模型,描述由一個隱的馬爾科夫鏈隨機生成的不可觀察的隱狀態序列,在每一個隱狀態下隨機產生觀察值構成一個可觀測的隨機序列。其中關鍵是狀態序列是滿足馬爾科夫性質的,且可觀測序列是由隱藏的狀態序列以一定的概率隨機生成。

在自然語言中文分詞中,由於自然語言是有明顯的上下文關係的,即當前字與其前後出現的字都是有關係的。為了表示前一個字對當前字的影響,我們用一個隱狀態來表示前的語義狀態,用在前一個狀態下轉移到發射出當前字的隱狀態的概率表示前一個字對當前字的影響。整個來說就是把上下文字對字的影響轉化成狀態對狀態的影響。而用發射概率來表示狀態到字的關係。值得注意的是隱馬爾可夫模型中:


之間獨立作用



隱馬爾科夫模型由狀態集,觀測集,初始狀態轉移概率,狀態轉移概率,以及發射概率確定。

形式化定義為:

所有可能的隱藏狀態集Q,所有可能的觀察值集V,其中是可能的狀態數,是可能的觀察數。

假設是長度為的隱狀態序列,是其對應的觀測值序列。

是狀態轉移概率矩陣:


其中,表示第時刻在狀態下轉移到第時刻狀態的概率。

是發射概率矩陣,在隱狀態確定之後發射出觀測狀態的概率:

其中:


表示在狀態下發射出的概率。

是初始狀態的概率分布:


其中,表示在時刻狀態為的概率。

由此,馬爾科夫模型定義完成。至於為何這樣定義,隱狀態的意義是什麼,就是模型的價值所在,如何理解隱狀態也是一種個人體會。

有了隱馬爾科夫模型,接下來看隱馬爾科夫模型能做什麼?

1、給定一個確定的隱馬爾科夫模型(參數確定)和觀察序列,計算在該參數下觀察序列的輸出概率   。

概率計算,由於觀測序列的產生於隱狀態是相關的,所以需要從隱狀態的轉移概率入手,通過發射概率間接的轉化到觀察序列。一般情況下該觀測序列對應的隱狀態序列有多個,把所有隱狀態可能的序列結合觀察序列求概率,再求和。

2、學習問題,已知觀察序列,估計模型參數,使得在該模型下觀測序列的概率最大。

學習問題,假設在不知道模型參數的情況下,而我們有大量的觀察序列,那麼這些大量的觀察序列一定不是偶然是這樣,而不是那樣的。從概率的角度來講,是這樣,而不是那樣的原因就是,是這樣的概率大於是那樣的概率。如果有大量的觀察序列,那麼其中必然隱藏了模型的信息。

3、預測問題,已知模型的參數和觀察序列O,求解一條使得該觀測序列概率最大的隱狀態序列   。這樣概率計算類似,只需要求最大的即可。

好了,對應上面的三個問題,分別有三個算法求解對應的問題。

參數學習-最大似然估計(有監督),Baum-Walch(無監督)


B、概率計算(觀察序列的概率)


給定一個確定的隱馬爾科夫模型(參數確定)和觀察序列,計算在該參數下觀察序列的輸出概率   。最直接的方法是計算所有可能的概率,即:


其中,這個狀態我們是看不見的,且沒個時刻的取值都有中,由於隱狀態與觀察狀態無關,其概率為:


由於的取值有種,但序列前後有一個相同的狀態,所以整個的複雜度是

而在參數和隱狀態都確定的條件下,產生觀察序列的概率為:


即整個時刻的發射概率的乘積。

因此在給定參數的條件下,產生觀察序列的概率為:


算法的複雜度為。之所以算法的複雜度高是分別計算,而忽略了序列之間的遞推關係。

下面介紹隱馬爾可夫概率計算問題中的前向-後向算法

前向概率:在給定模型的參數和觀察序列下,表示時刻的前向概率(從時刻到時刻觀察序列):


由前向遞推關係等於在所有可能的前一狀態轉移到當前狀態(同時t時刻發射出觀測值)的概率之和:


因此前向算法計算如下:


後向概率
:在給定模型的參數和觀察序列下,表示時刻的後向概率(從時刻到時刻觀察序列):


值得注意的是,後向概率表示序列從時刻到時刻的概率,所以

由後向遞推關係等於所有可能的後一狀態逆轉移到當前狀態(同時時刻發射出觀測值)的概率之和

因此後向算法計算如下:

1)初值:

2)反向遞推:

3)求和:


前向後向算法



由上面的前向後向算法,固定時刻的狀態,由前向後向算法有:


C、參數估計

一般來講,隱馬爾可夫的參數估計問題分為兩種,一種是有監督,一種是無監督的。有監督意味著給定的訓練集中觀測序列和隱狀態序列,此時對應的參數估計問題就可以直接採用最大似然估計;無監督意味著給定的訓練集中只有觀測序列,此時需要採用EM算法思想,先假設參數,通過期望最大化來獲得隱狀態序列(硬劃分隱狀態序列對應到值,軟化分隱狀態序列對應到概率),然後根據隱狀態序列來更新參數,不斷迭代至收斂。

有監督(最大似然估計):

轉移概率表示從狀態轉移到狀態的概率:


其中分子表示從狀態轉移到狀態的次數,分母表示從狀態轉移到任意狀態的次數。

發射概率表示在狀態下發射出觀測值的概率:


其中分子表示在狀態下發射出觀測值的次數,分母表示在狀態下發射出任意狀態的次數。

初始狀態轉移概率為樣本中初始狀態的概率:


其中分子表示初始狀態是的次數,分母表示所有初始狀態出現的次數。

無監督(Baum-Welch):

隱馬爾可夫模型中隱狀態其實是一個隱變量,EM算法這類含有隱變量模型的通用求解算法,思路是初始化一個隱變量的概率分布,E步:期望最大化來更新樣本的隱變量(值,概率),M步:在隱變量確定的條件下更新隱變量的概率。


D、狀態預測


已知模型的參數和觀察序列O,求解一條使得該觀測序列概率最大的隱狀態序列   。這樣概率計算類似,只需要求最大的即可。

維特比算法:維特比算法是一種動態規划算法來求解概率最大路徑,也是一種求解最優路徑問題。而最優路徑中總存在這樣一個特性:如果最優路徑時刻通過結點,那麼最優路徑中從結點到最終結點的部分路徑是所有可能從路徑中最優的(同時從的路徑也是最優的)。依據這一特性,我們可以從開始遞推計算時刻下狀態為的各種路徑的最大概率,直至時刻狀態為的最大概率。同時在遞推的過程中,我們用一個變量來計住到達最優路徑的上一個結點的狀態。這樣我們就首先確定了時刻的狀態值。然後,根據到達該狀態的上一個結點狀態來遞推到

因此,我們需要引入兩個變量,從時刻到時刻狀態為的最優路徑的概率值,並以此來遞推下一時刻狀態為的最優路徑,即


同時為了記住到達該路徑的上一節點的狀態,定義如下變量:


有了上面的兩個變量,我們就可以獲得隱狀態的最優路徑:

1)初始化

2)遞推,對

3)終止

4)最優路徑回溯,

求得最優路徑

其中值得注意的是,是無用的,在前向遞推到時刻獲得最大概率的同時也獲得了最優的最終狀態,回溯的過程只需要從開始,不需要任何計算,因為中保存了到達當前最優路徑狀態的上一狀態。

相關焦點

  • 機器學習算法之隱馬爾可夫模型
    (Hidden Markov Model),隱馬爾可夫模型最初是在20世紀60年代後半期Leonard E.隱馬爾可夫模型簡單介紹隱馬爾可夫模型是關於時序(順序)的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。
  • 隱馬爾可夫模型
    隱馬爾可夫模型(Hidden Markov Models,簡稱 HMM)的出現,是為了彌補馬爾可夫模型的不足,在某些較為複雜的隨機過程中,任一時刻 t 的狀態 St 是不可見的。所以觀察者沒法觀察到狀態序列 S1 ,S2, L , St ,但是隱馬爾可夫模型在每個時刻 t 會輸出一個觀測狀態Ot ,而且Ot 僅和 St 相關。這個被稱為獨立輸出假設。
  • 詳解隱馬爾可夫模型(HMM)
    它是典型的自然語言中處理標註問題的統計機器學模型,本文將重點介紹這種經典的機器學習模型。假設有三個不同的骰子(6面、4面、8面),每次先從三個骰子裡面選擇一個,每個骰子選中的概率為1/3,如下圖所示,重複上述過程,得到一串數值[1,6,3,5,2,7]。這些可觀測變量組成可觀測狀態鏈。
  • 賽爾筆記 | 隱馬爾可夫模型
    說到隱馬爾可夫模型(HMM),我們先來了解下馬爾可夫模型(Markov模型),Markov模型是一種統計模型,廣泛地應用在語音識別,詞性自動標註,音字轉換,概率文法等各個自然語言處理的應用領域。一. 馬爾可夫模型(Markov模型)設是隨機變量序列,其中每個隨機變量的取值在有限集
  • 隱馬爾可夫模型怎麼畫?3分鐘學會使用模型圖
    隱馬爾可夫模型既是一類非常有名的向圖模型,也可以用作有關時序的概率模型,又是一種典型的用於處理自然語言中標註問題的統計方面的機器學模型。馬爾可夫模型不斷推廣改進,截止目前已經推廣到了適用於更加複雜的數據結構與非穩定數據建模的兩兩馬爾可夫模型和三重態馬爾可夫模型。
  • 本座選股談量化投資—隱馬爾可夫模型
    首先這篇文章是寫給沒有什麼基礎人士看的,目的是讓更多可能數學上有些障礙,但是又想要了解量化投資的朋友,無障礙的理解隱馬爾可夫模型框架。此文不適合追求嚴密邏輯和追求簡潔符號建立模型的數學大神。如果您是,請選擇性忽略。
  • 隱馬爾可夫模型攻略
    隱馬爾可夫模型 (Hidden Markov Model,HMM) 最初由 L. E.
  • 隱馬爾可夫模型(HMM)攻略
    日期:2020年05月04日正文共:9038字13圖預計閱讀時間:9分鐘來源:光明日報隱馬爾可夫模型這就是本文重點介紹的隱馬爾可夫模型。隱馬爾可夫模型 (Hidden Markov Model) 是一種統計模型,用來描述一個含有隱含未知參數的馬爾可夫過程。其難點是從可觀察的參數中確定該過程的隱含參數,然後利用這些參數來作進一步的分析。
  • 驚為天人,NumPy手寫全部主流機器學習模型,代碼超3萬行
    最近,來自普林斯頓的一位博士後將 NumPy 實現的所有機器學習模型全部開源,並提供了相應的論文和一些實現的測試效果。平均每個模型的代碼行數在 500 行以上,在神經網絡模型的 layer.py 文件中,代碼行數接近 4000。這,應該是目前用 NumPy 手寫機器學習模型的「最高境界」吧。
  • 三張圖讀懂機器學習:基本概念、五大流派與九種常見算法
    機器學習正在進步,我們似乎正在不斷接近我們心中的人工智慧目標。語音識別、圖像檢測、機器翻譯、風格遷移等技術已經在我們的實際生活中開始得到了應用,但機器學習的發展仍還在繼續,甚至被認為有可能徹底改變人類文明的發展方向乃至人類自身。但你了解現在正在發生的這場變革嗎?
  • Python機器學習7:如何保存、加載訓練好的機器學習模型
    本文將介紹如何使用scikit-learn機器學習庫保存Python機器學習模型、加載已經訓練好的模型。學會了這個,你才能夠用已有的模型做預測,而不需要每次都重新訓練模型。本文將使用兩種方法來實現模型的保存和加載:Pickle和joblib。
  • R語言中的隱馬爾可夫HMM模型實例
    p=17592 最近,我們使用隱馬爾可夫模型開發了一種解決方案,並被要求解釋這個方案。HMM用於建模數據序列,無論是從連續概率分布還是從離散概率分布得出的。它們與狀態空間和高斯混合模型相關,因為它們旨在估計引起觀測的狀態。狀態是未知或「隱藏」的,並且HMM試圖估計狀態,類似於無監督聚類過程。
  • 經典書《機器學習:概率視角》習題解答(中文),附1098頁pdf下載
    機器學習的目標是開發能夠自動檢測數據模式的方法,然後使用未發現的模式來預測未來的數據或其他感興趣的結果。 因此,機器學習與統計和數據挖掘領域密切相關,但在其重點和術語方面略有不同。 這本書提供了該領域的詳細介紹,並包括從應用領域,如分子生物學,文本處理,計算機視覺和機器人的工作示例。
  • 使用Flask部署機器學習模型
    介紹我記得我早期在機器學習領域的日子。我喜歡處理多個問題,對機器學習項目的各個階段都很感興趣。和我之前的許多人一樣,我被模型整個生命周期的構建所吸引。我和領域專家談過,項目經理和所有相關人員確保他們的投入被包括在模型中。但後來我遇到了一個障礙——我到底該如何把我的模型交給我的客戶呢?我不能給他們一個Jupyter notebook!
  • 機器學習模型評估指標Python代碼示例
    我們什麼時候評估我們的機器學習模型呢?答案不是只有一次。通常,我們在實際的數據科學工作流中兩次使用機器學習模型驗證指標:模型比較:為您的任務選擇最佳機器學習(ML)模型模型改進:調整超參數為了更清楚地了解這兩者之間的區別,讓我通過機器學習(ML)實現的工作流程來解釋。
  • 蘋果連發三篇機器學習新研究:全是講如何讓Siri更厲害
    蘋果上月推出的機器學習博客今天連更3篇新文,全部是有關Siri的研究技術。三篇講了啥?另外兩篇分別題為《Improving Neural Network Acoustic Models by Cross-bandwidth and Cross-lingual Initialization》和《Inverse Text Normalization as a Labeling Problem》,一篇提到Siri如何用機器學習格式化地展示日期、時間等的呈現技術,另一篇講解了如何讓
  • 大講堂 | 預測時間敏感的機器學習模型建模與優化
    原標題:大講堂 | 預測時間敏感的機器學習模型建模與優化 雷鋒網AI研習社訊:機器學習模型現在已經廣泛應用在越來越多的領域比如地震監測,闖入識別,高頻交易;同時也開始廣泛的應用在行動裝置中比如通過邊緣計算。這些真實世界的應用在原有的模型精度基礎之上帶來很多實際約束比如預測要在很短或規定時間內完成。
  • 隱馬尓可夫模型怎麼畫?億圖軟體專業的圖形圖表工具
    隱馬爾可夫模型既是一類非常有名的向圖模型,也可以用作有關時序的概率模型,又是一種典型的用於處理自然語言中標註問題的統計方面的機器學模型。,此時用到的隱馬爾可夫模型往往複雜度並不在問題的抽象,而在數學處理上,用到的模型還經常混合了其他的模型。
  • 盤點| 機器學習入門算法:從線性模型到神經網絡
    原標題:盤點 | 機器學習入門算法:從線性模型到神經網絡 選自Dataconomy 機器之心編譯 參與:王宇欣、吳攀、蔣思源幾十年來,機器學習實際上已經變成了一門獨立的領域。由於現代計算能力的進步,我們最近才能夠真正大規模地利用機器學習。而實際上機器學習是如何工作的呢?答案很簡單:算法(algorithm)。 機器學習是人工智慧(artificial intelligence)的一種,其本質上講,就是計算機可以在無需編程的情況下自己學習概念(concept)。
  • 【全自動機器學習】ML 工程師屠龍利器,一鍵接收訓練好的模型
    而自動機器學習的兩大工具,Auto-weka 有可視化界面,只需輕點滑鼠就能完成訓練工作,auto-sklearn 也僅需數行代碼便可構建可用的模型。操作如此簡單,還不用擔心訓練後的模型不 work,是不是很值得上手試驗一番?