【机器学习】用摸鱼学来解释隐马尔可夫模型(HMM)
嘗試用摸魚學來解釋隱馬爾可夫模型
假如小明一周工作六天,每天工作狀態都不相同,比如有活少、活多、心情好、心情差和雙倍工資5種狀態,不同工作狀態下工作效率也不相同,活少和心情差的時候摸魚時間多,活多、心情好和雙倍工資的時候摸魚時間少。
從小明的工作日常中可以提煉出5種狀態和2種觀測和觀測6天。
狀態:活少、活多、心情好、心情不好、雙倍工資
觀測:摸魚、認真上班
將涉及到的可能情況展開如下圖所示。
每一行對應相同狀態,每一列對應每一天。其中紅色塊在矩形中的占比表示一天中摸魚的程度,也就是摸魚的觀測概率。藍色箭頭表示不同狀態間的轉移概率。那么狀態序列總共有5^6種。
假設天數為T(列數),狀態數為N(行數)。
問題1(概率計算問題):假如觀察小明的六天,得到的觀測序列為:摸魚 -> 認真工作 -> 摸魚 -> 認真工作 -> 摸魚 -> 認真工作,并且已知藍色箭頭的狀態轉移概率和摸魚的觀測概率,請問該觀測序列的概率為多少?
從上圖就可以知道只要求出所有能夠得到該觀測序列的狀態序列概率之和就行了??偣灿蠳^T種狀態序列(窮舉所有藍色箭頭路徑),并且每種狀態序列需要T個觀測概率相乘(每個狀態一個觀測概率),所以總的計算復雜度為O(N^T)。這種暴力求解的方法計算復雜度太高了,可以用前向-后向算法來減少計算量。
以前向算法為例(后向算法可以認為是狀態序列的反轉,計算方法相同),簡單來說,就是利用分治和動態規劃的思想,把6天拆分成5個重復單元,然后先計算出第一個重復單元紅色虛線框中每個狀態的觀測概率,并且保存下來當作下一個重復單元的初始狀態,循環5次就得了最終的觀測概率。每個重復單元總共有N^2種狀態序列,并且每種狀態序列需要2個觀測概率相乘,所以一個重復單元的計算復雜度為O(N^2),那么總的計算復雜度為O(TN^2)。比起暴力求解觀測概率,復雜度大大降低。
問題2(學習問題):已知小明加上同事,總共有10人的觀測序列,請問如何估計不同狀態之間的轉移概率和摸魚的觀測概率呢?
如圖所示,紅色塊和藍色箭頭是需要通過10人的觀測序列估計出來的。這里需要用到Baum-Welch算法,簡單來說,就是通過EM算法構建出帶隱函數的優化函數Q,然后用拉格朗日函數求解。
問題3(預測問題):假如觀察小明的六天,得到的觀測序列為:摸魚 -> 認真工作 -> 摸魚 -> 認真工作 -> 摸魚 -> 認真工作,并且已知藍色箭頭的狀態轉移概率和摸魚的觀測概率,請問該觀測序列最有可能的狀態序列是什么?
這個問題跟問題1很相似,不同的地方在于問題1是求該觀測序列的所有狀態序列概率之和,而問題3求的是該觀測序列的所有狀態序列中最有可能出現的狀態序列。
所以求解方式和問題1類似,只不過需要從所有可能狀態序列中找出概率最大的狀態序列。上圖綠色路徑可能就是概率最大的狀態序列。
可見隱馬爾可夫模型簡直太有用了!老板可以通過公司的規章制度來引導員工的身心健康!或者根據員工的摸魚情況來預測員工的身心健康,從而更好的優化公司的規章制度!
總結
以上是生活随笔為你收集整理的【机器学习】用摸鱼学来解释隐马尔可夫模型(HMM)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 360浏览器怎么关闭全屏看大图提示条
- 下一篇: JEECG分页条数自定义