隐马尔可夫模型
记住一下几个要点
- 3个基本组成元素
- 2个基本假设
- 3个基本问题
1 3个基本组成元素
隐马尔科夫模型可以用三元组表示
同时,一般用 $I$ 表示隐藏序列,$O$ 表示观测序列 ,用 $Q$ 表示可能的状态集合,用 $V$ 表示可能的观测集合
,$M$ 为可能的状态数,$N$ 为可能的观测数。则可以确定状态转移概率矩阵大小为 $M$ 阶的方阵,观测概率矩阵大小为 $M * N$ 的矩阵。
总结:一条隐藏的马尔可夫链随机生成了一个不可观测的状态序列,然后每个状态又对应生成了一个观测结果(状态—>观测, 观测概率矩阵B),这些观测结果按照时序排列形成了观测序列。
1.1 初始状态概率序列($\pi$)
$\pi_i$表示初始时刻处于状态$q_i$的概率。
1.2 状态转移概率矩阵($A$)
$a_{ij}$表示时刻 $t$ 处于状态$q_i$,在时刻$t+1$转移到状态 $q_j$的概率。这也意味着$A$中每行元素和为$1$。
1.3 观测概率矩阵($B$)
不同状态生成不同观测结果的概率。
$b_{ik}$表示时刻$t$处于状态$q_i$生成观测结果$v_k$的概率(即每一行表示一个状态,每一列表示一个观测结果)。
2 2个基本假设
2.1 齐次性,当前状态只和前一个状态相关
任意时刻 $t$ 的状态只依赖前一时刻的状态。与其他时刻的观测与状态无关,也与 $t$ 时刻无关。
2.2 观测独立性假设
假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关。
3 3个基本问题
3.1 概率计算
问题描述:
在给定模型参数 $\lambda$ 的情况下,观测序列 $O$ 出现的概率是多少?即 $P(O|\lambda)$ 概率值为多少?
如何解决
1.暴力计算,算法实现的时间复杂度太高,理论可行,实际不采用!
2.前向算法,利用动态规划,将时间复杂度降到O($n^2$)
3.后向算法,基本同前向算法。
3.2 预测问题(解码问题)
问题描述
给定信息:
模型:$\lambda = \{A,B,\pi\}$
观测序列:$O = \{o_1,o_2,…,o_T\}$
求解:求使得$P(O|S)$最大的状态序列$S$.
如何解决
维特比算法(动态规划—最大概率路径)。其实简单来说,要找到一条从起点到终点的最优路径,最大概率路径因为满足最优子结构和重叠子问题,因此可以从采用动态规划来解。
$\sigma_t(i)$ 表示 t
时刻状态为 i
, 计算如下:
$a_{ji}$表示由第j
个状态向第i
个状态转移的概率,$b_i(o_{t+1})$表示由第i
个状态生成t+1
时序时的观测的概率。递推计算,from t =1 to t = T
。然后输出状态序列。
3.3 学习问题(参数估计)
问题描述
给定信息:
观测序列: $O = \{o_1,o_2,…,o_T\}$
求解:模型$\lambda$ 参数,
如何求解
EM算法
4 有啥用?
4.1 中文分词
我们假设每个词都有Begin、Medium、End、S分别代表开头、中间、结尾、独立的词等隐状态,所给的文本为观测态,我们要做的就是训练(语料库)一个HMM模型,在给定文本的情况下,输出隐含态,也就是分词结果。
4.2 语音识别
参考书目
统计学习方法(第2版),李航。