• (补) HMM 求解参数-状态转移矩阵 A


    昨天在看的时候, 才发现, HMM参数求解给忘了 状态转移矩阵A的求解, 我以为我做了...好气哦, 不多比比, 直接来.

    A 是状态转移矩阵, 表示在 已知前一个状态下, 求解后一个概率(写出来就是一个条件概率)

    (p(z_{k+1} =j | z_k = i) = frac {p(z_{k+1}=j, z_k = i)}{p(z_k = i)})

    最基础的条件概率公式哈

    分母 (p(z_k = 1)) 可以通过前面的 F/B 算法计算出来, 所以问题在于如何计算 (p(z_{k+1}, z_k=i)) 这个联合概率

    估计 A-理论

    由上, 我们的目标是如何计算 (p(z_{k+1}, z_k = i | x)) , 在观测值已知的情况下.

    (z_k 与 x_k) 是一 一对应的关系, 通过贝叶斯公式可以得到:

    (p(z_k=i , z_{k+1}=j| x) 与 p( z_k =i, z_{k_1}=j, x) 是正比关系)

    跟之前同样的套路, 对 x 进行区间拆分, 即:

    (=p(z_k, z_{k+1}, x_{1:k}, x_{k+1}, x_{k+2:n})) 换个变量顺序哈, 为了把 (z_k, x_{1:k}) 看为一个整体, 求解技巧是为了最终形式简洁

    (=p(z_k, x_{1:k}, z_{k+1}, x_{k+1}, x_{k+2:n})) 展开写:

    (=p(z_k, x_{1:k}) p(z_{k+1}|z_k, x_{1:k}) p(x_{k+1}|z_k, x_{1:k}, z_{k+1}) p(x_{k+2:n}|z_k, x_{1:k},z_{k+1}, x_{k+1} ))

    同样根据 D-separation性质 可将与条件概率无关的独立变量进行省略, 化简得到:

    (p(z_k, x_{1:k}) p(z_{k+1}|z_k) p(x_{k+1}|z_{k+1}) p(x_{k+2:n}|z_{k+1}))

    这几个项, 不就刚好对应: Forward, 状态转移矩阵, 发射概率矩阵, Backwark 呀.

    也就是可以算出所有的:

    (p(z_k=i , z_{k+1}=1| x) 正比于 p( z_k =i, z_{k_1}=1, x))

    (p(z_k=i , z_{k+1}=2| x) 正比于 p( z_k =i, z_{k_1}=2, x))

    (p(z_k=i , z_{k+1}=3| x) 正比于 p( z_k =i, z_{k_1}=3, x))

    ....

    再进行一个归一化的操作, 则就算出了 (p(z_k=i, z_{k+1}=j|x)) 的概率了, (用来估计A要用到的)

    估计A-栗子

    考虑 Z, 假设有3个样本, 通过之前的 F/B 算法, 可以得到每个z_i 的概率分布.

    样本1

    z1 z2 z3 z4 z5 z6
    0.6 0.5 0.6 0.7 0.6 0.2
    0.3 0.3 0.2 0.2 0.1 0.3
    0.1 0.2 0.2 0.1 0.3 0.5

    样本2

    z1 z2 z3 z4 z5
    0.5 0.4 0.3 0.6 0.3
    0.3 0.4 0.5 0.3 0.1
    0.2 0.2 0.2 0.1 0.6

    样本3

    z1 z2 z3 z4
    0.5 0.1 0.3 0.5
    0.3 0.2 0.3 0.1
    0.2 0.7 0.3 0.4

    我们要计算的是 (p(z_k=i, z_{k+1}=j | x)) 这个概率. 根据上面的数据, 方法就是前面的理论推导的式子, 过程跟 HMM的第2篇, 已知Z 来计算是差不多的过程. 这里就不展开了.

    最后呢就计算出来状态转移矩阵 A.

    用到的EM算法

    随机初始化 参数 ( heta=(pi, A, B))

    while not 收敛:

    ​ E-step: (核心是为了计算 p(z|x)

    ​ 根据已知的 ( heta=(pi, A, B)) 计算

    (p(z_k^{i} | x^i), i = 1, 2, ...n) // 用 F/B 算法求解

    (p(z_{k}^i, z_{k+1}^i | x^i), i = 1, 2...n)

    ​ M-step:

    ​ 参数更新

    (pi, A, B)

    不搞了 HMM 就先搞到这, 我感觉之前我还挺清晰的, 写着写着, 这些概率公式, 总感觉留有bug, 真心觉得, 概率模型贼不好理解, 一不小心就自己个就弄混了, 什么条件概率, 全概率, 贝叶斯, 条件独立 , 序列, 值概率....自己都写崩溃了, 赶紧撤退, 战略性放弃一波, 再恶补一波概率论先.

  • 相关阅读:
    扩展方法使用
    mac学习笔记:brew 安装nginx
    Mac SVN 命令行
    mac终端命令大全
    mac学习笔记之:使用brew安装软件
    Linux学习笔记之更新yum安装最新Nginx+Php
    pyenv快速入门
    pycharm配置robotframework环境(mac版)
    macOS的zsh和bash切换
    robotframework windows环境和mac环境安装教程
  • 原文地址:https://www.cnblogs.com/chenjieyouge/p/12147152.html
Copyright © 2020-2023  润新知