隐马尔可夫模型(HMM)
设 表示隐状态序列, 表示观测状态序列, 表示观测状态集, 表示隐状态集合。定义 表示隐状态转移概率矩阵, 表示发射矩阵(观测状态生成概率矩阵),隐状态初始化概率为 ,以上的参数统一记为 。
在 HMM 中,有两个基本假设:
齐次 一阶Markov 假设(未来只依赖于当前):
观测独立假设(当前结果只依赖于当前隐状态):
HMM 要解决三个问题:
- Evaluation:,Forward-Backward 算法
- Learning:,EM 算法(Baum-Welch)
- Decoding:,Viterbi 算法
- 预测问题:
- 滤波问题:
Evaluation问题
即要求某个观测序列出现的概率:
后面均省略参数 。
首先:
根据齐次 Markov 假设:
递推下去,所以:
又由于:
这个式子可由HMM的概率图得到(观测独立假设)。
于是由全概率公式,穷举隐状态做求和即可得到观测序列 的联合分布:
因每个隐状态都有 种可能,于是如果直接穷举计算联合分布复杂度为 。所以我们需要更高效的算法来计算观测序列的联合分布。
Forward Algorithm
记 ,其含义是到时刻 隐状态为 的条件下观测到序列 的概率, 所以,。于是遍历隐状态空间就得到了观测序列 的概率:
对 ,分出一个 ,对其利用全概率公式,则:
利用观测独立假设和齐次马尔科夫假设:
上式中 表示时刻 观测到状态 的概率, 表示观测到 后隐状态转移到 的概率,由于时刻 观测到 可由 种可能的隐状态得到,所以做求和,再乘 表示 时刻观测到 的概率。
这样,由初始化概率,根据递推公式求得各个 ,最后由 ,就可以得到观测序列的联合概率分布了。时间复杂度为 。
Forward Algorithm
(1)初始化:
,
(2)递归计算:
,
(3)终止:
初始态到 时状态 = (初始态到 时状态) (状态 转移到 状态)
Backward Algorithm
Forward算法是从前往后的,当然也可以从后往前计算,定义 ,可以这样来理解,上式表示已知第 次的隐状态为 ,从 时刻到 时刻观测到序列 的概率。于是观测序列联合分布可表示为:
对于这个 ,我们只需从后向前导出 的递推式即可:
这样,让初始值 ,因为最后一次的隐状态为 ,时刻 之后我们不再关注,它转移到任意状态的概率和是归一的,所以 。利用上述递推公式,于是后向地得到了每一项,进而求得联合概率。
Backward Algorithm
(1)初始化:
,
(2)递归计算:
,
(3)终止:
时状态到终态=(时状态到终态)(时状态转移到时状态)
Learning问题
为了学习得到参数的最优值,在 MLE 中:
我们采用 EM 算法(在这里也叫 Baum Welch 算法),用上标表示迭代:
其中, 是观测变量, 是隐变量序列。于是:
这里利用了 和 无关。将 Evaluation 中的式子代入:
对 :
上面的式子中,对 求和可以将这些参数消掉:
上面的式子还有对 的约束 。 Lagrange 函数:
于是:
对上式求和:
所以:
Decoding问题
Decoding 问题表述为:
即找到一个隐状态序列,其概率最大,这个序列其实就是要在参数空间中找一个路径,可以采用动态规划的思想。
定义:
于是:
这个式子就是从上一步到下一步的概率再求最大值。记这个路径为:
动态规划求解即可。