【问题标题】:Hidden Markov Model for multiple observed variables多个观测变量的隐马尔可夫模型
【发布时间】:2013-07-05 11:02:41
【问题描述】:

我正在尝试使用隐马尔可夫模型 (HMM) 来解决每个时间点 t 有 M 个不同的观察变量 (Yti) 和单个隐变量 (Xt) 的问题。为清楚起见,我们假设所有观察到的变量 (Yti) 都是分类变量,其中每个 Yti 传达不同的信息,因此可能具有不同的基数。 下图给出了一个说明性示例,其中 M=3。

我的目标是使用 Baum-Welch 算法从我观察到的变量序列 (Yti) 中训练 HMM 的转换、发射和先验概率。假设 Xt 最初将有 2 个隐藏状态。

我已经阅读了一些教程(包括著名的 Rabiner 论文)并浏览了一些 HMM 软件包的代码,即 'HMM Toolbox in MatLab' 和 'hmmpytk package in蟒蛇'。总的来说,我进行了广泛的网络搜索,所有我能找到的资源只涵盖了每个时间点只有一个观察到的变量 (M=1) 的情况。这越来越让我觉得 HMM 不适合具有多个观察变量的情况。

  • 是否可以将图中描述的问题建模为 HMM?
  • 如果是,如何修改 Baum-Welch 算法以适应基于多变量观察(发射)概率的 HMM 参数训练?
  • 如果没有,您是否知道更适合图中所示情况的方法?

谢谢。

编辑: 在这个paper 中,图中描述的情况被描述为动态朴素贝叶斯,就训练和估计算法而言,它需要对单变量 HMM 的 Baum-Welch 和 Viterbi 算法进行轻微扩展。

【问题讨论】:

  • 你在说something like this吗?
  • 天真地说,您可以将这样的问题建模为标准 HMM,只需一次观察。如果每个观察Yti 是元素 R,则只需将每个多观察 Yt 设为 R^3 中的一个元素。如果 n 是可能的单个观察的数量,这将导致 n^3 个可能的多观察。但是,与更复杂的方法相比,这可能(我不确定/不知道)导致需要更多的训练数据。
  • @Aufziehvogel,这是一种可能性,但正如您所指出的,它极大地扩大了概率空间,并且需要大量的训练数据。此外,从图形上看,您建议的模型与图片中给出的模型不同。
  • @Roger,谢谢,我以前看过这篇论文。根据我在第 4.1 节公式 43 中的理解,对于 k 个观察序列: P(O|lambda) 是 P(O1|lambda) * P(O2|lamda)*...*P(Ok|lambda) 如果序列是独立的。但我相信这仍然适用于 O1,...,Ok 都是属于单个变量的观察序列(例如患者的每日心率读数)的情况,而在我的场景中,我希望能够使用 heart速率 + 氧饱和度 + 其他单独的读数(变量)。
  • 我同意 HMM 的问题——它们对于单个观察情况非常具体,但 DBN 可以利用人口稀少的概率空间,因此它们非常值得考虑。我浏览了Daphne Koller's PGM book 以查看那里是否有任何见解,但无论如何它还是让我再次访问了 DBN,所以我猜 HMM 已经出局了。听起来像是一个有趣的应用程序 - 祝你好运。

标签: machine-learning time-series hidden-markov-models


【解决方案1】:

做到这一点并让模型保持生成的最简单方法是在给定x_is 的情况下使 y_is 条件独立。这导致了微不足道的估计量和相对较少的参数,但在某些情况下是一个相当严格的假设(它基本上是朴素贝叶斯分类器的 HMM 形式)。

编辑:这是什么意思。对于每个时间步 i,您都有一个多元观察 y_i = {y_i1...y_in}。在给定 x_i 的情况下,您将 y_ij 视为条件独立,因此:

p(y_i|x_i) = \prod_j p(y_ij | x_i)

然后,您将有效地为隐藏变量 x 的每个可能值学习一个朴素贝叶斯分类器。 (条件独立在这里很重要:在 ys 的 unconditional 分布中存在依赖关系)。这可以通过 HMM 的标准 EM 来学习。

