forward-backwardアルゴリズムとViterbiアルゴリズムの違いは何ですか?


44

私は、隠れマルコフモデル(HMM)の推論のための前方後方アルゴリズムビタビアルゴリズムの違いを知りたいです。


2
アルゴリズムの説明(ここここ)は質問に答えますか、それとも何か他のものを探していますか?どのアルゴリズムをいつ使用するのか疑問に思っていますか?それぞれのメリットについての議論をお探しですか?
MånsT

回答:


65

最初に少し背景を説明すると、状況が少しはっきりするかもしれません。

HMM(隠れマルコフモデル)について話すとき、一般的に考慮すべき3つの問題があります。

  1. 評価問題

    • 評価問題は質問に答えます:特定のモデルによって特定のシンボルシーケンスが生成される確率はどのくらいですか?
    • 評価には、フォワードアルゴリズムまたはバックワードアルゴリズムの 2つのアルゴリズムを使用しますフォワードアルゴリズムバックワードアルゴリズムを混同しないでください)。
  2. デコードの問題

    • デコードの問題は、一連のシンボル(観測)とモデルが与えられた場合、そのシーケンスを生成した状態の最も可能性の高いシーケンスは何かという質問に答えます。
    • デコードには、Viterbiアルゴリズムを使用します
  3. トレーニングの問題

    • トレーニング問題は質問に答えます:モデル構造と一連のシーケンスが与えられると、データに最も適合するモデルを見つけます。
    • この問題には、次の3つのアルゴリズムを使用できます。
      1. MLE(最尤推定)
      2. ビタビトレーニング(ビタビデコードと混同しないでください)
      3. Baum Welch =前方後方アルゴリズム

要約すると、一連のシーケンスでモデルをトレーニングするときに、デコードの問題にビタビアルゴリズムを使用し、Baum Welch / Forward-backwardを使用します。


Baum Welchは次のように機能します。

シーケンスのトレーニングセット内の各シーケンス。

  1. フォワードアルゴリズムを使用してフォワード確率を計算する
  2. 後方アルゴリズムで後方確率を計算する
  3. モデルの遷移に対する現在のシーケンスの寄与を計算し、モデルの放出確率に対する現在のシーケンスの寄与を計算します。
  4. 新しいモデルパラメーター(開始確率、遷移確率、放出確率)を計算する
  5. モデルの新しい対数尤度を計算する
  6. 対数尤度の変化が所定のしきい値より小さい場合、または最大反復回数が経過した場合に停止します。

ビタビデコードの方程式とトレーニングアルゴリズムの完全な説明が必要な場合はお知らせください。正しい方向に向けることができます。


24

Forward-Backwardは各状態の限界確率を示し、Viterbiは状態の最も可能性の高いシーケンスの確率を示します。たとえば、HMMタスクが毎日の晴天と雨の天気を予測する場合、Forward Backwardは毎日「晴れ」である確率を通知し、Viterbiは最も可能性の高い晴れ/雨のシーケンスを提供し、このシーケンスの確率。


15

{2}からの次の2つのスライドは、HMMで使用される他のすべての典型的なアルゴリズムの中で、順方向アルゴリズムとビタビアルゴリズムを位置付けるのに非常に適していると思います。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ノート:

  • πxは観測された放射、はHMMのパラメーターです。π
  • パス=放出のシーケンス
  • デコード=推論
  • 学習=トレーニング=パラメーター推定
  • Baum–Welchは前方後方アルゴリズムと同じであると主張する論文もありますが、MasterfoolとWikipediaに同意します。Baum–Welchは前方後方アルゴリズムを使用する期待値最大化アルゴリズムです。2つの図は、Baum–Welchとforward–backwardアルゴリズムを区別しています。

参照:


12

Moratの答えは1つの点で偽です。Baum-Welchは、HMMのパラメーターのトレーニングに使用される期待値最大化アルゴリズムです。これは、使用して各反復の間に前後アルゴリズムを。フォワード/バックワードアルゴリズムは、実際にはフォワードアルゴリズムとバックワードアルゴリズムを組み合わせたものです。フォワード/バックワードアルゴリズムは、HMMのパラメーターのトレーニングには使用されず、平滑化のみに使用されます。つまり、状態シーケンスの周辺尤度を計算します。

https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm

https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm


2

@Yaroslav Bulatovには正確な答えがありました。フォワードアルゴリズムとビタビアルゴリズムの違いを伝えるために、その例を1つ追加します。

このHMM(Wikipedia HMMページから)があるとします。モデルは既に指定されているため、ここではデータタスクから学習する必要はありません。

ここに画像の説明を入力してください


データが長さ4のシーケンスであるとします。(Walk, Shop, Walk, Clean)。2つのアルゴリズムは異なるものを提供します。

  • 前方後方アルゴリズムは各隠れた状態の確率を与えるでしょう。以下に例を示します。表の各列の合計はことに注意してください。1

ここに画像の説明を入力してください

  • ビタビアルゴリズムは、隠れた状態の最も可能性の高いシーケンスを提供します。以下に例を示します。また、この隠された状態シーケンスに関連する確率もあります。このシーケンスには最大の問題があります。他のすべてのシーケンス(例:allからall までのシーケンス)。24=16SunnyRainy

ここに画像の説明を入力してください


ここではいくつかあるRデモ用のコードは、

library(HMM)
# in education setting,
# hidden state: Rainy and Sunny
# observation: Walk, Shop, Clean

# state transition
P <- as.matrix(rbind(c(0.7,0.3),
                     c(0.4,0.6)))

# emission prob
R <- as.matrix(rbind(c(0.1, 0.4, 0.5),
                     c(0.6,0.3, 0.1)))


hmm = initHMM(States=c("Rainy","Sunny"),
              Symbols=c("Walk","Shop", "Clean"),
              startProbs=c(0.6,0.4),
              transProbs=P,
              emissionProbs=R)
hmm


obs=c("Walk","Shop","Walk", "Clean")
print(posterior(hmm,obs))
print(viterbi(hmm, obs))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.