• 学习 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) 时刻的状态和观测值.

    python 库: hmmlearn

  • 相关阅读:
    最长公共子序列
    BFS 从起始点到目标点的最短步数
    熟悉的A+B
    跳格子 完全背包
    pccontrol_scr
    VB快速读取TextBox第N行的数据 (转载)
    日语初学者会话
    语法着色控件使用典型范例
    2008年日语3级真题
    纯api实现ping主机(仅仅返回是否ping通)
  • 原文地址:https://www.cnblogs.com/q735613050/p/9457969.html
Copyright © 2020-2023  润新知