一、问题回顾
模型参数的学习问题。即给定观测序列O={o1,o2,…oT},估计模型λ=(A,B,Π)的参数。这个问题的求解需要用到鲍姆-韦尔奇算法,我会在隐马尔可夫模型系列的第三篇博客中讲解,这个问题是HMM模型三个问题中最复杂的。
鲍姆-韦尔奇算法本质上就是EM算法,只不过它比EM算法出来的早,所以这里继续称它为鲍姆-韦尔奇算法。
二、监督学习算法求解模型参数
监督学习算法适用于观测序列和状态序列都已知的情况下,因为需要大量的训练数据,而人工标注训练数据的代价很高,所以该方法不是很常用。
假设训练数据为S对长度为 T 的状态序列 I = (i1, i2, … , iT)及其观测序列 O = (o1, o2, … , oT)组成的集合{(I1, O1), (I2, O3), … , (Is, Os)},其中所有可能的状态集合为Q = {q1, q2, … , qN},所有可能的观测集合为V = {v1, v2, … , vM}。
初始状态概率分布Π:
Π =[ πi ]N
取 I1 到 Is 这S个状态序列的 i1时刻的状态,组成一个长度为S的初始状态序列 C = (c11, c21, … , cs1),其中ck1表示 Ik 这个状态序列在时刻 1 时的状态。
假设C( i )表示初始状态序列 C 中 状态 qi 出现的次数,则 πi 等于:
状态转移概率矩阵A:
统计 I1 到 Is 这S个状态序列中从状态 qi 转移到状态 qj 的次数,用Aij来表示。则可得:
所以得:
A = [aij]N×N
观测生成概率矩阵B:
统计 (I1, O1) 到 (Is, Os) 这S对状态序列—观测序列中状态 qj 生成观测 vk 的次数,用Bjk来表示。则可得: