(补) 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算法
随机初始化 参数 \(\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, 真心觉得, 概率模型贼不好理解, 一不小心就自己个就弄混了, 什么条件概率, 全概率, 贝叶斯, 条件独立 , 序列, 值概率....自己都写崩溃了, 赶紧撤退, 战略性放弃一波, 再恶补一波概率论先.