确定隐藏马尔可夫模型中的隐藏状态数量

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

假设我从每一帧中提取了m维的特征。然后我将这些特征聚类成一个符号(用于可观察符号)。接着,我为k个类别创建了k个不同的HMM模型。

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

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

谢谢:)


回答:

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

你当前的方法是正确的。我几周前也做过同样的事情,并问过相同的问题。我构建了一个手势识别工具。

你说你有k个类别要识别,所以是的,你将训练k个HMM。对于每个HMM,你运行前向算法并获得P(HMM|observation),针对每个隐藏马尔可夫模型(或者也可以使用维特比解码)。然后你选择概率最高的那个。

将m维特征向量视为单个观察符号也是正确的。根据你的向量是什么样的,你可能想要使用连续隐藏马尔可夫模型或离散隐藏马尔可夫模型。使用离散模型通常更容易,并且在训练数据较少的情况下更容易训练。所以,如果你的特征向量空间是连续的,你可能需要考虑离散化,使所有值离散化(例如,通过均匀类别)。关于离散性的问题是:你将有多少个观察类别?

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

然而,我无法完全回答你关于隐藏状态数量的实际问题。根据我在其他领域学到的,似乎需要大量的基准测试和试验。例如,在语音识别中,我们为每个音素(人类声音)使用3个HMM状态,因为声音在开始、中间和结束时听起来不同。然后每个不同的音素得到一个三元组。但那当然是工程上的考虑。

在我的应用中,我是这样想的:我想定义手势并将它们与方向关联。比如open_firefox = [UP, RIGHT]。所以我决定为所有四个方向使用四个隐藏状态。我猜找到最佳状态数量很大程度上是关于工程和尝试不同方法的过程。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注