昨天在看的時候, 才發現, HMM參數求解給忘了 狀態轉移矩陣A的求解, 我以為我做了...好氣哦, 不多比比, 直接來.
A 是狀態轉移矩陣, 表示在 已知前一個狀態下, 求解后一個概率(寫出來就是一個條件概率)
\(p(z_{k+1} =j | z_k = i) = \frac {p(z_{k+1}=j, z_k = i)}{p(z_k = i)}\)
最基礎的條件概率公式哈
分母 \(p(z_k = 1)\) 可以通過前面的 F/B 算法計算出來, 所以問題在於如何計算 \(p(z_{k+1}, z_k=i)\) 這個聯合概率
估計 A-理論
由上, 我們的目標是如何計算 \(p(z_{k+1}, z_k = i | x)\) , 在觀測值已知的情況下.
由 \(z_k 與 x_k\) 是一 一對應的關系, 通過貝葉斯公式可以得到:
\(p(z_k=i , z_{k+1}=j| x) 與 p( z_k =i, z_{k_1}=j, x) 是正比關系\)
跟之前同樣的套路, 對 x 進行區間拆分, 即:
\(=p(z_k, z_{k+1}, x_{1:k}, x_{k+1}, x_{k+2:n})\) 換個變量順序哈, 為了把 \(z_k, x_{1:k}\) 看為一個整體, 求解技巧是為了最終形式簡潔
\(=p(z_k, x_{1:k}, z_{k+1}, x_{k+1}, x_{k+2:n})\) 展開寫:
\(=p(z_k, x_{1:k}) \ p(z_{k+1}|z_k, x_{1:k}) \ p(x_{k+1}|z_k, x_{1:k}, z_{k+1}) \ p(x_{k+2:n}|z_k, x_{1:k},z_{k+1}, x_{k+1} )\)
同樣根據 D-separation性質 可將與條件概率無關的獨立變量進行省略, 化簡得到:
\(p(z_k, x_{1:k}) \ p(z_{k+1}|z_k) \ p(x_{k+1}|z_{k+1}) \ p(x_{k+2:n}|z_{k+1})\)
這幾個項, 不就剛好對應: Forward, 狀態轉移矩陣, 發射概率矩陣, Backwark 呀.
也就是可以算出所有的:
\(p(z_k=i , z_{k+1}=1| x) 正比於 p( z_k =i, z_{k_1}=1, x)\)
\(p(z_k=i , z_{k+1}=2| x) 正比於 p( z_k =i, z_{k_1}=2, x)\)
\(p(z_k=i , z_{k+1}=3| x) 正比於 p( z_k =i, z_{k_1}=3, x)\)
....
再進行一個歸一化的操作, 則就算出了 \(p(z_k=i, z_{k+1}=j|x)\) 的概率了, (用來估計A要用到的)
估計A-栗子
考慮 Z, 假設有3個樣本, 通過之前的 F/B 算法, 可以得到每個z_i 的概率分布.
樣本1
z1 | z2 | z3 | z4 | z5 | z6 |
---|---|---|---|---|---|
0.6 | 0.5 | 0.6 | 0.7 | 0.6 | 0.2 |
0.3 | 0.3 | 0.2 | 0.2 | 0.1 | 0.3 |
0.1 | 0.2 | 0.2 | 0.1 | 0.3 | 0.5 |
樣本2
z1 | z2 | z3 | z4 | z5 |
---|---|---|---|---|
0.5 | 0.4 | 0.3 | 0.6 | 0.3 |
0.3 | 0.4 | 0.5 | 0.3 | 0.1 |
0.2 | 0.2 | 0.2 | 0.1 | 0.6 |
樣本3
z1 | z2 | z3 | z4 |
---|---|---|---|
0.5 | 0.1 | 0.3 | 0.5 |
0.3 | 0.2 | 0.3 | 0.1 |
0.2 | 0.7 | 0.3 | 0.4 |
我們要計算的是 \(p(z_k=i, z_{k+1}=j | x)\) 這個概率. 根據上面的數據, 方法就是前面的理論推導的式子, 過程跟 HMM的第2篇, 已知Z 來計算是差不多的過程. 這里就不展開了.
最后呢就計算出來狀態轉移矩陣 A.
用到的EM算法
隨機初始化 參數 \(\theta=(\pi, A, B)\)
while not 收斂:
E-step: (核心是為了計算 p(z|x)
根據已知的 \(\theta=(\pi, A, B)\) 計算
\(p(z_k^{i} | x^i), i = 1, 2, ...n\) // 用 F/B 算法求解
\(p(z_{k}^i, z_{k+1}^i | x^i), i = 1, 2...n\)
M-step:
參數更新
\(\pi, A, B\)
不搞了 HMM 就先搞到這, 我感覺之前我還挺清晰的, 寫着寫着, 這些概率公式, 總感覺留有bug, 真心覺得, 概率模型賊不好理解, 一不小心就自己個就弄混了, 什么條件概率, 全概率, 貝葉斯, 條件獨立 , 序列, 值概率....自己都寫崩潰了, 趕緊撤退, 戰略性放棄一波, 再惡補一波概率論先.