加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

隐马尔可夫模型(Hidden Markov Model,HMM)学习一

发布时间:2020-12-15 00:16:23 所属栏目:C语言 来源:网络整理
导读:马尔可夫假设 在一个状态机中,下一个状态仅受前一个状态影响。 先看个例子 状态:晴天 0 、阴天 1 、雨天 2 初始向量:S 0 ={ 1 sun ,0 cloud ,0 rain } 状态转移矩阵:$$ begin{matrix} sun cloud rain sun 0.5 0.375 0.125 cloud 0.25 0.125 0.625
1/3 1/8 + P1(D6) 1/3 1/8+P1(D4) 1/3 1/8 1/3 1/6 + P1(D6) 1/3 1/6+P1(D4) 1/3 1/6 0 + P1(D6) 0 + P1(D4) * 0 这个例子中,如果我们把骰子结果数字看作是1种状态,每次选取的骰子看成另一种状态,那观测状态的集合就是{1,2,3,4,5,6,7,8},结果状态的集合就是{D4,D6,D8}。显然结果状态我们无法直接观测到,但是投出结果和所需骰子间明显存在着某种关系{D4,D8}<=>{1,4};{D6,D8}<=>{5,6};{D8}<=>{7,8},我们可以通过投出的骰子结果预测来预测所选的骰子。这就是一种隐马尔可夫模型。

隐马尔可夫模型的五元组

  • StatusSet: 状态值集合

  • ObservedSet: 观察值集合

  • TransProbMatrix: 转移概率矩阵

  • EmitProbMatrix: 发射概率矩阵

  • InitStatus: 初始状态分布

HHM模型的三个假设

  • 有限历史性假设:

    • P(Status[i]|Status[i-1],Status[i-2],... Status[1]) = P(Status[i]|Status[i-1])

  • 齐次性假设(状态和当前时刻无关):

    • P(Status[i]|Status[i-1]) = P(Status[j]|Status[j-1])

  • 观察值独立性假设(观察值只取决于当前状态值):

    • P(Observed[i]|Status[i],Status[i-1],...,Status[1]) = P(Observed[i]|Status[i])

HHM模型的应用

  • 参数(StatusSet,TransProbMatrix,EmitRobMatrix,InitStatus)已知的情况下,求解观察值序列。(Forward-backward算法)

  • 参数(ObservedSet,InitStatus)已知的情况下,求解状态值序列。(viterbi算法)

  • 参数(ObservedSet)已知的情况下,求解(TransProbMatrix,InitStatus)。(Baum-Welch算法)

参考资料

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

马尔可夫假设

在一个状态机中,下一个状态仅受前一个状态影响。
先看个例子

  • 状态:晴天0、阴天1、雨天2

  • 初始向量:S0={ 1sun,0cloud,0rain }

  • 状态转移矩阵:$$ begin{matrix} & sun & cloud & rain sun & 0.5 & 0.375 & 0.125 cloud & 0.25 & 0.125 & 0.625 rain & 0.25 & 0.375 & 0.375 end{matrix} $$
    以上描述了一个马尔可夫过程;在状态转移矩阵中每行都描述了从1种状态转移到另一种状态的概率,所以每一行的和为1

现在我们从状态0开始预测3天后的天气:
( $ P_{ij} i表示第i天j表示状态j;a_{ij} 表示前一天是状态i转化到当天状态j的概率 $ )

  • 第一天:S1={ 0.5sun,0.375cloud,0.125rain }

    • 晴天的可能:1 0.5 + 0 0.25 + 0 * 0.25 = 0.5 ($ P_{10}=sum_{i=0}^2 a_{i0} $)

    • 阴天的可能:1 0.375 + 0 0.125 + 0 * 0.375 = 0.375 ($ P_{11}=sum_{i=0}^2 a_{i1} $)

    • 雨天的可能:1 0.125 + 0 0.625 + 0 * 0.375 = 0.125 ($ P_{12}=sum_{i=0}^2 a_{i2} $)

  • 第二天:S2={ 0.375sun,0.28125cloud,0.34375rain }

    • 晴天的可能:0.5 0.5 + 0.375 0.25 + 0.125 * 0.25 = 0.375

    • 阴天的可能:0.5 0.375 + 0.375 0.125 + 0.125 * 0.375 = 0.28125

    • 雨天的可能:0.5 0.125 + 0.375 0.625 + 0.125 * 0.375 = 0.34375

  • 第三天:S3={ 0.34375sun,0.3046875cloud,0.3515625rain }

    • 晴天的可能:0.375 0.5 + 0.28125 0.25 + 0.34375 * 0.25 = 0.34375

    • 阴天的可能:0.375 0.375 + 0.28125 0.125 + 0.34375 * 0.375 = 0.3046875

    • 雨天的可能:0.375 0.125 + 0.28125 0.625 + 0.34375 * 0.375 = 0.3515625

现在我们知道3天后三种天气状态都有可能,不过雨天的可能更大一些。


隐马尔可夫模型

上面的预测过程就是一个马尔科夫过程,我们可以从一个已知状态预测经过x步骤变换后的状态可能。而HMM是指结果状态不可观测,只能通过受到结果状态影响的间接状态来预测。即
再举个简单例子,我们现在有3颗不同的骰子,D8、D6、D4.机器每次都是从3颗骰子中随机选取1个进行投掷,假设机器选取哪颗骰子我们并不可知,现在预测投掷2次结果是{1,6}的可能:

P1(投出1) P2(投出6)
    推荐文章
      热点阅读