条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)
聲明:
???????? 1,本篇為個人對《2012.李航.統計學習方法.pdf》的學習總結,不得用作商用,歡迎轉載,但請注明出處(即:本帖地址)。
???????? 2,由于本人在學習初始時有很多數學知識都已忘記,所以為了弄懂其中的內容查閱了很多資料,所以里面應該會有引用其他帖子的小部分內容,如果原作者看到可以私信我,我會將您的帖子的地址付到下面。
???????? 3,如果有內容錯誤或不準確歡迎大家指正。
???????? 4,如果能幫到你,那真是太好了。
?
學習方法
???????? 條件隨機場模型實際上是定義在時序數據上的對數線性模型,其學習方法包括極大似然估計和正則化的極大似然估計。
???????? 具體的優化實現算法有改進的迭代尺度法IIS、梯度下降法以及擬牛頓法。
?改進的迭代尺度法(IIS)
???????? 已知訓練數據集,由此可知經驗概率分布
??????????????????
???????? 可以通過極大化訓練數據的對數似然函數來求模型參數。
???????? 訓練數據的對數似然函數為
??????????????????
???????? 當Pw是一個由
??????????????????
???????? 給出的條件隨機場模型時,對數似然函數為
??????????????????
???????? IIS通過迭代的方法不斷優化對數似然函數改變量的下界,達到極大化對數似然函數的目的。
???????? 假設模型的當前參數向量為w=(w1,w2, ..., wK)T,向量的增量為δ=(δ1,δ2, ..., δK)T,更新參數向量為w +δ=(w1+δ1, w2 +δ2, ..., wk +δk)T。在每步迭代過程中,IIS通過一次求解下面的11.36和11.37,得到δ=(δ1,δ2, ..., δK)T。
???????? 關于轉移特征tk的更新方程為:
??????????????????
???????? 關于狀態特征sl的更新方程為:
??????????????????
???????? 這里T(x, y)是在數據(x, y)中出現所有特征數的綜合:
??????????????????
???????? 于是算法整理如下。
?
?算法:條件隨機場模型學習的改進的迭代尺度法
???????? 輸入:特征函數t1,t2, ..., tK1,s1, s2, ..., sK2;經驗分布
???????? 輸出:參數估計值 ;模型。
???????? 過程:
??????????????????
?
?擬牛頓法
???????? 對于條件隨機場模型
??????????????????
???????? 學習的優化目標函數是
??????????????????
???????? 其梯度函數是
??????????????????
???????? 擬牛頓法的BFGS算法如下:
?
?算法:條件隨機場模型學習的BFGS算法
????????
?
預測算法
???????? 條件隨機場的預測問題是給定義條件隨機場P(Y|X)和輸入序列(觀測序列)x,求條件概率最大的輸出序列(標記序列)y*,即對觀測序列進行標注。
???????? 條件隨機場的預測算法是著名的維特比算法。
???????? 在介紹維特比算法之前,我先用通俗的語言描述下它。
???????? 假設我們遇到了這么個問題:
?????????????????? 大學時你讓室友幫你帶飯(如果你上過大學,別告訴我你別干過這事....),然后你室友問你想吃啥?你回答:“你吃啥我吃啥,不過回來時幫忙帶瓶雪碧,謝啦”。于是有趣的事就發生了:你室友給你帶回了飯和雪碧并興高采烈的說:“我去,食堂換大廚了,那個小賣部的收銀員換成了個漂亮妹子!!”然后你問他:“你去的哪個食堂和小賣部?”,他想了想回答:“你猜。”
?????????????????? 好了,你猜吧~
?????????????????? 我猜你妹啊(╯‵□′)╯︵┻━┻
???????? 嘛,先別慌掀桌,不管如何你室友幫你帶了飯,所以咱們就滿足下他那小小的惡作劇,就當做是給他跑腿的辛苦費好了。
???????? PS:假設你學校有2個小賣部和2個食堂。
???????? 于是,mission start!
???????? 首先,問他:你先去得小賣部?他回答:是的。
???????? OK,買東西的先后順序搞定了。
???????? 那就開始想:
?????????????????? 第一步:從宿舍到小賣部A和B的距離都差不多,不好判斷;
?????????????????? 第二步:從小賣部A、B到食堂1、2有四種路線(A1, A2,B1, B2),然后這四種路線中到食堂1最短的是B1,到食堂2最短的是A2;
?????????????????? 第三步:看看他給帶來的飯,嗯....這個飯我記得食堂1有賣,食堂2不知道,就當沒有吧,那就假設他去的是食堂1;
?????????????????? 第四步:既然他去的是食堂1,按照這貨的習慣,絕壁選個最近的小賣部,所以他會選擇距離食堂1最近的小賣部B;
?????????????????? 第五步:對他說:“你先去小賣部B然后去食堂1對吧”,他說:“我次奧,你咋知道的”。
????????
???????? 好了,例子舉完了,我們來看看維特比算法,其實維特比算法就是上面的過程:先從前向后推出一步步路徑的最大可能(從出發點到第一個目的地集合的每個可能性,從第一個目的地集合到第二個目的地集合的每個可能性,以此類推),然后在確定終點之后在反過來選擇前面的路徑(確定終點是食堂1了,那因為室友選擇到食堂1的路線B1的可能性大于路線A1,所以按照路線,終點的上一個目的地集合里,室友就選擇的小賣部B,以此類推),最終確定最優路徑。
?
???????? 現在,你對維特比算法是什么就有概念了吧,下面來看看其數學描述。
?
???????? 在上面的例子中你會發現:“每個路徑可能性”的確定是十分重要的。既然如此,我們就得看看條件隨機場的“每個路徑可能性”,即:條件隨機場的局部特征向量。
???????? 由
??????????????????
???????? 可得:
??????????????????
???????? 于是,條件隨機場的預測問題成為求非規范化概率最大的最優路徑問題
??????????????????
???????? 這里,路徑表示標記序列,其中
??????????????????
???????? 注意,這時只需計算非規范化概率,而不必計算概論,可以大大提高效率。
???????? 為了求解最優路徑,將11.52式寫成如下形式:
??????????????????
???????? 其中
??????????????????
???????? 就是局部特征向量。
????????
???????? 下面敘述維特比算法。
? ? ? ? ?PS:關于Viterbi算法,個人推薦看我的第二次總結:http://blog.csdn.net/xueyingxue001/article/details/52396494 。個人感覺會比下面更清晰,而且下面的例子中有一處和書中的計算結果不一致,這可能會影響你對Viterbi算法的理解。
? ? ? ? ?首先求出位置1的各個標記j=1,2,...,m的非規范化概率:
??????????????????
???????? ???????? PS:m指的位置1的數量,比如上面的例子中位置1只有2個(小賣部1和小賣部2),那m就為2。下面同理。
???????? 一般的,有遞推公式,求出到位置i的各個標記l=1,2,...,m的非規范化概率的最大值,同時記錄非規范化概率最大值的路徑:
??????????????????
???????? 直到i=n時終止。這時求得非規范化概率的最大值為:
??????????????????
???????? 最優路徑的終點
??????????????????
???????? 由此最優路徑終點返回
??????????????????
???????? 求得最優路徑
?????????????????? y*= (y1*, y2*, ..., yn*)T。
???????? 綜上所述,得到條件隨機場預測的維特比算法。
?算法:條件隨機場預測的維特比算法
????????
?
???????? 下面通過一個例子來說明維特比算法。
?例子
???????? 對于之前用過的例11.1(如下圖),用維特比算法求給定的輸入序列(觀測序列)x對應的輸出序列(標記序列)y* = (y1*, y2*, y3*);
?
?
???????? 解:
?????????????????? 下面是步驟截圖,在后面我會有講解
??????????????????
???????? 解釋:
?????????????????? 首先,例11.1實際上就是在敘述下圖:
?
???????? 第一步初始化:
?????????????????? 因為y1=1和y1=2是最初,所以就不用考慮轉移的情況了(實際上也沒有“表達從y0轉移到y1的情況”的t函數(轉移函數)),直接從狀態函數(s函數中找),發現,s1和s2分別對應y1=1和y1=2,說明y1=1和y1=2這個狀態都是存在的,而s1和s2的權值分別是1和0.5,且上面列出的s函數們和t函數們值都為1,所以y1=1和y2=1的可能性分別是1和0.5。
?????????????????? 所以,到達y1的非規范化概率最大值為:δ1(1) = 1,δ1(2) = 0.5。
???????? 第二步遞推:
?????????????????? i=2(達第二處目的地集合{y2=1, y2=2}):
?????????????????? 首先是路線(僅說明到達y2=1的情況):
??????????????????????????? 上圖可知,到達y2=1的路線有如下幾條:
??????????????????????????? ???????? 路線1:從y1=1出發 ----(經過t2)---->到達y2=1;
??????????????????????????? ???????? 路線2:從y1=2出發 ----(經過t4)---->到達y2=1;
?????????????????? 接著是狀態(僅說明到達y2=1的情況):
??????????????????????????? 根據題目可知:i=2時的狀態函數只有s2和s3,而y2=1對應的函數是s3
?????????????????? 所以到達y2=1的非規范化概率最大值為:
??????????????????????????? δ2(1) = max{1+λ2t2 + u3s3,0.5 + λ4t4 + u3s3}= 2.4 (注:這里手算一遍之后發現是2.3)
??????????????????????????? PS1:這里相對于原題我多加了個u3s3,因為用上面這種思路可以解釋通其他所有的δi,如果這種想法有問題,還請告知,不勝感激。
? ? ? ? ? ? ? ? ? ? ? ? ? ? PS2:如果按照書上的結果再加上u3s3的話,這里應該是2.4,但手算一遍之后發現是2.3,如果的確是2.4的話,還請告知,不勝感激。
? ? ? ? ? ? ? ? ? ? ? ? ? ??PS3:因為PS2,所以建議先不要管δ2(1) 是2.3還是2.4,就按照當成是2.4,這樣之后的內容才會和書中同步,才不會影響你理解Viterbi算法。
?????????????????? 非規范化概率最大值的路徑為:
??????????????????????????? ψ2(1) = 1
?????????????????? δ2(2)同理。
?????????????????? i=3也一樣(只不過對于δ3(1)中的u5s5,我認為應該是u3s3,先不說s3對應的是y3=1的情況,而且原題中根本沒有s5函數)。
???????? 第三部終止:
?????????????????? 這步就簡單了,在δ3(l)中δ3(1) = 4.3最大,所以y3中取1的可能性最大,即y3*=1。
???????? 第四步返回:
?????????????????? 然后反著推:
??????????????????????????? 從y2的哪個值到y3可能性最大呢?在第二部已經解出:ψ3(1) = 2,即y2到達y3=1的路線中權值最大的是y2=2,即y2*=2。
??????????????????????????? 同理,從y1=1到y2=2的可能性最大,即y1*=1。
???????? 最后就得到標記序列
?????????????????? y*= (y1*, y2*, y3*)= (1, 2, 1)
---------------------
作者:血影雪夢
來源:CSDN
原文:https://blog.csdn.net/xueyingxue001/article/details/51499087
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的条件随机场(CRF) - 4 - 学习方法和预测算法(维特比算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRF(条件随机场)与Viterbi(维
- 下一篇: 【机器学习】【条件随机场CRF-3】条件