【问题标题】:Viterbi Algorithm Sequence finding维特比算法序列查找
【发布时间】:2014-06-27 11:54:16
【问题描述】:

我正在尝试理解维特比算法。

状态是; S1、S2、S3、开始、结束

这些值被舍入和截断。

平滑状态转换表如下;

  S1  S2  S3 B E

S1 -0.7 -1.6 -1.6 -INF -2.0

S2 -2.0 -1.3 -0.7 -INF -2.0

S3 -1.3 -0.7 -2.0 -INF -2.0

B -1.2 -1.2 -1.2 -INF -1.9

E -INF -INF -INF -INF -INF

从状态到红、绿、蓝的平滑发射表;

  RED GREEN BLUE

S1 -0.9 -1.2 -1.6

S2 -1.6 -0.9 -1.2

S3 -1.6 -1.6 -0.6

B -INF -INF -INF

E -INF -INF -INF

问题是; 已经看到的符号是; 红红绿蓝

最有可能的状态是什么?

因此;

我根据上面的值创建了维特比算法矩阵;

第一行代表看到红色符号时的 S1、S2、S3 值,就像看到红色、绿色和蓝色时的 S1、S2、S3 值的其余行一样。

第一行是我计算出来的;

通过取它们的自然对数来平滑值,因此我将值相加而不是相乘。

第一次看到红色;

δ(S1) = MAX{P(S1|B)+P(R|S1)+δ(B)} = -1.2 - 0.9 + 0= -2.1

δ(S2) = MAX{P(S2|B)+P(R|S2)+δ(B)} = -1.2 - 1.6 + 0= -2.8

δ(S3) = MAX{P(S3|B)+P(R|S3)+δ(B)} = -1.2 - 1.6 + 0= -2.8

就像上面一样,看到下一个红色;

δ(S1) = MAX{ (P(S1|S1)+P(R|S1)+δ(S1) ), ( P(S1|S2)+P(R|S2)+δ(S2) ), ( P(S1|S3)+P(R|S3)+δ(S3) )}

= MAX{ (-0.7-0.9-2.1),(-1.6-1.6-2.8), (-1.6-1.6-2.8) } = MAX{-3.7, -6, -6}

最大值为 -3.7,因此看到 RED 时的 S1 值; -3.7 。其余数值如上计算。

维特比算法矩阵;

  S1  S2  S3 B E

红色 -2.1 -2.8 -2.8 -INF -INF

红色 -3.7 -5.2 -5.2 -INF -INF

绿色 -5.8 -6.3 -7.0 -INF -INF

蓝色 -8.1 -8.6 -7.8 -INF -INF

这个例子的答案表明最有可能的状态是; S1、S1、S2、S3

但不应该这样; S1, S1, S1, S3? 因为第一个红色的最大值是 -2.1,属于 S1,第二个红色的最大值是 S1,第三个红色的最大值是 S1,蓝色 S3价值是最高的。我可能是错的,因为我实际上无法理解 Viterbi 的动态编程方法。

【问题讨论】:

  • 这是怎么回事?您的表应该包含 概率,即 [0,1] 中的值,而不是 -INF 之类的?请解释一下。
  • 我的表包含概率,但是通过取其自然对数来平滑这些值,这就是为什么它是负数。存在无穷大,因为这些状态或符号与状态之间没有转换。

标签: machine-learning nlp data-mining hidden-markov-models viterbi


【解决方案1】:

您应该开始相信成熟的算法;-)。说真的,你在前两步的计算中没有错,随着算法以同样的方式进行,我猜你在接下来的步骤中也没有。

那么这里发生了什么?我猜您的错误(imo,这不是错误,而是您尝试理解事物是一件好事)是您没有将最后一步纳入您的想法。事实上,如果你有状态序列 RED,RED,GREEN,你的结果就是 S1,S1,S1。

但是,当您现在添加下一个信号 BLUE 时,算法会考虑到转换 S1->S3(这是 BLUE 的首选状态)比 S2->S3 不太可能发生。因此它支持 S1,S1,S2,S3 而不是 S1,S1,S1,S3,尽管后者会单独最小化前三个信号。

【讨论】:

  • 感谢您的回答。这是我无法理解的一点。 S1->S3 如何比 S2->S3 更不可能?你是根据维特比算法矩阵找到的吗?你能解释一下吗?我还有一个问题,你怎么能找到最后的概率(S1,S1,S1,S3 序列)?
  • 我在转换矩阵中找到了它:P(S1->S3)=-1.6, P(S2->S3)=-0.7。 (--到目前为止,我只考虑了你的发射和转换矩阵。)正是由于这种巨大的差异,选择了 ..,S1,S2,S3 来支持 ..S1,S1,S3(即使 S1- >S1 同样比 S1->S2 更有可能)。我建议您使用 RED、GREEN、BLUE 再次尝试完整的算法(因为这比文字解释更容易)。此外,我不明白你的第二个问题是什么意思。
猜你喜欢
  • 1970-01-01
  • 2013-02-25
  • 2012-04-01
  • 1970-01-01
  • 2011-05-02
  • 2011-12-22
  • 2015-01-02
  • 2021-09-23
  • 2017-03-24
相关资源
最近更新 更多