问题标签 [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.
signals - 语音识别 - 一种 HMM 方法
理论真的。
我将要开发一种语音算法,并且必须以某种方式构建一个 HMM(隐马尔可夫模型),现在我有了一个基本概念。它用于概率,这可以用于语音识别。好的,所以我从一个网站上找到了这句话:
“为词汇表中的每个单词构建一个 HMM,然后将音素字符串与每个 HMM 进行比较,以确定哪个模型最有可能匹配。”
现在我有点明白了,但是,我不明白的是..要实现 HMM,我是否需要获取词汇表中的每个单词(即在英语词典中)和它的频率,然后取电话?HMM 会为电话找到最准确的词吗?
我希望有人可以回答这个问题,
谢谢 :)
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 次观测的最后一部分,我不太确定。有人可以告诉我到目前为止我是否在正确的轨道上?
java - 隐马尔可夫模型,对先前实现的澄清
我正在尝试隐藏马尔可夫模型。我真的没有与他们合作的经验,所以我决定查看一些实现示例。
看看下面的实现,我对 Baum-Welch 算法(在 train 方法下找到)采取可变步骤的目的有点困惑。我理解提供训练集,但不提供步骤。有没有人对此有解释,因为我从文档中不明白。
这是原始代码的链接http://cs.nyu.edu/courses/spring04/G22.2591-001/BW%20demo/HMM.java因为代码在我的帖子中没有很好地呈现。
我的另外两个问题是关于 Forward 方法的,它实现了 Forward-Backward 算法的 Forward 部分。通过阅读 HMM,我了解到,在训练我的模型之后,我应该使用这种方法来预测未来的观察结果。那么参数 O(表示输出序列)是否只是到目前为止的观察序列?
通过对这种方法的一些实验,我返回了文档所说的正向变量,它看起来就像一堆概率。这些如何转化为未来的观察?
我正在深入研究对我来说非常困难的编程领域,所以我非常感谢你帮助我理解这些东西!
video - 高级视频分析 - 如何咬它?
我需要做一个应用程序:
- 从摄像机捕获视频数据,
- 做一些处理(蒙特卡洛方法,马尔科夫场和链等),
- 将数据保存为视频文件,上表面包含有关处理的信息(例如,将标记找到的对象),
- 将所有内容(不是视频本身,而是对象的位置等)保存到数据库中,以便将来进行统计管理。
所有这些都需要实时、连续地完成。
我是数据库程序员(C#、Java、Python),所以这对我来说是新事物......选择什么语言以及如何开始,据说我对需要完成的处理非常了解,但只是理论上 - 我知道步骤、计算……只需要一个工具。
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) 关于如何实现我的目标的其他想法,任何帮助都将不胜感激。
谢谢!
python - 腌制经过训练的 NLTK 模型
所以我目前正在对一组手术数据训练一个隐马尔可夫模型,如下所示:
如果有帮助,“模型”将作为“HiddenMarkovModelTagger 15 个状态和 90 个输出符号”给出
然而,在我的机器上运行这个完整的训练需要将近一个小时。我希望能够序列化 nltk 模型输出“模型”以在会话之间加载和保存。我已经阅读过,每个人似乎都使用 Python 内置的 pickle,它对于已知的数据类型工作得很好而且很花哨。我什至可以使用以下代码腌制我训练有素的模型变量:
但是当尝试加载腌制文件时,我收到错误:
有没有人找到解决这个问题的方法?NLTK 有问题吗?
simulation - 在隐马尔可夫模型中生成一组给定转换矩阵和起始状态的排放
我有隐藏马尔可夫模型的转换矩阵、发射矩阵和起始状态。我想生成一系列观察(排放)。但是,我坚持一件事。
我了解如何在两种状态(或排放)之间进行选择。如果事件 A 的概率x
为 ,那么事件 B(或者,实际上不是 A)的发生概率为1-x
。要使用随机数生成 A 和 B 的序列rand
,请执行以下操作。
我不明白如何将其扩展到两个以上的变量。例如,如果发生三个事件,事件 A 发生概率x1
,事件 B发生x2
,事件 C 发生1-(x1+x2)
,那么如何扩展上述伪代码?
我没有找到答案谷歌搜索。事实上,我的印象是我错过了许多在线笔记假设的基本事实。:-/
algorithm - Viterbi 训练或 Baum-Welch 算法来估计转换和发射概率?
我正在尝试使用 Viterbi 算法在 HMM 上找到最可能的路径(即状态序列)。但是,我不知道转换和发射矩阵,我需要从观察(数据)中估计。
要估计这些矩阵,我应该使用哪种算法:Baum-Welch 或 Viterbi 训练算法?为什么?
如果我应该使用维特比训练算法,谁能给我一个好的伪代码(不容易找到)?
matlab - 隐马尔可夫模型工具箱/库
我现在正在尝试在我的项目中使用隐藏马尔可夫模型,我在网上搜索了很多隐藏马尔可夫模型的实现,无论是在 MATLAB 还是在 C/C++ 中。事实上,Matlab 提供了一个统计工具箱,其中包括一个隐马尔可夫模型的实现。我是这个领域的新手,我想知道哪个工具箱或库是最好的。购买隐马尔可夫模型的统计工具箱是否明智?此外,我计划在图像处理的背景下使用这个模型。谢谢!
statistics - 隐马尔可夫模型 - 识别音素
我正在开发一个识别音素的项目,以便能够识别某人是在说“是”还是“否”。
到目前为止,在项目中,我已经使用过零来识别这个人在说什么,这非常有效,而且看起来很容易理解。然而,该项目需要一些改进,并且必须使用隐马尔可夫模型进行开发。
我的问题是这样的:
我想开发一个隐马尔可夫模型,而不删除我已经完成的工作。即,我通过计算过零的数量以及块的总和来去除不值得考虑的数据。
我不明白我需要什么数据来训练 HMM 才能识别这些音素。例如
对于过零,我已经确定:
是 - 过零开始低,然后值增加
否 - 零交叉点从低位开始,然后不随值增加。
我可以训练我的 HMM 算法以便它解释这些值吗?
或者任何人都可以建议一种方法,我可以训练 HMM 以识别样本中输入的单词?
希望有人可以提供帮助:)!