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