难以理解使用维特比算法进行语法解析的隐马尔可夫模型

机器算法验证 机器学习 matlab 马尔科夫过程 隐马尔可夫模型
2022-04-13 14:29:06

我打算应用 Kevin Murphy 的隐马尔可夫模型(HMM) 工具箱。我有一套生产规则(任意)A0AB[p=1],AaC[p=1],BbbC[p=0.5],Bb[p=0.5]在哪里A0是开始符号,A、B、C 是非终结符,a 和 b 是终结符,概率放在括号中。观测值为 {aabc}。

我不知道如何使用 Viterbi 解析算法,也无法理解要在工具箱中使用的参数中的所有值。谁能用一个简单的例子解释如何使用该程序来选择最大似然解析以及如何训练?

目标是对语言或文本字符串进行分类。除了语言之外的任何其他示例也会有所帮助。主要问题是如何在工具箱中输入所有这些数据以训练 HMM 以及如何将其用于任务,因为其中的 evrything 使用 rand 函数,我如何自定义它?

  1. 状态数 Q=4 ? (A0, A, B, C)
  2. 长度T=4的观测符号数;序列数 nex=1?
1个回答

是的,好的。我刚刚做了一些工作。即使我没有超过所有的数学,我也设法做到了。

编辑:

这是一些有用的资源:

我已经做了一些手势识别,所以我的资源偏向于这个特定的应用程序,但你可以找到它背后的序列分类框架。

  1. 一些不错的幻灯片
  2. 其他一些很好的幻灯片,最后一个有很好的例子和 MATLAB 代码
  3. 与用于手势识别的 MATLAB/OCTAVE 代码的良好链接
  4. 另一个清晰、易于理解的良好链接,所有源代码均为 c#。在此,还有一个基本序列分类器作为示例,它显示了一些训练值和一些新序列的对数概率。

为了让我的工作完成,我从中获取了初始值(字母表和隐藏状态的数量 == 矩阵的大小) ,然后我就开始使用它们了。

我还使用用于线性代数(矩阵)演算的犰狳库在 C++ 中重写了 kevin murphy matlab 代码的一小部分。如果您对此感兴趣,请告诉我。

希望能帮助到你。