私は、隠れマルコフモデル(HMM)の推論のための前方後方アルゴリズムとビタビアルゴリズムの違いを知りたいです。
私は、隠れマルコフモデル(HMM)の推論のための前方後方アルゴリズムとビタビアルゴリズムの違いを知りたいです。
回答:
最初に少し背景を説明すると、状況が少しはっきりするかもしれません。
HMM(隠れマルコフモデル)について話すとき、一般的に考慮すべき3つの問題があります。
評価問題
デコードの問題
トレーニングの問題
要約すると、一連のシーケンスでモデルをトレーニングするときに、デコードの問題にビタビアルゴリズムを使用し、Baum Welch / Forward-backwardを使用します。
Baum Welchは次のように機能します。
シーケンスのトレーニングセット内の各シーケンス。
ビタビデコードの方程式とトレーニングアルゴリズムの完全な説明が必要な場合はお知らせください。正しい方向に向けることができます。
Forward-Backwardは各状態の限界確率を示し、Viterbiは状態の最も可能性の高いシーケンスの確率を示します。たとえば、HMMタスクが毎日の晴天と雨の天気を予測する場合、Forward Backwardは毎日「晴れ」である確率を通知し、Viterbiは最も可能性の高い晴れ/雨のシーケンスを提供し、このシーケンスの確率。
{2}からの次の2つのスライドは、HMMで使用される他のすべての典型的なアルゴリズムの中で、順方向アルゴリズムとビタビアルゴリズムを位置付けるのに非常に適していると思います。
ノート:
参照:
Moratの答えは1つの点で偽です。Baum-Welchは、HMMのパラメーターのトレーニングに使用される期待値最大化アルゴリズムです。これは、使用して各反復の間に前後アルゴリズムを。フォワード/バックワードアルゴリズムは、実際にはフォワードアルゴリズムとバックワードアルゴリズムを組み合わせたものです。フォワード/バックワードアルゴリズムは、HMMのパラメーターのトレーニングには使用されず、平滑化のみに使用されます。つまり、状態シーケンスの周辺尤度を計算します。
https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm
@Yaroslav Bulatovには正確な答えがありました。フォワードアルゴリズムとビタビアルゴリズムの違いを伝えるために、その例を1つ追加します。
このHMM(Wikipedia HMMページから)があるとします。モデルは既に指定されているため、ここではデータタスクから学習する必要はありません。
データが長さ4のシーケンスであるとします。(Walk, Shop, Walk, Clean)
。2つのアルゴリズムは異なるものを提供します。
Sunny
Rainy
ここではいくつかある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))