2

私はこれを理解したと思っていました...しかし、私はまだ頭を包み込むことができません。私はOpenFstで遊んでいて、「対数」セミリングで「最短距離」がどのように計算されるかを理解しようとしています。次の小さなオートマトンでは、

http://i.imgur.com/FThh6.png

「最短距離」コマンドの結果は、

$ fstshortestdistance log.fst
0   0
1   -0.510825634
2   -2.60798359
3   -0.9162907

ログの最短距離の説明は、次のように与えられます。

対数セミリングでは、q へのパスの重みの (対数) 合計が計算されます。

私はかなりばかげているように感じますが、最終的な -2.6 に到達するために実際に何が起こっているのか理解できません。対数合計と通常の合計の考えられるすべてのバリエーションを試してみましたが、適用すべきではないように思われるものも含めて、-2.6 は得られませんでした。今、私を夢中にさせ始めています。

この場合の私の直感は、2 つの異なる文字列 (bc、bd) のそれぞれの合計パス確率を合計してから、最良の確率を返す必要があるということです。(bc) には 2 つのパスがあり、それらの確率の合計は 2/3 (非対数) になります。(bd) パスの確率は 1/3 です。しかし、これは間違いなく起こっていることではないので、何起こっているのでしょうか?

4

1 に答える 1

1

対数半環の 2 つの値 'x' と 'y' の対数合計は、次のように定義されます。

-log( exp(-x) + exp(-y) )

対数セミリングの最短距離は、定義したオートマトンに関連付けられた全尤度を計算する必要があります。パスの出力文字列は関係ありませんが、次のパスの重みが関連付けられた 3 つの異なるパスがあります。

x = (0,1,2):-.51083

y = (0,3,2):-1.2729 = -.91629 + -.35667

z = (0,3,2):-2.1202 = -.91629 + -1.204

取得したログサムに従って x、y、z を合計すると、

-log( exp(-x) + exp(-y) + exp(-z) ) = -2.607

これは、OpenFst が生成するものです。私の推測では、厄介な負の兆候を忘れてしまったのでしょう。

于 2012-01-31T15:29:53.663 に答える