1、隐马尔可夫模型简介刘群2001-6-11X1 X2 XTO1 O2 OT假设对于一个随机事件,有一个观察值序列: O1,.,OT该事件隐含着一个状态序列: X1,.,XT假设 1:马尔可夫假设(状态构成一阶马尔可夫链) p(Xi|Xi-1X 1) = p(Xi|Xi-1)假设 2:不动性假设(状态与具体时间无关)p(Xi+1|Xi) = p(Xj+1|Xj), 对任意 i,j成立假设 3:输出独立性假设(输出仅与当前状态有关)p(O1,.,OT | X1,.,XT) = p(Ot | Xt) 定义一个隐马尔可夫模型 (HMM) 是一个五元组:(X , O, A, B, )其中:X = q1,.
2、qN: 状态的有限集合O = v1,.,vM: 观察值的有限集合A = aij, aij = p(Xt+1 = qj |Xt = qi): 转移概率B = bik, bik = p(Ot = vk | Xt = qi): 输出概率 = i, i = p(X1 = qi): 初始状态分布问题令 = A,B, 为给定 HMM的参数,令 = O1,.,OT 为观察值序列,隐马尔可夫模型( HMM) 的三个基本问题: w 评估问题:对于给定模型,求某个观察值序列的概率 p(|) ;w 解码问题:对于给定模型和观察值序列,求可能性最大的状态序列;w 学习问题:对于给定的一个观察值序列,调整参数 , 使得
3、观察值出现的概率 p(|)最大。算法w 评估问题:向前算法n 定义向前变量n 采用动态规划算法,复杂度 O(N2T)w 解码问题:韦特比( Viterbi) 算法n 采用动态规划算法,复杂度 O(N2T)w 学习问题:向前向后算法EM算法的一个特例,带隐变量的最大似然估计算法:向前算法(一)定义前向变量为 HMM在时间 t输出序列 O1 Ot,并且位于状态 Si的概率:算法:向前算法(二)迭代公式为:结果为:变化w 连续输出模型输出矩阵变为某种概率分布,如高斯分布w 多阶转移矩阵例子:病情转化w 假设:某一时刻只有一种疾病,且只依赖于上一时刻疾病一种疾病只有一种症状,且只依赖于当时的疾病w 症状 (观察值 ):发烧,咳嗽,咽喉肿痛,流涕w 疾病 (状态值 ):感冒,肺炎,扁桃体炎w 转移概率:从一种疾病转变到另一种疾病的概率w 输出概率:某一疾病呈现出某一症状的概率w 初始分布:初始疾病的概率w 解码问题:某人症状为:咳嗽 咽喉痛 流涕 发烧请问:其疾病转化的最大可能性如何?例子:词性标注w 问题:已知单词序列 w1w2 wn, 求词性序列 c1c2 cnw HMM模型:n 将词性为理解为状态n 将单词为理解为输出值w 训练:统计词性转移矩阵 aij和词性到单词的输出矩阵 bikw 求解: Viterbi算法