zoukankan      html  css  js  c++  java
  • 隐马尔可夫模型

    在概率模型中,利用已知变量推测未知变量的分布称为“推断”,其核心是如何基于可观测变量推测出位置变量的条件分布。

    概率图模型是一类用图来表达变量相关关系的概率模型。它以图为表示工具,最常见的使用一个结点表示一个或一组随机变量,结点之间的边表示变量间的概率相关关系,即“变量关系图”。根据边的性质不同,概率图模型可大致分为两类:

    • 第一类是使用有向无环图表示变量间的依赖关系,称为有向图模型或贝叶斯网;
    • 第二类是使用无向图表示变量之间的相关关系,称为无向图模型或马尔可夫网。

    隐马尔科夫模型(Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。

    隐马尔科夫模型中的变量可分为两组。第一组是状态变量{y_1,y_2,...,y_n},其中y_iinmathcal{Y}表示第i时刻的系统状态.通常假定状态变量是隐藏的,不可被观测的,因此状态变量亦称隐变量.第二组是观测变量{x_1,x_2,...,x_n},其中x_iinmathcal{X}表示第i时刻的观测值。在隐马尔科夫模型中,系统通常在多个状态{s_1,s_2,...,s_N}之间转换,因此状态变量y_i的取值范围mathcal{Y}(称为状态空间)通常是有N个可能取值的离散空间。观测变量x_i可以是离散型也可以是连续型,为便于讨论,我们仅考虑离散型观测变量,并假定其取值范围mathcal{X}{o_1,o_2,...,o_M}.

    HMM

    图 14.1  隐马尔可夫模型的图结构

    图14.1中的箭头表示了变量间的依赖关系。在任何时刻,观测变量的取值仅依赖于状态变量,即x_ty_t确定,与其他状态变量及观测变量的取值无关.同时,t时刻的状态y_t仅依赖于t-1时刻的状态y_{t-1},与其余n-2个状态无关.这就是所谓的"马尔可夫链"(Markov chain),即:系统下一时刻的状态仅由当前状态决定,不依赖于以往的任何状态。基于这种依赖关系,所有变量的联合概率分布为

    P(x_1,y_1,dots,x_n,y_n)=p(y_1)P(x_1|y_1)prod_{i=2}^nP(y_i|y_{i-1})P(x_i|y_i)

    除了结构信息,欲确定一个隐马尔可夫模型还需以下三组参数:

    • 状态转移概率:模型在各个状态间转换的概率,通常记为矩阵A=[a_{ij}]_{N	imes{N}},其中

    a_{ij}=P(y_{t+1}=s_j|y_t=s_i),qquad1leqslant{i,j}leqslant{N},

    表示在任意时刻t,若状态为s_i,则在下一时刻状态为s_j的概率.

    • 输出观测概率:模型根据当前状态获得各个观测值的概率,通常记为矩阵B=[b_{ij}]_{N	imes{M}},其中

    b_{ij}=P(x_t=o_j|y_t=s_i),qquad1leqslant{i}leqslant{N},1leqslant{j}leqslant{M}

    表示在任意时刻t,若状态为s_i,则观测值o_j被获取的概率.

    • 初始状态概率:模型在初始时刻各状态出现的概率,通常记为pi=(pi_1,pi_2,dots,pi_N),其中

    pi_i=P(y_1=s_i),qquad1leqslant{i}leqslant{N}

    表示模型的初始状态为s_i的概率。

    通过指定状态空间mathcal{Y}、观测空间mathcal{X}和上述三组参数,就能确定一个隐马尔可夫模型,通常用其参数lambda=[A,B,pi]来指代. 给定隐马尔可夫模型old{lambda},它按如下过程产生观测序列{x_1,x_2,dots,x_n}:

    1. 设置t=1,并根据初始状态概率pi选择初始状态y_1;
    2. 根据状态y_t和输出观测概率m{B}选择观测变量取值x_t;
    3. 根据状态y_t和状态转移矩阵A转移模型状态,即确定y_{t+1};
    4. t<n,设置t=t+1,并转到第2步,否则停止.

    其中y_tin{s_1,s_2,dots,s_N}x_tin{o_1,o_2,dots,o_M}分别为第t时刻的状态和观测值.

  • 相关阅读:
    全网最全微服务架构—Spring Cloud详解,没有比这更详细的了!
    基于 Spring Cloud 的微服务架构实践指南(上)
    如何在一分钟内搞定面试官?
    成功面试宝典Java
    Spring Boot 自动装配流程
    C语言浮点数
    C语言字符串
    C语言数据类型转换
    C语言结构体
    C语言格式化输出
  • 原文地址:https://www.cnblogs.com/iamxyq/p/5945063.html
Copyright © 2011-2022 走看看