学习 HMM

Posted q735613050

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习 HMM相关的知识,希望对你有一定的参考价值。

简介

HMM 中的变量可以分为两组.

  • 第一组是状态变量 ({y_i,y_2,cdots, y_n}), 其中 (y_i in mathcal{Y}) 表示第 (i) 时刻的系统状态. 通常假定状态变量是隐藏的、不可观测的, 因此状态变量亦被称为隐变量 (hidden variable).
  • 第二组是观测变量 ({x_1,x_2,cdots, x_n}), 其中 (x_i in mathcal{X}) 表示第 (i) 时刻的观测值. 在 HMM 中, 系统通常在多个状态 ({s_1,s_2,cdots,s_N}) 之间转换, 因此状态变量 (y_i) 的取值范围 (mathcal{Y}) 通常有 (N) 个可能的离散空间.

下图更加直观:

graph LR; subgraph 状态变量或隐变量 y1 --now--> y2 y2 --now--> y3 y3 --now--> y4 ago --> now end subgraph 观测变量 y1 --> x1 y2 --> x2 y3 --> x3 y4 --> x4 end

上图的箭头表示了变量之间的依赖关系. 在任一时刻, 观测变量的取值仅仅依赖于状态变量, 即 (x_t)(y_t) 确定, 与其他的状态变量及其观测变量的取值无关. 同时, (t) 时刻的状态 (y_t) 仅依赖于 (t-1) 时刻的状态, 与其余 (n-2) 个状态无关. 这就是所谓的『马尔可夫链』(Markov chain), 系统下一时刻的状态仅由当前状态决定, 不依赖于以往的任何状态. 这样, 便有

[ P(x_1,y_1,cdots,x_n,y_n) = P(y_1)P(x_1|y_1)displaystyleprod_{i=2}^n P(y_i|y_{i-1})P(x_i|y_i) ]

除了结构信息外, 要确定一个 HMM 还需要以下三个参数:

  • 状态转移概率: 模型在各个状态间转换的概率, 常记作矩阵 (A=[a_{ij}]_{N imes N}), 其中 (a_{ij} = P(y_{t+1}=s_j|y_t=s_i), ext{ };;1 leq i,j leq N)
  • 输出观测概率: 模型根据当前状态获得各个观测值的概率, 常常记作矩阵 (B = [b_{ij}]_{N imes M},) 其中 (b_{ij} = P(x_t=o_j|y_t=s_i), ext{ };;1leq i leq N, 1 leq j leq M) 表示在任意时刻 (t), 若状态为 (s_i), 则观测值 (o_j) 被获取的概率.
  • 初始状态概率: 模型在初始时刻各个状态出现的概率, 常常记作 (pi = (pi_1, pi_2, cdots, pi_N)), 其中 (pi_i = P(y_1=s_i), ext{ };;1leq i leq N), 表示模型的初始状态为 (s_i) 的概率.

通过指定状态空间 (mathcal{Y}), 观测空间 (mathcal{X}) 和上述三组参数, 就能确定一个 HMM, 通常用其参数 (lambda = [A,B,pi ]) 来指代. 给定 (lambda), 它按照如下过程产生观测序列 ({x_1,x_2,cdots, x_n})

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

其中 (y_tin {s_1,s_2,cdots,s_N})(x_t in {o_1,o_2,cdots,o_M}), 分别为第 (t) 时刻的状态和观测值.

以上是关于学习 HMM的主要内容,如果未能解决你的问题,请参考以下文章

我们可以通过 HMM 进行监督学习吗?

机器学习HMM模型算法实例

学习 HMM

jieba分词与HMM学习

机器学习——HMM & CRF

从HMM到RNN,机器学习中的时间序列模型