如果你跟夕小瑶恋爱了...(下)
AB派
在上一篇文章中,你成功的將“挽回夕小瑤”的任務卡進了隱馬爾可夫模型(HMM)中。那么我們來規范化的整理一下已經有的信息和需要計算得到的信息。
?
還記得這兩個圖嘛?這就是我們建立好的模型。
?
(隱狀態的轉移圖)
(每個隱狀態ωi都有概率發出5種可以觀測到的信號)
?
對于第一張圖,這么多的參數看起來也蠻亂的,那就將所有的狀態轉移概率aij存儲到一個矩陣A中:
?
?
矩陣A中的每個元素aij就代表當前狀態為ωi時,下一狀態為ωj的概率(即狀態ωi到狀態ωj的轉移概率)。
?
對于第二張圖,描述的是當(隱)狀態為ωj時,發出信號vk的概率。所以用bjk來表示ωj發出信號vk的概率。將bjk存儲到矩陣B中:
?
?
好~A矩陣和B矩陣顯然就是我們需要計算出的模型參數啦。但是參數中僅僅是A和B就夠了嗎?
想一下,雖然A可以描述從某個狀態轉移到某個狀態的概率,但是每個狀態序列總要有一個開頭呀~這個開頭是什么樣子的,在A矩陣和B矩陣中都沒有描述。
所以模型還有一個描述初始狀態的參數,也就是描述每個隱狀態ωi作為初始狀態的概率,記為πi。也就是向量π:
?
?
整理完畢~A、B、π就是我們全部要計算出的模型參數。
開始訓練!
?
而我們已經有了夕小瑤好多天的隱狀態序列和對應的觀測序列的數據了,那么我們如何用它們來訓練出模型的參數呢。
?
其實這樣就很簡單很簡單啦,直接搬出似然函數,找出使得似然函數最大的參數值嘛,也就是最大化似然函數。
顧名思義,“然”是這樣的意思,所以似然函數就是用來描述當前的模型參數取值的合理性,間接反映當前模型參數對手中數據集的解釋程度,因此使得似然函數最大,意思就是使得模型參數取的最合理,使得手中數據集在模型的解釋下變得合理。
?
你陪小夕度過了300天。因此你記錄下了300段隱狀態序列,記為
Q=q1 q2 q3 ... qT(其實qi就是之前表示的ωi),其中T=6(每天經歷6個時間點,化妝-吃飯-聊天-自習-上課-要抱抱)。
同時對應著300段觀測序列,記為:
O=O1 O2 O3 ... OT,同樣T=6。
然后根據極大似然估計的思想,直接用樣本集估計出HMM的各個參數啦。
?
所以HMM的各個參數應該這樣估計:
?
這樣我們就得到了所有的模型參數(向量π、矩陣A、矩陣B)。
?
看,由此,我們輕而易舉的把夕小瑤這個隱馬爾可夫模型建立完成了。
?
有了這個模型,我們就完全看透夕小瑤了!所以,下面開始得到本任務的最終目標——預測夕小瑤在耍小脾氣當天的情緒狀態序列(隱狀態序列)!
看透你了!
?
量化一下我們要做的事情:在給定HMM模型(即已知全部參數的HMM模型,記為μ)和觀測序列O情況下,求最大概率的(隱)狀態序列:
?
?
怎么計算呢?Viterbi算法!
?
這個算法有點繞,直接貼出來,如果直接看看不懂的話可以看后面小夕的解釋哦。
?
這個算法的思想就是設立一個小人δ(讀作delta),這個小人從時刻1,一直走到時刻T。
這個小人的意義就是記錄下自己在每個時間點t的每個隱狀態j的概率(注意不是從全局的觀測序列計算出的概率,是他自己從t=1的時刻一步步的觀察每個時刻的觀測值所得到的那一時刻的累積概率)
?
算法的第一步:初始化這個小人,利用已知的模型參數πi和bi(O1)(即狀態i下,發出觀測值O1的概率,其中O1為t=1時刻的觀測值)得到t=1時刻每個隱狀態i的δ值。
?
第二步:這個小人在每個時刻t都會將每個隱狀態里呆一會。在每個隱狀態j里,它都會抬頭看看此刻的觀測值Ot,并分別假設自己處于前一時刻t-1的每個隱狀態i中,并用前一時刻t-1假設的隱狀態的累計概率值乘以前一時刻假設的隱狀態轉移到當前時刻的當前隱狀態的轉移概率,然后算出使得當前時刻的當前隱狀態的總概率最大化的前一時刻的隱狀態,這個最優隱狀態記為m吧。這個前一時刻的最優隱狀態的累積概率δt-1(m)乘以前一時刻m狀態轉移到當前時刻的當前j狀態的轉移概率,再乘以當前時刻t的當前狀態j發出觀測值Ot的概率,即為δt(j)。
?
第三步:小人δ走完最后一個時刻T的最后一個隱狀態后,就可以從最后時刻的全部隱狀態中挑出最后時刻,也就是全局的最大累積概率δT啦,記下這個最大概率對應的隱狀態QT
?
第四部:一步步的回溯呀,記下T時刻走到最優隱狀態QT的前一時刻的最優隱狀態(回顧一下第二步),得到前一時刻最優隱狀態QT-1。然后同樣,再往前回溯得到QT-2,一直回溯到Q1!然后Q1Q2Q3..QT就是全局最優隱狀態序列啦!也就是夕小瑤耍小脾氣時的情緒狀態序列!
在你猜出后,夕小瑤瞬間(被自己)感動哭了...(內心os:竟然花了這么大的功夫教你怎么猜我的心思...還不如直接告訴你呢嚶嚶嚶...
總結
以上是生活随笔為你收集整理的如果你跟夕小瑶恋爱了...(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sysbench在美团点评中的应用
- 下一篇: 浅入深出被人看扁的逻辑回归!