美文网首页
李航-第10章隐马尔可夫模型

李航-第10章隐马尔可夫模型

作者: 瘦长的丰一禾 | 来源:发表于2018-06-23 15:58 被阅读174次

    隐马儿可夫模型:HMM,hidden Markov model,是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。

    隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再有各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列。每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列。


    隐马尔可夫模型观测序列的生成.png
    HMM实例和包括的三个基本问题

    隐马尔可夫模型由初始状态概率向量π,状态转移概率矩阵A和观测概率矩阵B决定。π和A决定状态序列,B决定观测序列,因此隐马尔科夫模型λ可以用三元符号表示,即λ=(A,B,π)。A,B和π称为隐马尔可夫的三要素。

    关于例10.1 盒子和球模型
    其中初始概率分布表示4个盒子,随机选取的时候每个盒子被选中的概率都是0.25。

    隐马尔可夫模型的三个基本问题
    (1)概率计算问题:前向-后向算法—>动态规划
    给定模型λ=(A,B,π)和观测序列O={o1,02,…or},计算模型λ下观测序列O出现的概率P(O|λ).
    (2)学习问题:Baum-Welch算法(状态未知)—>EM
    已知观测序列O={o1,02,…or},估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(O|λ)最大
    (3)预测问题:Viterbi算法—>动态规划
    解码问题:已知模型λ=(A,B,π)和观测序列O={o1,02,…or},求给定观测序列条件概率P(I|O,λ)最大的状态序列I。

    用前向-后向算法求HMM观测序列的概率

    利用直接计算法,计算量很大,有效算法是:前向-后向算法。
    1、前向概率和观测序列概率的前向算法


    前向概率和观测序列概率的前向算法.png

    在例子10.2中,利用前向算法计算P(O|λ)中,计算初值里面,0.1,0.16,0.28分别0.5×0.2,0.4×0.4,0.7×0.4的得来的。

    In [1]: import numpy as np
    In [4]: def forward(obs_seq):
       ...:     #前向算法
       ...:     N = A.shape[0]
       ...:     T = len(obs_seq)
       ...:     #F保存前向概率矩阵
       ...:     F = np.zeros((N,T))
       ...:     F[:,0] = pi * B[:,obs_seq[0]]
       ...:     
       ...:     for t in range(1,T):
       ...:         for n in range(N):
       ...:             F[n,t] = np.dot(F[:,t-1],(A[:,n])) * B[n, obs_seq[t]]
       ...:     return F
    
    
    

    2、后向概率和观测序列概率的后向算法


    后向概率和观测序列概率的后向算法
    In [1]: import numpy as np
    In [6]: def backward(obs_seq):
       ...:     #后向算法
       ...:     N = A.shape[0]
       ...:     T = len(obs_seq)
       ...:     #X保存后向概率矩阵
       ...:     X = np.zeros((N,T))
       ...:     X[:,-1:] = 1
       ...:     for t in reversed(range(T-1)):
       ...:         for n in range(N):
       ...:             X[n,t] = np.sum(X[:,t+1] * A[n,:] * B[:,obs_seq[t+1]])
       ...:     return X
    
    
    鲍姆-韦尔奇算法原理

    鲍姆-韦尔奇(Baum-Welch)算法属于非监督学习算法,也是EM算法。属于学习算法。


    Baum-Welch算法.png
    维特比算法原理

    维特比算法实际是用动态规划解隐马尔可夫模型预测问题,即用动态规划求概率最大路径。


    维特比算法.png

    参考链接:
    王小草【机器学习】笔记--隐马尔可夫模型HMM
    机器学习 基本概念】从朴素贝叶斯到维特比算法:详解隐马尔科夫模型
    隐马尔科夫模型总结
    隐马尔可夫链之基本原理
    隐马尔科夫模型(HMM)一基本模型与三个基本问题
    隐马尔科夫模型(HMM)及其Python实现
    隐马尔科夫模型 介绍 HMM python代码
    HMM.py
    隐马尔科夫模型

    相关文章

      网友评论

          本文标题:李航-第10章隐马尔可夫模型

          本文链接:https://www.haomeiwen.com/subject/hapxyftx.html