維特比演算法(Viterbi)

2021-09-07 15:50:36 字數 2555 閱讀 7063

編輯

維特比演算法是一種

動態規劃演算法用於尋找最有可能產生觀測事件序列的-維特比路徑-隱含狀態序列,特別是在馬爾可夫資訊源上下文和隱馬爾可夫模型中。術語「維特比路徑」和「維特比演算法」也被用於尋找觀察結果最有可能解釋相關的動態規劃演算法。例如在統計句法分析中動態規劃演算法可以被用於發現最可能的上下文無關的派生(解析)的字串,有時被稱為「維特比分析」。

中文名維特比演算法

外文名viterbi algorithm

提出時間

2023年

提出者安德魯·維特比

應用領域

cdma和

gsm數字蜂窩網路等

維特比演算法由安德魯·維特比(andrew viterbi)於2023年提出,用於在數字通訊鏈路中解卷積以消除噪音。 此演算法被廣泛應用於

cdma和gsm數字蜂窩網路、撥號數據機、衛星、深空通訊和

802.11無線網路中解卷積碼。現今也被常常用於

語音識別、關鍵字識別、

計算語言學和

生物資訊學中。例如在語音(語音識別)中,聲音頻號作為觀察到的事件序列,而文字字串,被看作是隱含的產生聲音頻號的原因,因此可對聲音頻號應用維特比演算法尋找最有可能的文字字串。[1]

數學之美維特比演算法

維特比演算法的基礎可以概括成下面三點:

如果概率最大的路徑p(或者說最短路徑)經過某個點,比如途中的x22,那麼這條路徑上的起始點s到x22的這段子路徑q,一定是s到x22之間的最短路徑。否則,用s到x22的最短路徑r替代q,便構成一條比p更短的路徑,這顯然是矛盾的。證明了滿足最優性原理。

從s到e的路徑必定經過第i個時刻的某個狀態,假定第i個時刻有k個狀態,那麼如果記錄了從s到第i個狀態的所有k個節點的最短路徑,最終的最短路徑必經過其中一條,這樣,在任意時刻,只要考慮非常有限的最短路即可。

3. 結合以上兩點,假定當我們從狀態i進入狀態i+1時,從s到狀態i上各個節的最短路徑已經找到,並且記錄在這些節點上,那麼在計算從起點s到第i+1狀態的某個節點xi+1的最短路徑時,只要考慮從s到前乙個狀態i所有的k個節點的最短路徑,以及從這個節點到xi+1,j的距離即可。

應用:推斷天氣等

嘗試用高中概率知識去理解一下 veterbi 演算法。內容絕對粗淺,100% 抄襲,歡迎指正。用乙個別人家的栗子來說一下。

1.題目背景:

從前有個村兒,村里的人的身體情況只有兩種可能:健康或者發燒。

月兒通過詢問村民的感覺,判斷她的病情,再假設村民只會回答正常、頭暈或冷。

有一天村里奧巴驢就去月兒那去詢問了。

第一天她告訴月兒她感覺正常。

第二天她告訴月兒感覺有點冷。

第三天她告訴月兒感覺有點頭暈。

那麼問題來了,月兒如何根據阿驢的描述的情況,推斷出這三天中阿驢的乙個身體狀態呢?

2.已知情況:

隱含的身體狀態 =

可觀察的感覺狀態 =

月兒預判的阿驢身體狀態的概率分布 =

月兒認為的阿驢身體健康狀態的轉換概率分布 =

月兒認為的在相應健康狀況條件下,阿驢的感覺的概率分布 =

阿驢連續三天的身體感覺依次是: 正常、冷、頭暈 。

3.題目:

已知如上,求:阿驢這三天的身體健康狀態變化的過程是怎麼樣的?
4.過程:

根據 viterbi 理論,後一天的狀態會依賴前一天的狀態和當前的可觀察的狀態。那麼只要根據第一天的正常狀態依次推算找出到達第三天頭暈狀態的最大的概率,就可以知道這三天的身體變化情況。

傳不了,悲劇了。。。

1.初始情況:

2.求第一天的身體情況:

計算在阿驢感覺正常的情況下最可能的身體狀態。

那麼就可以認為第一天最可能的身體狀態是:健康。

3.求第二天的身體狀況:

計算在阿驢感覺冷的情況下最可能的身體狀態。

那麼第二天有四種情況,由於第一天的發燒或者健康轉換到第二天的發燒或者健康。

那麼可以認為,第二天最可能的狀態是:健康。

4.求第三天的身體狀態:

計算在阿驢感覺頭暈的情況下最可能的身體狀態。

那麼可以認為:第三天最可能的狀態是發燒。

5.結論

根據如上計算。這樣月兒斷定,阿驢這三天身體變化的序列是:健康->健康->發燒。

這個演算法大概就是通過已知的可以觀察到的序列,和一些已知的狀態轉換之間的概率情況,通過綜合狀態之間的轉移概率和前乙個狀態的情況計算出概率最大的狀態轉換路徑,從而推斷出隱含狀態的序列的情況。

參考:誰能通俗的講解下viterbi演算法? - 知乎

維特比演算法(Viterbi)

import numpy as np state transfer np.array 0.5,0.2,0.3 0.3,0.5,0.2 0.2,0.3,0.5 狀態轉移矩陣 observe prob np.array 0.5,0.5 0.4,0.6 0.7,0.3 觀測概率矩陣 initial np....

維特比viterbi演算法

先舉個例子來解釋 已知情況 假如模型已經學出這些引數概率 隱含的身體狀態 可觀察的感覺狀態 月兒預判的阿驢身體狀態的概率分布 月兒認為的阿驢身體健康狀態的轉換概率分布 健康發燒 健康0.7 0.4發燒 0.30.6 月兒認為的在相應健康狀況條件下,阿驢的感覺的概率分布 健康發燒 正常0.5 0.1冷...

簡單理解viterbi 維特比演算法

viterbi演算法其實就是多步驟每步多選擇模型的最優選擇問題,其在每一步的所有選擇都儲存了前續所有步驟到當前步驟當前選擇的最小總代價 或者最大價值 以及當前代價的情況下前繼步驟的選擇。依次計算完所有步驟後,通過回溯的方法找到最優選擇路徑。符合這個模型的都可以用viterbi演算法解決。隱含的身體狀...