问题标签 [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 回答
772 浏览

signal-processing - HMM - 训练数据和格式

我想实现一个 HMM(隐马尔可夫模型)来识别特定的单词。到目前为止,我已经设法提取了信号的系数 (MFCC),并想知道这是否是训练 HMM 的好数据?

此外,训练 HMM 的格式(如下)是否正确?

格式:

对于每个样本,都有一系列 MFCC 系数,我提供了其中两个样本作为示例...

-13.8033 0.645476 3.2174 -0.625136 -0.470134 -2.96368 0.701151 0.464246 1.1898 -1.88515 0.0805242 0.311573 0.732487

-19.4252 -5.65454 0.853437 0.317219 0.146167 -1.93742 0.381944 -2.01793 -0.561144 -0.896783 -0.105491 -1.06504 -0.797318

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

0 投票
1 回答
206 浏览

hidden-markov-models - 具有已知状态的马尔可夫模型

我是隐藏马尔可夫模型的新手,并试图找出对以下问题进行建模的最佳方法:

我有一个可以处于三种不同状态的随机变量。与隐藏马尔可夫模型类似,我对序列中的下一个状态以及该状态将取什么值感兴趣,但我所拥有的状态是已知的而不是隐藏的。

非常感谢您的回答。

0 投票
1 回答
4013 浏览

machine-learning - 哪种机器学习算法适合从另一个时间序列预测一个时间序列?

你是一架飞机跟踪一艘穿越海洋的敌舰,所以你已经收集了这艘船的一系列 (x,y,time) 坐标。你知道一艘隐藏的潜艇会和船一起旅行以保护它,但是虽然它们的位置之间存在相关性,但潜艇经常会从船上徘徊,所以虽然它经常靠近它,但它也可能在它的另一侧世界偶尔。您想预测潜艇的路径,但不幸的是它对您隐藏。

但在 4 月的某个月,您注意到潜艇忘记隐藏自己,因此在 1,000 次航行中,您拥有潜艇和船的一系列坐标。使用这些数据,您想建立一个模型,仅根据船的运动来预测隐藏潜艇的路径。幼稚的基线会说“潜艇位置猜测=”船的当前位置”,但从 4 月份潜艇可见的数据中,您注意到潜艇有领先于船舶的趋势,所以“潜艇位置“guess = ship's position in 1 minute”是一个更好的估计。此外,4月份的数据显示,当船在水中停留较长时间时,潜艇很可能在远处巡逻沿海水域。还有其他模式当然。

给定 4 月份的数据作为训练数据,你将如何构建这个模型来预测潜艇的路径?我目前的解决方案是一个特别的线性回归,其中因素是“行程时间”、“货船的 x 坐标”、“货船闲置 1 天”等,然后让 R 计算权重并进行交叉-验证。但我真的很想有一种方法可以从 4 月的数据中自动生成这些因素。此外,使用序列或时间的模型会很好,因为线性回归没有,我认为它是相关的。

编辑:我用虚构的故事重新阐述了这个问题,所以它不那么令人困惑。我发布的原始问题是:

我有两个科目的眼球追踪数据——一个老师和一个学生。它采用 (x, y, time) 的形式,因此每个主题都有一系列这些。老师看什么会影响学生看什么。我将使用什么方法来预测学生正在看什么,只使用教师数据?假设我可以使用一组黄金标准的学生和教师数据来训练一些学习算法。

鉴于维基百科中的定义,我认为隐藏马尔可夫模型是合适的,但我不确定如何在我的数据集上将其付诸实践。

更多细节:我有关于教师和学生如何查看地图和一些读数的数据。我有 40 个这样的数据集,它们看起来像 [(366,234,0), (386,234,5), ...] 这意味着老师在 0 时间查看点 (366,234),然后 5 秒后向上移动查看坐标 (386, 234)。我可以学习一个模型来理解老师如何看待内容之间的关系,以预测学生如何看待相同的内容。所以也许学生看内容的顺序与老师相同,但速度较慢。或者也许学生没有四处张望,但老师扫描了更多的内容。我有两组数据,想看看我能得到的模型有多准确——我能在老师看起来行为的 50 像素内预测学生的观察行为吗?

0 投票
1 回答
1064 浏览

matlab - 如何在 HMM matlab 统计工具箱中定义发射矩阵

我是 Matlab 图像处理的新手,现在我正在使用带有 Matlab 统计工具箱的 HMM 进行字符识别。

我有一个输入图像宽度:400,高度:100,图像是二进制图像。我将每个输入图像分成 10 个水平块。在每个块中,我计算图像的密度。因此在每张图像中我可以获得 10 个特征向量。

假设 F 是图像的特征向量

F=[26 55 74 123 186 260 258 75 43 21]

我的问题是如何将特征向量转换为 hmm 序列,以便我可以使用 hmmtrain 命令使用它。在我的情况下,发射矩阵是什么?

在问这个问题之前,我已经看过Omid Sakhi的类似例子。但是,我还是不明白。

0 投票
1 回答
2357 浏览

c++ - 了解维特比算法

我正在尝试从这里实现一些代码

我已经用我的系数训练了 HMM,但不明白 Viterbi 解码器算法是如何工作的,例如:

但这是我不明白的:我试图比较两个语音信号(训练、样本)以找出最接近的可能匹配。例如,使用 DTW 算法,返回一个整数,然后我可以在其中找到最接近的整数,但是,使用此算法,它返回 a int* array,因此很难区分。

以下是当前程序的工作方式:

谁能告诉我维特比解码器如何解决识别从训练到输入的最佳路径的问题?我在解码路径上尝试了欧几里得距离和汉明距离,(q)但没有这样的运气。

任何帮助将不胜感激

0 投票
2 回答
7071 浏览

java - Java中的维特比算法

我正在学习 coursera NLP 课程,第一个编程任务是构建一个 Viterbi 解码器。我想我真的很接近完成它,但是有一些我似乎无法追踪的难以捉摸的错误。这是我的代码:

http://pastie.org/private/ksmbns3gjctedu1zxrehw

http://pastie.org/private/ssv6tc8dwnamn2qegdvww

到目前为止,我已经调试了“教学”相关的功能,所以我可以说算法的参数被正确估计了。特别感兴趣的是 viterbi() 和 findW() 方法。我正在使用的算法的定义可以在这里找到:http ://www.cs.columbia.edu/~mcollins/hmms-spring2013.pdf第 18 页。

我很难理解的一件事是,当 K = {1, 2} 时,我应该如何更新特殊情况的后向指针(在我的情况下,这是 0 和 1,因为我是零 -索引我的数组)分别在这些情况下我使用的参数是 q({TAGSET} | *, *) 和 q ({TAGSET} | *, {TAGSET})。

提示而不是用勺子喂的答案也将受到高度赞赏!

0 投票
2 回答
4569 浏览

matlab - 每个状态的隐马尔可夫模型多个观察值

我是隐马尔可夫模型的新手。我理解了主要思想,我尝试了一些 Matlab 内置的 HMM 函数来帮助我理解更多。

如果我有一系列观察和相应的状态,例如

我可以使用hmmestimate函数来计算转换和发射概率矩阵:

TRANS_EST =

EMIS_EST =

在这个例子中,观察只是一个单一的值。

下面的示例图片描述了我的情况。 我的情况 如果我有状态:{Sleep, Work, Sport},并且我有一组观察结果:{lightoff, light on, heart rate>100 .....} 如果我使用数字来表示每个观察结果,在我的情况下每个state 同时有多个观察值,

我不知道如何在 Matlab 中实现这一点以获得转换和发射概率矩阵。我很迷茫,下一步该怎么办?我是否使用了正确的方法?

谢谢!

0 投票
2 回答
1381 浏览

c# - C# HMM 手势识别使用 Kinect

我正在研究一种使用 Kinect 传感器进行手势识别的解决方案。现在我正在使用 Accord .NET 来训练 HMM。我有一个保存手势的数据集。该数据集有 11 个手势,每个手势有 32 帧,保存了 18 个点。

所以我有一个 (double [12] [32,18]) 输入数据集和一个 (int[12]) 输出数据集,但是当我这样做时:double error = teacher.Run(inputSequences, output),它给了我这个: “指定的参数超出了有效值的范围。”

有谁知道如何解决这个问题?在hmm老师上使用之前应该先处理数据集还是数据集可以这样?

0 投票
1 回答
2576 浏览

opencv - 手势/姿势识别的特征提取方法

我目前正在开发一个手语识别应用程序,我想使用隐马尔可夫模型作为分类阶段,这意味着我将对手势/姿势进行分类以获得相关的字母或单词。

我目前已经完成了检测手的第一阶段。目前,我可以获得一些可用于机器学习阶段的参数(特征),例如:

  • 手凸包
  • 凸面缺陷
  • 手心
  • 包围旋转的椭圆/矩形(例如获得旋转所需的任何角度)
  • 手的轮廓
  • 时刻(我不确定这些到底是什么)

这些都可以通过 openCv 完成。

我的问题:一旦我拥有了所有这些特征,我该如何执行“特征提取”阶段?即,如果机器学习算法,在这种情况下 HMM 需要一组概率,我该如何使用上述信息?

我的一个想法是创建一个特殊的数据结构,其中包含唯一标识每个手势的此类信息,但我如何将其提供给机器学习技术?(在这种情况下是隐马尔可夫模型)

谁能指导我在这个特定阶段至少应该寻找什么,或者指导我展示我真正遇到的困难是什么?

0 投票
1 回答
495 浏览

machine-learning - 隐藏马尔可夫模型下一个状态仅取决于前一个状态?那么之前的 n 个状态呢?

我正在研究原型框架。

基本上,我需要根据关于他/她的一些传感器数据(例如 GPS、运动、心率、周围环境读数、温度等)为每个人的生活方式生成模型或配置文件。

建议的模型或配置文件是个人生活方式模式的知识表示。也许是一个带有概率的图表。

我正在考虑使用隐马尔可夫模型来实现这一点。由于 HMM 中的状态可以是工作、睡眠、休闲、运动等。观察可以是一组各种传感器数据。

我对 HMM 的理解是,下一个状态 S(t) 仅取决于前一个状态 S(t-1)。然而实际上,一个人的活动可能取决于之前的 n 个状态。使用 HMM 仍然是个好主意吗?或者我应该使用其他更合适的模型吗?我看过一些关于二阶和多阶马尔可夫链的工作,它是否也适用于 HMM?

如果你能给我一个详细的解释,我真的很感激。

谢谢!!