日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

隐马尔科夫模型(Hidden Markov Models) 系列之五

發布時間:2025/3/20 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 隐马尔科夫模型(Hidden Markov Models) 系列之五 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隱馬爾科夫模型(Hidden Markov Models) 系列之五

?

  • 介紹(introduction)
  • 生成模式(Generating Patterns)
  • 隱含模式(Hidden Patterns)
  • 隱馬爾科夫模型(Hidden Markov Models)
  • 前向算法(Forward Algorithm)
  • 維特比算法(Viterbi Algorithm)
  • 前向后向算法(Forward-Backward Algorithm)
  • 總結

?

?


維特比算法(Viterbi Algorithm)

?

找到可能性最大的隱藏序列

通常我們都有一個特定的HMM,然后根據一個可觀察序列去找到最可能生成這個可觀察序列的隱藏序列。

?

1.窮舉搜索

我們可以在下圖中看到每個狀態和觀察的關系。

通過計算所有可能的隱藏序列的概率,我們可以找到一個可能性最大的隱藏序列,這個可能性最大的隱藏序列最大化了Pr(observed sequence | hidden state combination)。比如說,對于上圖中的可觀察序列(dry damp soggy),最可能的隱藏序列就是下面這些概率中最大的:

Pr(dry,damp,soggy | sunny,sunny,sunny), Pr(dry,damp,soggy | sunny,sunny,cloudy), Pr(dry,damp,soggy | sunny,sunny,rainy), . . . . Pr(dry,damp,soggy | rainy,rainy,rainy)

這個方法是可行的,但是這種計算的代價是昂貴。和前向算法一樣,我們可以利用轉移概率在時間上的不變性來降低計算的復雜度。

?

2.使用遞歸降低復雜度

在給定了一個可觀察序列和HMM的情況下,我們可以考慮遞歸的來尋找最可能的隱藏序列。我們可以先定義一個部分概率,既是到達某個中間狀態的概率。接下來我們將討論如果計算t = 1和t = n( n > 1)的部分概率。

注意這里的部分概率和前向算法中的部分概率是不一樣的,這里的部分概率表示的是在t時刻最可能到達某個狀態的一條路徑的概率,而不是所有概率之和。

?

2a.部分概率和部分最優路徑

考慮下面這個圖以及可觀察序列(dry,damp,soggy)的一階轉移

對于每一個中間狀態和終止狀態(t = 3)都有一個最可能的路徑。比如說,在t=3時刻的三個狀態都有一個如下的最可能的路徑:

我們可以稱這些路徑為部分最優路徑。這些部分最優路徑都有一個概率,也就是部分概率。和前向算法中的部分概率不一樣,這里的概率只是一個最可能路徑的概率,而不是所有路徑的概率和。

?我們可以用?(i,t)來表示在t時刻,到狀態i的所有可能的序列(路徑)中概率最大的序列的概率,部分最優路徑就是達到這個最大概率的路徑,對于每一個時刻的沒一個狀態都有這樣一個概率和部分最優路徑。

最后,我們通過計算t = T時刻的每一個狀態的最大概率和部分最優路徑,選擇其中概率最大的狀態和它的部分最優路徑來得到全局的最優路徑。

?

2b.計算t = 1時刻的部分概率

當t=1時刻的時候,到達某個狀態最大可能的路徑還不存在,但是我們可以直接使用在t=1時刻某個狀態的概率和這個狀態到可觀察序列k1的轉移概率:

2c.計算t >1 時刻的部分概率

接下來我們可以根據t - 1時刻的部分概率來求t 時刻的部分概率

我們可以計算所有到狀態X的路徑的概率,找到其中最可能的路徑,也就是局部最優路徑。注意到這里,到達X的路徑必然會經過t - 1時刻的A、B和C,所以我們可以利用之前的結果。達到X的最可能的路徑就是下面三個之一:

(sequence of states), . . ., A, X(sequence of states), . . ., B, Xor (sequence of states), . . ., C, X

我們需要做的就是找到以AX、BX和CX結尾的路徑中概率最大的那個。

根據一階馬爾科夫的假設,一個狀態的發生之和之前的一個狀態有關系,所以X在某個序列的最后發生的概率只依賴于其之前的一個狀態:

Pr (most probable path to A) . Pr (X | A) . Pr (observation | X)

有個了這個公式,我們就可以利用t - 1時刻的結果和狀態轉移矩陣和混淆矩陣的數據:

將上面這個表達式推廣一下,就可以得到t時刻可觀察狀態為kt的第i個狀態的最大部分概率的計算公式:

其中aji表示從狀態j轉移到狀態i的概率,bikt表示狀態i被觀察成kt的概率。

?

2d.后向指針

考慮下圖

在每一個中間狀態和結束狀態都有一個部分最優概率?(i,t)。但是我們的目的是找到最可能的隱藏狀態序列,所以我們需要一個方法去記住部分最優路徑的每一個節點。

