(补) HMM 求解参数-状态转移矩阵 A
Posted chenjieyouge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(补) HMM 求解参数-状态转移矩阵 A相关的知识,希望对你有一定的参考价值。
昨天在看的时候, 才发现, 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算法
随机初始化 参数 ( heta=(pi, A, B))
while not 收敛:
? E-step: (核心是为了计算 p(z|x)
? 根据已知的 ( heta=(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, 真心觉得, 概率模型贼不好理解, 一不小心就自己个就弄混了, 什么条件概率, 全概率, 贝叶斯, 条件独立 , 序列, 值概率....自己都写崩溃了, 赶紧撤退, 战略性放弃一波, 再恶补一波概率论先.
以上是关于(补) HMM 求解参数-状态转移矩阵 A的主要内容,如果未能解决你的问题,请参考以下文章
05 隐马尔可夫模型 - 案例一 - hmmlearn框架说明