问题标签 [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 投票
1 回答
2272 浏览

algorithm - 在隐马尔可夫模型中确定概率的方法是什么?

我开始学习隐藏马尔可夫模型,在 wiki 页面以及 github 上有很多示例,但大多数概率已经存在(70% 的降雨变化,30% 的改变状态的机会等) . 拼写检查或句子示例,似乎是在研究书籍,然后对单词的概率进行排名。

那么马尔可夫模型是否包括一种计算概率的方法,或者我们是否假设其他一些模型可以预先计算它?

抱歉,如果此问题已关闭。我认为隐藏马尔可夫模型如何选择可能的序列很简单,但概率部分对我来说有点灰色(因为它经常提供)。示例或任何信息都会很棒。


对于那些不熟悉马尔可夫模型的人,这里有一个例子(来自维基百科)http://en.wikipedia.org/wiki/Viterbi_algorithmhttp://en.wikipedia.org/wiki/Hidden_​​Markov_model

0 投票
1 回答
1797 浏览

java - Mallet HMM 训练问题

目前,我正在为 Mallet 关于 HMM 的糟糕文档而苦苦挣扎。我已经设法将数据导入实例(改编自 ImportExample.java 片段),我只是想知道如何使用它们来训练 HMM 模型。我首先创建了一个 HMM 实例,但我不确定是否要这样做:

或者使用相同的数据字母两次,如下所示:

无论哪种方式,当我到达

我收到以下错误:

cc.mallet.types.FeatureVector 不能转换为 cc.mallet.types.FeatureVectorSequence

如果您能提供任何帮助,我将不胜感激。

干杯

0 投票
1 回答
1435 浏览

algorithm - 实时应用的维特比算法

我知道给定一个 HMM 和一个观察,维特比算法可以猜测产生这个观察的隐藏状态序列。但是你想实时使用它的情况呢?我的意思是逐步找到隐藏状态。每次输入中的观察符号时,都会猜测隐藏状态,而无需知道接下来的整个观察序列。我想将它用于实时运行的音频应用程序,因此观察将是每个时间帧的音频特征值的序列。

0 投票
1 回答
1197 浏览

algorithm - 三面骰子的隐马尔可夫模型

我被教导 HMM 并给出了这个家庭作业问题。我理解了其中的一部分,但我不确定它是否正确。问题是:

考虑一个不同的游戏,其中庄家不是掷硬币,而是滚动一个带有标签 1、2 和 3 的三面骰子。(尽量不要考虑三面骰子的样子。)庄家有两个加载的骰子 D1 和 D2。对于每个骰子 Di,掷出数字 i 的概率为 1/2,其他两个结果的概率均为 1/4。在每一轮,庄家必须决定是否 (1) 保留相同的骰子,(2) 切换到另一个骰子,或 (3) 结束游戏。他以 1/2 的概率选择(1),以 1/4 的概率选择其他每个。一开始,庄家以相等的概率选择两个骰子之一。

  • 针对这种情况给出一个 HMM。指定字母表、状态、转移概率和发射概率。包括一个开始状态 start,并假设 HMM 以概率为 1 的状态开始。还包括一个结束状态 end。

  • 假设您观察到以下掷骰顺序: 1 1 2 1 2 2. 找出最能解释掷骰顺序的状态序列。这个序列的概率是多少?通过完成维特比表找到答案。在单元格中包含回溯箭头,以便您可以追溯状态序列。以下一些事实可能有用:

    log2(0) = -∞
    log2(1/4) = -2
    log2(1/2) = -1
    log2(1) = 0

  • 对于这个掷骰子序列,实际上有两个最佳状态序列。其他状态序列是什么?

如果我在第一部分没有错,我必须在这里做类似的事情http://en.wikipedia.org/wiki/Hidden_​​Markov_model#A_concrete_example但我没有得到假设从概率 1 开始。

另外,我不确定在问题的第二部分中我必须为 Viterbi 表做什么。如果任何机构可以给我一些提示或线索,那就太好了。

0 投票
2 回答
1001 浏览

algorithm - 用于解决给定硬币输出的 HMM

我在 HMM 上得到了这个作业问题,我已经解决了。我想知道我是否正确。问题是:

假设一个不诚实的经销商有两枚硬币,一枚公平的,一枚有偏见的;偏硬币的正面概率为 1/4。假设庄家从不换硬币。哪个硬币更有可能产生序列HTTTHHHTTTTHTHHTT?知道 log 2 (3) = 1.585可能很有用

我计算了公平硬币和有偏见硬币的 P。公平硬币的 P 是 7.6*10 -6,而有偏见硬币的 P 是 3.43*10 -6。我没有使用日志术语,如果我以其他方式解决它可以使用。因此,我得出结论,给定序列更有可能是由公平硬币生成的。

我对吗?

任何帮助是极大的赞赏。

0 投票
2 回答
803 浏览

machine-learning - 基于隐马尔可夫模型的分类器中状态数的影响

集群/码本的数量,隐藏马尔可夫模型的状态数量之间的关系是什么

状态数如何影响基于隐马尔可夫模型的分类器的性能?

0 投票
1 回答
425 浏览

machine-learning - Kevin Murphy HMM 工具箱中 learn_dmm.m 中使用的算法是什么?

我将重写一个在 Python 中使用 Kevin Murphy 工具箱的 MATLAB 脚本。

我知道在 python 中有一些 HMM 算法实现(Viterbi、Baum Welch、Backword Forward),所以我认为我拥有移植 matlab--> python 所需的一切。

我的 MATLAB 脚本使用 learn_dhmm.m 中编写的过程:

我不明白这个程序实际上做了什么。

抱歉,我刚开始学习机加工

0 投票
2 回答
1084 浏览

neural-network - 简单的语音识别方法

是的,我知道语音识别相当复杂(轻描淡写)。我正在寻找的是一种区分可能20-30 个短语的方法。拆分单词的能力(离散语音很好)会很好,但不是必需的。该软件将取决于用户(即供我使用)。我不是在寻找现有的软件,而是在寻找自己做这件事的好方法。我研究了各种现有的方法,似乎将声音分成音素,虽然很常见,但对我的需求来说有点过分了。

在某些情况下,我只是在寻找一种通过一些简单的语音命令来控制计算机某些方面的方法。我知道 Windows 已经有语音识别软件,但我想自己做一个学习练习。命令很简单,例如“打开 Google”或“静音”。我的想法(不确定这是否是一个好主意)是一些命令是复合的。所以“静音”就是“静音”。而“打开”命令可以单独识别,然后有其后缀(Google、Photoshop 等)。与另一个网络/模型/其他识别。但我不确定以这种方式查找前缀/分词是否会比处理数量增加的单个命令产生更好的结果。

我一直在研究感知器、hopfield 网络(尽管它们在我的理解中有些过时)和 HMM,虽然我理解这些背后的想法(我之前实现过 ANN)但我真的不知道哪个是最适合这项任务。我假设线性向量量化模型也是合适的,但我真的找不到很多关于这方面的文献。任何指导/资源将不胜感激。

0 投票
2 回答
2029 浏览

python - 使用 kinect 和 python 进行手势识别:嗯学习

我想用 kinect 在 python 中做手势识别。

在阅读了一些理论之后,我认为最好的方法之一是使用隐马尔可夫模型(HMM)(baum welch 或一些 EM 方法)和一些已知的手势数据进行无监督学习,以实现一组经过训练的 HMM(每个手势一个我想认识的)。

然后我会进行识别,将观察到的数据的最大对数似然(使用维特比?)与训练集中的 HMM 进行匹配。

例如,我用 kinect 设备记录了一些手势的数据(右手的坐标 x、y、z)(打招呼、踢拳、用手转圈),我做了一些训练:

然后我对执行最大 loglik 的观察到的新数据进行识别,并选择之前保存的手势,每个训练的 HMM 都具有最大 loglik:

我的问题是:

  • 这是完全愚蠢的事情吗?
  • 一个真实案例需要多少训练集?
  • 每个 HMM 有多少个状态?
  • 是否可以实时进行?
0 投票
2 回答
13141 浏览

opencv - 使用 C++ 的隐马尔可夫模型

我最近一直在研究 C++ 中隐马尔可夫模型的实现。我想知道是否可以使用任何现有的用 C++ 编写的 HMM 库与动作识别(使用 OpenCV)一起使用?

我要避免“重新发明轮子”!

即使(看起来)它是为语音识别而设计的,是否可以使用Torch3Vision ?

我的想法是,如果我们可以将特征向量转换为符号/观察值(使用向量量化 - Kmeans 聚类),我们可以使用这些符号进行解码、推理、参数学习(Baum-Welch 算法)。这样它就可以在 OpenCV 中与 Torch3Vision 一起使用。

对此的任何帮助将不胜感激。