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