问题标签 [hidden-markov-models]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1027 浏览

signals - 语音识别 - 一种 HMM 方法

理论真的。

我将要开发一种语音算法,并且必须以某种方式构建一个 HMM(隐马尔可夫模型),现在我有了一个基本概念。它用于概率,这可以用于语音识别。好的,所以我从一个网站上找到了这句话:

“为词汇表中的每个单词构建一个 HMM,然后将音素字符串与每个 HMM 进行比较,以确定哪个模型最有可能匹配。”

现在我有点明白了,但是,我不明白的是..要实现 HMM,我是否需要获取词汇表中的每个单词(即在英语词典中)和它的频率,然后取电话?HMM 会为电话找到最准确的词吗?

我希望有人可以回答这个问题,

谢谢 :)

0 投票
1 回答
896 浏览

java - 游戏中的隐马尔可夫模型

好的,我对这里的 HMM 概念相对较新。

我目前所知道的是,对于一个具有指定状态数(N)、指定数量观察符号(M)和给定观察序列(O)的未知模型,我们可以找到一个最大化 O 概率的模型。

有了这个,我创建了一个 HMM,它利用本文档http://www.cs.sjsu.edu/~stamp/RUA/HMM.pdf -> 第 7 节伪代码中的代码

AB 和 pi 的初始值约为 1/N 和 1/M。我使用 matlab 生成数字,因此数字不准确但相似。

现在假设 O 的长度为 1000,我根据伪代码将其输入 HMM。最终状态是我得到了一个 A 、 B 和 pi 的模型,它可以自我调整以适应 O。到目前为止我是否正确进行?

如果是这样,接下来我想做的就是找到未来可能的观察 1001 (o1001)。

以我对 HMM 的片面理解,我需要做的是从我最后所拥有的,采取目前最可能的状态(在学习 1000 次观察后从 A 中获取)并从中找到最可能的观察(通过查看来自 A 的状态的 B 矩阵的行)

关于如何预测第 1001 次观测的最后一部分,我不太确定。有人可以告诉我到目前为止我是否在正确的轨道上?

0 投票
0 回答
868 浏览

java - 隐马尔可夫模型,对先前实现的澄清

我正在尝试隐藏马尔可夫模型。我真的没有与他们合作的经验,所以我决定查看一些实现示例。

看看下面的实现,我对 Baum-Welch 算法(在 train 方法下找到)采取可变步骤的目的有点困惑。我理解提供训练集,但不提供步骤。有没有人对此有解释,因为我从文档中不明白。

这是原始代码的链接http://cs.nyu.edu/courses/spring04/G22.2591-001/BW%20demo/HMM.java因为代码在我的帖子中没有很好地呈现。

我的另外两个问题是关于 Forward 方法的,它实现了 Forward-Backward 算法的 Forward 部分。通过阅读 HMM,我了解到,在训练我的模型之后,我应该使用这种方法来预测未来的观察结果。那么参数 O(表示输出序列)是否只是到目前为止的观察序列?

通过对这种方法的一些实验,我返回了文档所说的正向变量,它看起来就像一堆概率。这些如何转化为未来的观察?

我正在深入研究对我来说非常困难的编程领域,所以我非常感谢你帮助我理解这些东西!

0 投票
1 回答
97 浏览

video - 高级视频分析 - 如何咬它?

我需要做一个应用程序:

  • 从摄像机捕获视频数据,
  • 做一些处理(蒙特卡洛方法,马尔科夫场和链等),
  • 将数据保存为视频文件,上表面包含有关处理的信息(例如,将标记找到的对象),
  • 将所有内容(不是视频本身,而是对象的位置等)保存到数据库中,以便将来进行统计管理。

所有这些都需要实时、连续地完成。

