【概述】
对于隐马尔可夫模型的学习问题,即:已知观测序列 $O=(o_1,o_2,\cdots,o_T)$,估计模型 $\lambda(A,B,\pi)$ 的参数,使得在该模型下观测序列概率 $P(O|\lambda)$ 最大,该问题本质上是无监督学习中的概率估计问题
根据训练数据包括观测序列和对应的状态序列,还是只有观测序列,可以分别由极大似然估计和 EM 算法来实现
- 极大似然估计法:监督学习算法,需要使用标注的训练数据,而人工标注代价很高,往往不使用该方法
- Baum-Welch 算法:EM 算法在隐马尔可夫模型学习中的具体实现,非监督学习算法
【极大似然估计法】
假设已给训练数据包含 $S$ 个长度相同的观测序列和对应的状态序列 $\{(O_1,I_1),(O_2,I_2),\cdots,(O_S,I_S)\}$,那么可利用极大似然估计来估计隐马尔可夫模型的参数
设样本中 $t$ 时刻处于状态 $i$ 于 $t+1$ 时刻转移到状态 $j$ 的频数为 ,那么状态转移 $a_{ij}$ 的估计为:
设样本中状态为 $j$ 并观测为 $k$ 的频数为 ,那么状态为 $j$ 观测为 $k$ 的概率 $b_j(k)$ 的估计为:
设样本中初始状态为 $q_i$ 的频率为 ,那么初始状态概率 $\pi_i$ 的估计为:
【Baum-Welch 算法】
基本思想
假定给定训练数据只包含 $S$ 个长度为 $T$ 的观测序列 $\{O_1,O_2,\cdots,O_S\}$,目标是学习隐马尔可夫模型 $\lambda=(A,B,\pi)$ 的参数
将观测序列数据看作观测数据 $O$,状态序列数据看作不可观测的隐数据 $I$,那么此时隐马尔可夫模型实际上是一含有隐变量的概率模型,即:
其参数可使用 EM 算法来估计
算法导出
对数似然函数的确定
将所有的观测数据写为 $O=(o_1,o_2,\cdots,o_T)$,所有的隐数据写为 $I=(i_1,i_2,\cdots,i_T)$,完全数据是 $(O,I)=(o_1,o_2,\cdots,o_T,i_1,i_2,\cdots,i_T)$
记 $\lambda$ 为要极大化的隐马尔可夫模型参数,那么 $(O,I)$ 的对数似然函数为:
E 步
记 $\overline{\lambda}$ 为隐马尔可夫模型参数的当前估计值,那么对 Q 函数 $Q(\lambda,\overline{\lambda})$,有:
由于观测序列 $O$ 与状态序列 $I$ 同时出现的联合概率为:
故 Q 函数可写为:
式中,求和均是对所有数据的序列总长度 $T$ 进行的
M 步
根据 $E$ 步,可以得出要极大化的参数在上式中单独的出现在 $3$ 个项中,因此仅需对各项分别极大化
1)对于第一项 $\sum\limits_{I} \log \pi_{i_1} P(O,I|\overline{\lambda})$,有:
可以发现,初始概率分布 $\pi_i$ 满足约束条件 $\sum\limits_{i=1}^N \pi_i = 1$,故利用拉格朗日乘子法,写出拉格朗日函数:
对其求偏导并令结果为 $0$,即:
可得:
对 $i$ 求和,有:
带回求偏导的项,可得:
2)对于第二项 $\sum\limits_{I} \bigg( \sum\limits_{t=1}^{T-1} \log a_{i_t,i_{t+1}} \bigg) P(O,I|\overline{\lambda})$,有:
类似第一项,应用约束条件 $\sum\limits_{i=1}^N a_{ij} = 1$ 的拉格朗日乘子法可求出:
3)对于第三项 $\sum\limits_I \bigg( \sum\limits_{t=1}^T \log b_{i_t}(o_t) \bigg) P(O,I|\overline{\lambda})$,有:
同样利用约束条件 $\sum\limits_{i=1}^N b_{j}(k) = 1$ 的拉格朗日法可求出:
在令该项的偏导为零时,只有在 $o_t=v_k$ 时,$b_j(o_t)$ 对 $b_j(k)$ 的偏导数才不为 $0$,故用 $I(o_t=v_k)$ 来表示
参数估计公式
将上述的三项的各概率分别用 $\gamma_t(i),\xi_t(i,j)$ 表示,那么可将相应的公式写为:
算法流程
输入:观测数据 $O=(o_1,o_2,\cdots,o_T)$
输出:隐马尔可夫模型参数 $A,B,\pi$
参数:迭代参数 $N$
算法步骤:
Step 1:算法初始化,对 $n=0$,选取 $a_{ij}^{(0)},b_j(k)^{(0)},\pi_i^{(0)}$,得到模型 $\lambda^{(0)}=(A^{(0)},B^{(0)},\pi^{(0)})$
Step 2:对 $n=1,2,\cdots,N-1$ 递推
其中,右端各值有观测序列 $O=(o_1,o_2,\cdots,o_T)$ 和模型 $\lambda^{(n)}=(A^{(n)},B^{(n)},\pi^{(n)})$ 计算
Step 3:得到模型参数