我正在学习隐藏马尔可夫模型,用于对t图像帧序列中的运动进行分类。
假设每个帧都有m个特征尺寸。然后我将它聚类成一个符号(用于可观察的符号)。我为k类创建了k个不同的HMM模型。
然后,如何确定每个模型的隐藏状态数以优化预测?
顺便问一下,我的做法是否正确?如果我误解了如何使用它,请纠正我:)谢谢:)
答案 0 :(得分:8)
您目前的做法是正确的。几个星期前我做了同样的事情并提出了同样的问题。我已经构建了一个手势识别工具。
你说你想要识别k级,所以是的,你将训练k HMM。对于每个HMM,您运行前向算法并接收每个隐藏马尔可夫模型的P(HMM|observation)
(或者也可以进行维特比解码)。然后你拿一个概率最高的那个。
将m维特征向量视为单个观察符号也是正确的。根据矢量的外观,您可能希望使用连续隐马尔可夫模型或离散隐马尔可夫模型。使用离散的工作通常更容易,更容易训练,只需很少的训练数据。因此,如果您的要素向量空间是连续的,您可能需要考虑离散化以使所有值离散(例如通过统一类)。 关于离散性的问题是:你会有多少类观察?
但是,我无法完全回答您关于隐藏状态数量的实际问题。从我在其他领域所教授的内容来看,它似乎是很多基准测试和测试。例如。在语音识别中,我们对每个音素(人声)使用3个HMM状态,因为声音在开始,中间和结尾时听起来不同。然后每个不同的phonem获得一个三倍。但那当然是工程学。
在我自己的应用程序中,我这样想:我想定义手势并将它们与方向联系起来。像open_firefox = [UP, RIGHT]
一样。所以我决定在所有四个方向上使用四种隐藏状态。
我想找出最好的州数是关于工程和尝试不同的东西。