我是靠谱客的博主 愤怒小海豚,最近开发中收集的这篇文章主要介绍隐马尔可夫模型:生成样本,训练与预测隐马尔可夫模型的构成:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 隐马尔可夫模型的构成:
    • 1. 基本结构:
    • 2. 模型中心:
      • (1)初始状态概率向量 π pi π
      • (2)状态转移概率矩阵A
      • (3)发射概率矩阵B
    • 3. 模型使用:
      • (1)样本生成:
      • (2)模型训练:
      • (3)预测 - 维特比算法:
        • <1> 初始化
        • <2> 递推
        • <3> 终止
        • <4> 回溯

隐马尔可夫模型的构成:

1. 基本结构:

状态A
状态B
状态C
观测A
观测B
观测C

隐马尔可夫模型的基本构成为一个状态序列和一个观测序列,其中假设当前状态只由上一个状态决定,而当前观测只由发射出此观测的状态决定。

2. 模型中心:

隐马尔可夫模型的关键数学结构为三个矩阵(向量): π pi π,A,B;这三个矩阵分别定义了初始状态的概率、由确定的当前状态转移向下一个状态的概率以及由当前的确定状态发射到其观测的概率。

(1)初始状态概率向量 π pi π

假设可能的状态数为N,则 π pi π的维度为N,第n个位置就是初始状态为第n个状态的概率。

(2)状态转移概率矩阵A

假设当前状态为 S i S_i Si,则下一个状态为 S j S_j Sj的概率对应了矩阵A中的第 i , j i,j i,j个元素,其中 i , j ∈ N i,jin N i,jN

(3)发射概率矩阵B

假设当前状态为 S i S_i Si,则当前状态对应的可能观测 O j O_j Oj的概率对应了矩阵B中第 i , j i,j i,j个元素,假设可能的观测数为M,有 i ∈ N , j ∈ M iin N,j in M iN,jM


一般来说,可能的观测数要远远大于可能的状态数,所以矩阵B中的元素数量一般是最多的。

3. 模型使用:

(1)样本生成:

在给定状态集与观测集,并确定了三个矩阵(向量) π pi π,A,B以后,我们可以生成任意数量的状态序列与观测序列,使当前状态与下一个状态、当前状态与当前观测之间的条件概率满足给定的矩阵(向量) π pi π,A,B。

(2)模型训练:

模型训练的基本任务是在给定的样本上求得矩阵(向量) π pi π,A,B。

首先是初始状态概率向量 π pi π,我们只需统计样本中的初始状态频数,再将其归一化为0~1之间的值即可。

其次是状态转移概率矩阵A,我们只需统计样本中所有(当前状态,下一个状态)的频数,再将所有当前状态相同的二元组按照对应的因子进行归一化即可得到矩阵A。在实际操作中,我们可以先给定矩阵A的模板:一个N×N的矩阵,其中某行或者某列对应的状态已经定义好,此种情况下我们只需将当前状态分配到对应行、下一个状态分配到对应列进行频数统计,统计完成后使用某个元素对应行中所有元素之和对该元素进行归一化即可。

最后是发射概率矩阵,发射概率矩阵的训练的基本思路同样是统计样本中二元组频数后进行归一化,类似矩阵A的训练,唯一的区别是把下一个状态换成当前观测。

(3)预测 - 维特比算法:

有了从样本中训练好的矩阵(向量) π pi π,A,B之后,我们需要对一个给定的观测序列完成对其状态序列的预测,这一任务需要使用维特比算法,操作两个新矩阵:局部路径最大概率矩阵 δ t , i delta_{t,i} δt,i和局部最优路径末状态矩阵 ψ t , i psi_{t,i} ψt,i。其中, δ t , i delta_{t,i} δt,i用于存储t时刻所有前状态转移到当前状态 S i S_i Si的概率中的最大值, ψ t , i psi_{t,i} ψt,i用于存储这个最大概率对应的前状态。

其基本过程如下:假设给定的观测序列为 O 1 , O 2 , . . . . . . , O t O_1,O_2,. . . . . . , O_t O1,O2,......,Ot

<1> 初始化

δ 1 , i = π i B i O 1 , i = 1 , 2 , . . . . . . , N delta_{1,i}=pi_{i}B_{iO_1},i = 1,2,......,N δ1,i=πiBiO1,i=1,2,......,N
由于初始状态没有前状态,所以 ψ 1 , i psi_{1,i} ψ1,i的值都为0或者None。

<2> 递推

t ≥ 2 t ge 2 t2时,

δ t , i = m a x ( 1 ≤ j ≤ N ) { δ t − 1 , j A j i } B i , o t delta_{t,i} = max_{ (1le j le N)} { delta_{t-1,j}A_{ji}}B_{i,o_t} δt,i=max(1jN){δt1,jAji}Bi,ot

ψ t , i psi_{t,i} ψt,i记录满足 m a x ( 1 ≤ j ≤ N ) { δ t − 1 , j A j i } max_{ (1le j le N)} { delta_{t-1,j}A_{ji}} max(1jN){δt1,jAji} j j j值。

<3> 终止

t = T t = T t=T时,递推结束;

找到 δ T , i delta_{T,i} δT,i中最大值对应的下标 i T ( m a x ) i_{T(max)} iT(max)

<4> 回溯

利用 i T ( m a x ) i_{T(max)} iT(max)以及矩阵 ψ t , i psi_{t,i} ψt,i即可回溯出给定观测序列最可能对应的状态序列。

最后

以上就是愤怒小海豚为你收集整理的隐马尔可夫模型:生成样本,训练与预测隐马尔可夫模型的构成:的全部内容,希望文章能够帮你解决隐马尔可夫模型:生成样本,训练与预测隐马尔可夫模型的构成:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部