5

我正在学习用于对一系列 t 图像帧中的运动进行分类的隐马尔可夫模型。

假设我每帧都有 m 个特征维度。然后我将它聚集成一个符号(用于可观察符号)。我为 k 类创建了 k 个不同的 HMM 模型。

那么,如何确定每个模型的隐藏状态数以优化预测?

顺便说一句,我的方法正确吗?如果我误解了如何使用它,请纠正我:)

谢谢 :)

4

1 回答 1

8

“我的方法已经正确了吗?”

你目前的做法是正确的。几周前我也做过同样的事情,也问过同样的问题。我已经建立了一个手势识别工具。

您说您有 k 个要识别的类,所以是的,您将训练 k 个 HMM。对于每个 HMM,您运行 Forward 算法并P(HMM|observation)为每个隐藏的马尔可夫模型接收(或者 Viterbi 解码也是可能的)。然后你选择概率最高的那个。

将 m 维特征向量视为单个观察符号也是正确的。根据您的向量的样子,您可能希望使用连续隐马尔可夫模型或离散隐马尔可夫模型。使用离散的数据通常更容易训练,而且训练数据很少。因此,如果您的特征向量空间是连续的,您可能需要考虑离散化以使所有值离散(例如通过统一类)。关于离散性的问题是:你会有多少类观察?

“如何确定每个模型的隐藏状态数量以获得最佳预测?”

但是,我无法完全回答您关于隐藏状态数量的实际问题。从我在其他领域所学的内容来看,这似乎是很多基准测试和测试。例如,在语音识别中,我们为每个音素(人声)使用 3 个 HMM 状态,因为声音在开头、中间和结尾听起来不同。然后每个不同的音素得到一个三倍。但这当然是工程学。

在我自己的应用程序中,我是这样想的:我想定义手势并将它们与方向相关联。喜欢open_firefox = [UP, RIGHT]。所以我决定对所有四个方向使用四个隐藏状态。我想找出最好的状态数量与工程和尝试不同的事情有关。

于 2013-07-11T09:16:19.377 回答