抽象層面來看Viterbi
t 時刻的狀態(tài)會依賴于 t-1 時刻 的狀態(tài)和 t 時刻的可觀察的狀態(tài)。
上述中,t 時刻的狀態(tài) 和 t-1時刻的狀態(tài)稱之為隱狀態(tài),也是需要求出的狀態(tài),可觀察的狀態(tài)為顯狀態(tài)
Viterbi算法解決的問題是:通過顯狀態(tài)序列 ** 求出 最有可能的隱狀態(tài)序列**
顯狀態(tài):有限個 隱狀態(tài):有限個 且 較少
怎么求 ? 概率
當前 已知 t-1 t t+1時刻 的觀察序列 以及 觀察序列到某個隱狀態(tài)的概率 以及隱狀態(tài)之間的轉(zhuǎn)移概率 ,可以推斷出 t-1 t t+1 時刻的 隱狀態(tài)序列
在 t-1 時刻隱狀態(tài)事件發(fā)生, 與 t 時刻 隱狀態(tài)事件同時發(fā)生的概率= t-1時刻該隱狀態(tài)事件發(fā)生的概率 * t-1時刻該隱狀態(tài)事件 轉(zhuǎn)移到 t時刻事件 的 轉(zhuǎn)移概率 * t 時刻隱狀態(tài)發(fā)生時出現(xiàn)當前顯狀態(tài)的條件概率?!?】
概率最大時即為此顯狀態(tài)對應的最有可能的隱狀態(tài)。依次計算,可得全部時刻隱狀態(tài)序列
舉例
以經(jīng)典的天氣事件為例,通過某個人的行為表現(xiàn)推測當天的天氣(當然反過來也行),
取 t=2,第 1、 2、 3 天的天氣的狀態(tài)(晴,雨)為隱狀態(tài),我個人的行為(散步,購物,打掃)為顯狀態(tài)。定義
(1) 某天天氣晴天或者雨天的概率,比如為0.6 0.4 稱為 初始概率
(2) t-1 天天氣狀態(tài)轉(zhuǎn)移到 t 天天氣狀態(tài)的轉(zhuǎn)移概率,假如第一天下雨,第二天下雨的概率為0.7 第二天天晴概率為 0.3 稱為 轉(zhuǎn)移概率
(3) 某種天氣狀態(tài)出現(xiàn)時,我個人行為發(fā)生的條件概率,即 下雨情況我可能干嘛的概率,如散步0.1 購物 0.4 打掃 0.5 稱為 發(fā)射概率
假設(shè)連續(xù)三天,我的行為分別為 散步 購物 打掃 那 這三天的天氣最有可能是什么樣的?
根據(jù)公式 【1】,依次計算第一天、第二天、第三天的天氣發(fā)生概率,取最大值的序列為最后的結(jié)果。 如此處計算的結(jié)果為 晴-> 雨-> 雨。 事實上一定是這樣嗎?當然不是,以上概率的設(shè)定,計算的結(jié)果都是很粗糙的,只是表明算法的作用,效果跟具體的數(shù)據(jù)有關(guān)系。
應用
那么,這種求隱狀態(tài)序列的算法,在自然語言處理有什么作用呢? 可解決很多序列標注問題
比如,詞性標注,給定詞的序列,根據(jù)算法計算最有可能的詞性序列
比如,命名實體識別,給定詞的序列,根據(jù)算法計算最有可能的 實體序列
比如,自動添加標點符號,給定詞的序列,詞性的序列,根據(jù)算法計算最有可能的標點序列
公眾號:netrookie
原文:http://netrookie.cn/viterbi/