美文网首页
HMM之前向算法

HMM之前向算法

作者: colynhn | 来源:发表于2019-08-21 23:20 被阅读0次

HMM基于两大假设:

(1)齐次马尔科夫假设:存在于状态之间,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前一时刻t-1的状态,与其他无关。

(2)观测独立性假设:存在于发射概率中,即t时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他时刻的无关。

HMM的三大问题:

HMM的三元符号表示:

lambda = (A, B, Pi)

其中: A为转移概率,即状态i转移到状态j的概率;B为观测概率或者发射概率;Pi为初始状态概率

另外: 在代码中会提到O,为观测序列

(1)概率计算问题:给定 lambda和O,求P(O | lambda)的概率, 方法:前向算法,后向算法以及前后向结合的算法(本文主要提供前向算法代码)

(2)学习(参数)问题:EM算法

(3)预测问题:viterbi算法

HMM中前向算法:

(1)前向算法原理:(来源:李航老师的统计学习方法)
输入:隐式马尔可夫模型lambda,以及观测序列O
输出:P(O | lambda)
算法过程:


1.png
2.png

算法可根据李航老师书中盒子和球的模型例子进行理解,此处提供实现代码:

import numpy as np
# 转移概率:a,观测概率:b,初始概率:pi 观测序列:o 
A = np.array([[0.5, 0.2, 0.3], [0.3, 0.5, 0.2], [0.2, 0.3, 0.5]])
B = np.array([[0.5, 0.5], [0.4, 0.6], [0.7, 0.3]])
PI = np.array([0.2, 0.4, 0.4])
O = np.array([0,1,0])

def hmm_forward(A, B, PI, O):
    n = np.shape(PI)[0] # 状态个数,即三个盒子
    m = np.shape(O)[0] # 观测序列长度
    alpha = np.zeros((m, n))
    for i in range(n):
        alpha[0][i] = PI[i] * B[i][O[0]]

    for t in range(1,m):
        for i in range(n):
            temp = 0.0
            for j in range(n):
                temp = temp + alpha[t-1][j] * A[j][i]
            temp = temp * B[i][O[t]]
            alpha[t][i] = temp
    print(alpha)
    return alpha      

if __name__ == '__main__':
    alpha = hmm_forward(A, B, PI, O)
    p = 0.0
    for i in range(3):
        p += alpha[2][i]
    print(p)
peace & love

相关文章

  • HMM之前向算法

    HMM基于两大假设: (1)齐次马尔科夫假设:存在于状态之间,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前...

  • 自然语言处理中的分词算法实现

    最近实现的3种中文分词算法 基于最大匹配(前向匹配、后向匹配、双向匹配) HMM n-gram 基于最大匹配算法(...

  • 条件随机场模型简单介绍(2)

    隐马尔可夫模型介绍 HMM的3个基本问题: 1/概率计算:前向算法,后向算法 2/学习问题:已知状态序列的时候可以...

  • HMM学习最佳范例七:前向-后向算法4

    七、前向-后向算法(Forward-backward algorithm) 隐马尔科夫模型(HMM)的三个基本问题...

  • Transformer面试基础:

    HMM 和 CRF 区别: 1.HMM是生成模型,CRF是判别模型 2.HMM是概率有向图,CRF是概率无向图 3...

  • 简版

    HMM 参数 = (A,B,pi) 前向-后向算法的核心是构建【递推】 无监督:EM第三个问题:预测做法:vite...

  • 02-隐马尔科夫模型(HMM)一

    1、HMM定义 1) HMM可用于标注问题,在语音识别、NLP、生物信息、模式识别、等领域被时间证明是有效的算法。...

  • 中文分词2:HMM

    HMM算法用于分词 一、HMM的典型模型五元组 状态集、观测集、初始状态分布、状态转移矩阵、发射矩阵。 1、状态集...

  • HMM学习最佳范例五:前向算法5

    在HMM这个翻译系列的原文中,作者举了一个前向算法的交互例子,这也是这个系列中比较出彩的地方,但是,在具体运行这个...

  • Eddy的AI小助手-finalseg分词模块(19)

    Finalseg算法是基于HMM模型,采用了Viterbi算法的分词Python工具包,简单易用,分词效果也不错。...

网友评论

      本文标题:HMM之前向算法

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