正如一位评论者所说,您也可以将y_ijs 的串联视为一个单独的观察结果,但如果任何 j 个变量的维数非常小,这将导致 很多 的参数,你需要更多的训练数据。

您是否特别需要模型具有生成性?如果您只是在 x_is 中寻找推理,那么使用 conditional random field 可能会更好,因为它的特征函数可以在没有同样限制性的独立性假设的情况下进行更复杂的观察。

【讨论】:

  • 我完全不介意有一个无向模型。我尝试使用 HMM 的两个原因是:1- 它们看起来很简单,2- 我实际上不知道我想要预测的隐藏变量的状态。换句话说,我最初并没有将问题建模为监督学习问题。 Aufziehvogel 的建议并不理想,因为我没有足够的训练数据。顺便说一句,我不太理解(可能是符号)你对“y_is 条件独立给定 x_is”的初始评论
  • 好的,所以不知道状态,我假设你的意思是你在无监督地做这个,即你没有任何训练数据,而不是你不确定标签.我已经更新了我的答案,但您找到的论文似乎暗示了同样的事情
  • 是的,如果你没有任何训练数据,那么 CRF(这是 HMM 的判别版本)将不是一个选项
  • 我有一个 M 观察变量流(问题中给出的符号)。我想在我的问题域中引入一个隐藏状态 Xt,并将其建模为 HMM 的(扩展)。这是因为系统在不同的时间间隔内行为不同,我希望最终能够通过实现 Viterbi 来模拟这些隐藏的“状态转换”。所以,是的,它是“无监督的”,因为我没有标签,甚至对 Xt 的基数没有一定的了解。我相信论文中描述的 Dynamic NB 方法适用于此。你同意吗?
  • 是的,我快速浏览了这篇论文。我相信动态朴素贝叶斯分类器是我提出的,标准 HMM 是级联观察。 DNB 的东西会起作用——但是,我意识到你没有说你的功能是什么。如果它们是连续的,而不是使用 DNB,您应该查看多元高斯 HMM,它是一个标准模型(观察分布是多元正态分布,而不是朴素贝叶斯分布)
【解决方案2】:

我发现这可以通过将系统建模为 动态朴素贝叶斯分类器 (DNB) 来实现,它是普通(单变量)HMM 的轻微扩展,可以满足多- 如图所示的观察场景。

建议谨慎,因为 DNB 仍然具有隐藏状态,因此不应将其视为原始朴素贝叶斯分类器的直接顺序扩展。算法名称中的“朴素”源于这样一个事实,即在给定隐藏状态变量的情况下,所有观察到的变量都是相互独立的。

与 HMM 类似,该模型的参数估计可以通过 Baum Welch(或 EM,无论您喜欢如何命名)算法来实现。由于每个时间步的排放分布现在是每个观测变量 Yti 的 P(Yti|Xt) 的乘积,因此需要对前向、后向和联合变量方程进行轻微修改,如本 paper 的第 3 节所述Aviles-Arriaga 等人。

【讨论】:

    【解决方案3】:

    您正在寻找的东西称为结构化感知器。请看第 42 页的以下幻灯片。 http://www.cs.umd.edu/class/fall2015/cmsc723/slides/inclass_09.pdf

    【讨论】:

      【解决方案4】:

      您可以使用张量对问题进行建模 使用两个时间序列构造张量,然后识别 HMM 参数。 “Hidden Markov Model Identifability via Tensors”是一个很好的参考。

      Matlab 提供张量工具箱。

      fyi,我正在解决一个相关问题,如果您想以更私密的方式讨论,请随时给我发电子邮件

      【讨论】:

        【解决方案5】:

        您可以尝试隐藏半马尔可夫模型,它是 hmm 的扩展。它允许每个状态持续多个时间段。

        【讨论】:

          【解决方案6】:

          This paper提出了解决问题的算法

          【讨论】:

            猜你喜欢
            • 2014-12-25
            • 2012-12-07
            • 2012-08-15
            • 2012-06-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-09-18
            相关资源
            最近更新 更多