我是数据库程序员(C#、Java、Python),所以这对我来说是新事物......选择什么语言以及如何开始,据说我对需要完成的处理非常了解,但只是理论上 - 我知道步骤、计算……只需要一个工具。

0 投票
1 回答
1425 浏览

c# - Accord.NET 估计多重回归 HMM 模型

Accord.NET 项目主页 (http://code.google.com/p/accord/) 包含基于单变量观察序列创建、训练和评估隐马尔可夫模型的示例。我也想做同样的事情,但是有很多变量的序列。我正在设想一个具有因变量和多个自变量的多元回归结构。我希望能够估计一个 HMM,其中输出包括每个状态的估计截距和系数,以及一个转移概率矩阵。一个例子是股票收益的时变贝塔。例如 ret(IBM) = intercept + b1*ret(Index) + b2*ret(SectorETF) + error,但其中 intercept、b1 和 b2 是依赖于状态的。

Marcelo Perlin 在他的 Matlab 的 MS_Regress 包中提供了这个功能。但是,我想要 C# 中的这个功能。因此,对于 (1) 使用 Accord.NET 库来估计多元回归 HMM 模型,(2) 将 Marcelo Perlin 的包翻译成 C#,或 (3) 关于如何实现我的目标的其他想法,任何帮助都将不胜感激。

谢谢!

0 投票
0 回答
2090 浏览

python - 腌制经过训练的 NLTK 模型

所以我目前正在对一组手术数据训练一个隐马尔可夫模型,如下所示:

如果有帮助,“模型”将作为“HiddenMarkovModelTagger 15 个状态和 90 个输出符号”给出

然而,在我的机器上运行这个完整的训练需要将近一个小时。我希望能够序列化 nltk 模型输出“模型”以在会话之间加载和保存。我已经阅读过,每个人似乎都使用 Python 内置的 pickle,它对于已知的数据类型工作得很好而且很花哨。我什至可以使用以下代码腌制我训练有素的模型变量:

但是当尝试加载腌制文件时,我收到错误:

有没有人找到解决这个问题的方法?NLTK 有问题吗?

0 投票
2 回答
1723 浏览

simulation - 在隐马尔可夫模型中生成一组给定转换矩阵和起始状态的排放

我有隐藏马尔可夫模型的转换矩阵、发射矩阵和起始状态。我想生成一系列观察(排放)。但是,我坚持一件事。

我了解如何在两种状态(或排放)之间进行选择。如果事件 A 的概率x为 ,那么事件 B(或者,实际上不是 A)的发生概率为1-x。要使用随机数生成 A 和 B 的序列rand,请执行以下操作。

我不明白如何将其扩展到两个以上的变量。例如,如果发生三个事件,事件 A 发生概率x1,事件 B发生x2,事件 C 发生1-(x1+x2),那么如何扩展上述伪代码?

我没有找到答案谷歌搜索。事实上,我的印象是我错过了许多在线笔记假设的基本事实。:-/

0 投票
3 回答
7953 浏览

algorithm - Viterbi 训练或 Baum-Welch 算法来估计转换和发射概率?

我正在尝试使用 Viterbi 算法在 HMM 上找到最可能的路径(即状态序列)。但是,我不知道转换和发射矩阵,我需要从观察(数据)中估计。

要估计这些矩阵,我应该使用哪种算法:Baum-Welch 或 Viterbi 训练算法?为什么?

如果我应该使用维特比训练算法,谁能给我一个好的伪代码(不容易找到)?

0 投票
1 回答
2588 浏览

matlab - 隐马尔可夫模型工具箱/库

我现在正在尝试在我的项目中使用隐藏马尔可夫模型,我在网上搜索了很多隐藏马尔可夫模型的实现,无论是在 MATLAB 还是在 C/C++ 中。事实上,Matlab 提供了一个统计工具箱,其中包括一个隐马尔可夫模型的实现。我是这个领域的新手,我想知道哪个工具箱或库是最好的。购买隐马尔可夫模型的统计工具箱是否明智?此外,我计划在图像处理的背景下使用这个模型。谢谢!

0 投票
2 回答
578 浏览

statistics - 隐马尔可夫模型 - 识别音素

我正在开发一个识别音素的项目,以便能够识别某人是在说“是”还是“否”。

到目前为止,在项目中,我已经使用过零来识别这个人在说什么,这非常有效,而且看起来很容易理解。然而,该项目需要一些改进,并且必须使用隐马尔可夫模型进行开发。

我的问题是这样的:

我想开发一个隐马尔可夫模型,而不删除我已经完成的工作。即,我通过计算过零的数量以及块的总和来去除不值得考虑的数据。

我不明白我需要什么数据来训练 HMM 才能识别这些音素。例如

对于过零,我已经确定:

是 - 过零开始低,然后值增加

否 - 零交叉点从低位开始,然后不随值增加。

我可以训练我的 HMM 算法以便它解释这些值吗?

或者任何人都可以建议一种方法,我可以训练 HMM 以识别样本中输入的单词?

希望有人可以提供帮助:)!