我已经实现了k-best Viterbi算法,以便通过HMM提取k-best路径,如here所述。但是,如果 k 大于隐藏状态的数量,我会收到错误。
请考虑以下事项:在 t 的第一次观察时,每个状态 j 的每个 k 都是相同的(即所有路径到那状态是一样的,因为这是第一次观察)。然后,我想在 t + 1 时计算状态 i 的k最佳路径。为了做到这一点,我在 t 时提取了k-best前导路径。但是,由于 t 中每个状态的所有路径都相同,因此对于我的状态 i ,我最终会得到相同的最佳前导状态 k 次。 (同样适用于 t + 1 时的所有状态)。这有效地导致所有路径都是相同的路径(第一最佳)。
正如literature中所建议的那样,我忽略了在寻找k-best前身状态时已经采取的路径。但是,这有效地让我在 t 的时候使用 N 不同的路径,其中 N 指的是隐藏状态的数量。因此,选择 k 大于 N 会导致在 t 时查找k-best前导路径时出错。
我希望我努力的目标得以实现。显然,我在这里遗漏了一些东西,但我无法弄清楚是什么。