考慮到要計算t時刻的部分概率,我們只需要知道t-1時刻的部分概率,所以我們只需要記錄那個導致了t時刻最大部分概率的的狀態,也就是說,在任意的時刻,系統都必須處在一個能在下一時刻產生最大部分概率的狀態。我們可以利用一個后向指針來記錄導致某個狀態最大部分概率的上一個狀態,形式化的描述為:

這里argmax表示能最大化后面公式的j值,同樣可以發現這個公式之和t-1時刻的部分概率和轉移概率有關,因為后向指針只是為了找到“我從哪里來”,這個問題和可觀察沒有關系,所以這里不需要再乘上混淆因子。

?

2e.優點

使用viterbi算法對一個可觀察狀態進行解碼有兩個重要的優點:

  • 通過使用遞歸來減少復雜度,這點和之前的前想算法是一樣的
  • 可以根據可觀察序列找到最優的隱藏序列,這個的計算公式是:
  • where

    這里就是一個從左往右翻譯的過程,通過前面的翻譯結果得到后面的結果,起始點是初始向量。

    ?

    2.補充

    但在序列某個地方有噪聲干擾的時候,某些方法可能會和正確答案相差的較遠。

    但是Viterbi算法會查看整個序列來決定最可能的終止狀態,然后通過后向指針來找到之前的狀態,這對忽略孤立的噪聲非常有用。

    ?

    3.總結

    Viterbi算法提供了一個根據可觀察序列計算隱藏序列的很高效的方法,它利用遞歸來降低計算復雜度,并且使用之前全部的序列來做判斷,可以很好的容忍噪聲。

    在計算的過程中,這個算法計算每一個時刻每一個狀態的部分概率,并且使用一個后向指針來記錄達到當前狀態的最大可能的上一個狀態。最后,最可能的終止狀態就是隱藏序列的最后一個狀態,然后通過后向指針來查找整個序列的全部狀態。

    ?

    ?


    前向后向算法(Forward-Backward Algorithm)

    ?

    和隱馬爾科夫模型相關的有趣的問題就是判斷一個模型的實用性(前向算法)和找到一個隱藏在可觀察序列背后的隱藏序列(Viterbi算法)。當然,這兩個過程都需要知道HMM的一些信息,比如轉移矩陣,混淆矩陣以及初始的π向量。

    但是在很多實際的情況下,HMM不能被直接的 判斷,這就變成了一個學習問題,前向后向算法可以根據一系列可觀察序列來對HMM進行評測。一個可能的例子就是一個很大的語音處理數據庫,語音序列可能被 建模為一個馬爾科夫鏈,可觀察的序列可以被建模為可識別的狀態,但是不能直接獲得一些其他的相關信息。

    前向后向算法理解起來并不困難,但是卻要比前向算法和Viterbi算法要復雜,所以這里我們不再詳細的介紹。總的來說,這個算法先對一些參數進行猜測,然后再通過評估這些參數的價值來修改這些參數,使得和給定的訓練數據的誤差變小,這其實是機器學習中的梯度下降的思想。

    前向后向算法的名稱來源于對于每一個狀態,這個算法既要計算到達這一狀態的前一個狀態的概率,也要計算產生終止狀態的后向狀態的概率,這兩個概率都可以通過遞歸的方法來實現。對HMM參數的調整可以提高中間概率的準確性,并且這些調整是算法迭代的基礎。

    ?

    ?


    ?

    總結(summary)

    ?

    通常一個特別的模式不是單獨的出現,而是作為某一個時間段下的序列出現。對于以時間為單位的過程有一個假設,一個狀態的出現之和其前N個時間單位的狀態有關系,這樣就是一個N階馬爾科夫鏈,最簡單的情況就是一階馬爾科夫鏈。

    很多情況下,真實的狀態序列是不能被直接觀察到的,但是可以在一定概率下被間接觀察到,這個觀察的結果就是另一個可觀察的序列,這樣我們就可以定義一個隱馬爾科夫模型,這個模型在現在的某些領域體現了很大的價值,尤其是語音識別。

    這種關于真實序列的模型有三個相關的問題:

  • 評價:一個給定的模型在多大的概率下能產生某個可觀察的序列,這個問題可以用前向算法來解決。
  • 解碼:給定一個模型和某個可觀察序列,最可能的隱藏序列是什么,這個問題可以用Viterbi算法來解決。
  • 學習:給定某個可觀察序列,怎么知道這個模型的一些參數,這個問題可以用前向后向算法來解決。
  • 隱馬爾科夫模型在分析真實系統的時候表現出了巨大的價值,但是它也有一些缺點,一個最大的缺點就是由于之前的假設導致的過于簡化——一個狀態只依賴其之間的狀態,而且這種依賴是時間無關的。

    ?

    一個更詳細的關于HMMs的介紹可以參見

    L R Rabiner and B H Juang, `An introduction to HMMs', iEEE ASSP Magazine, 3, 4-16.

    ?

    總結

    以上是生活随笔為你收集整理的隐马尔科夫模型(Hidden Markov Models) 系列之五的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。