問題タブ [viterbi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2066 参照

r - HMMガウス混合分布から次の観測値を取得する

長さ1000の連続した単変量xtsオブジェクトがあり、パッケージで使用するためにxというdata.frameに変換しましたRHmm

混合分布には5つの状態と4つのガウス分布があることをすでに選択しました。

私が求めているのは、次の観測の期待平均値です。どうすればそれを取得できますか?

だから私がこれまでに持っているのは:

  1. HMMFit()関数の実行からの遷移行列
  2. 混合物内の各ガウス分布の平均と分散のセット、およびそれぞれの比率。これらはすべて、HMMFit()関数から生成されました。
  3. viterbiHMMFit関数の出力を使用し、それを関数に入れるときの入力データに関連する過去の非表示状態のリスト

取得したものから次の非表示状態(つまり、1001番目の値)を取得し、それを使用してガウス分布から加重平均を取得するにはどうすればよいでしょうか。

次の部分が何であるかよくわからないので、かなり近いと思います...最後の状態は状態5です。次の状態を取得するために、遷移行列の5番目の行を何らかの方法で使用しますか?

私が求めているのは、次の観測で期待されるものの加重平均だけなので、次の隠れた状態は必要ありません。行5の確率に、各状態の比率に重み付けされた各平均を掛けますか?そしてそれをすべて一緒に合計しますか?

これが私が使用したコードです。

いつものようにどんな助けでも大歓迎です!

0 投票する
2 に答える
1690 参照

algorithm - ビタビ アルゴリズムを理解する

ビタビ アルゴリズムの正確なステップバイステップの例を探していました。

入力文を次のように文にタグ付けすることを検討してください。

そして、これから、最も可能性の高い出力を次のように生成したいと思います。

Trigram-HMM を使用して上記の出力を取得するには、Viterbi アルゴリズムをどのように使用すればよいでしょうか?

(PS:コードや数学表現ではなく、正確な段階的な説明を探しています。すべての確率を数値と仮定してください。)

ありがとうございます!

0 投票する
1 に答える
862 参照

graphics - ラテックスまたはGraphvizでビタビパスを視覚化する方法

この例のように、LaTeXまたはおそらくGraphvizでViterbiパスを視覚化する方法を探しています。

ドットである必要はありませんが、線の間の実際の値である可能性もあります。セル間に線があるテーブルのように。

これを行う方法を探してみましたが、おそらく適切なキーワードを使用していません。

0 投票する
3 に答える
7953 参照

algorithm - 遷移確率と放出確率を推定するためのビタビ トレーニングまたは Baum-Welch アルゴリズム?

ビタビ アルゴリズムを使用して、HMM で最も可能性の高いパス (状態のシーケンス) を見つけようとしています。ただし、観測 (データ) から推定する必要がある遷移行列と排出行列はわかりません。

これらの行列を推定するには、Baum-Welch トレーニング アルゴリズムと Viterbi トレーニング アルゴリズムのどちらを使用すればよいですか? なんで?

ビタビ トレーニング アルゴリズムを使用する必要がある場合、適切な疑似コードを提供してくれる人はいますか (見つけるのは簡単ではありません)。

0 投票する
0 に答える
826 参照

viterbi - ビタビ復号化の問題

ここ数週間、Viterbi C/C++ デコーダーを動作させようとしてきました。どういうわけか、私はそれを機能させることができません。私は最初に Phil Karn の FEC ライブラリから始めました: http://www.ka9q.net/code/fec/

しかし、このコードは 64 ビット Linux 用にコンパイルしたくありません。 次に、X86 アーキテクチャ用に最適化された特別な Viterbi デコーダーを生成するhttp://www.spiral.net/software/viterbi.htmlを見つけました。これを機能させてコンパイルすると、データがデコードされますが、データが正しくデコードされません。最後に、viterbi-3.0.1.tar と呼ばれる Phil Karn のライブラリの簡易バージョンに基づく別のライブラリを見つけました (リンクを思い出せません)。

Matlab で、すべてゼロ、すべて 1、および長さ 2048 ビットのランダム データの 3 つのテスト データ セットを生成しました。スパイラル デコーダーは、0 と 1 のデータ セットを正しくデコードしますが、ランダム データはデコードしません。

ここにテスト データ テストと共にコードを配置しました。 http://dl.dropbox.com/u/65739307/viterbicpp.tar.bz2

0 投票する
1 に答える
281 参照

algorithm - ビタビ検索-仮想確率

誰かが「はい」または「いいえ」のどちらを言っているかを識別するために、隠れマルコフモデルを構築しています。私は隠れマルコフモデルを開発し、このページからチュートリアルに出くわしました。

そして、このチュートリアルでは、次のように述べています。

この図は、確率の仮想行列を介して「はい」と「いいえ」の検索パスをトレースしています。「いいえ」のスコアは非常に低いですが、「はい」が語彙に含まれていなかった場合は、この単語の最も可能性の高いパスを見つけることができます。ビタビ検索は、次の擬似コードアルゴリズムを読むことで理解できます(Rabinerの論文、隠れマルコフモデルと音声認識の選択されたアプリケーションに関するチュートリアルから借用した表記法を使用)。

私は両方の論文を読みましたが、彼らが言うところにはまだ混乱しています。

私の質問は、この確率行列はどこから来るのかということです。たとえば、私は次のことを行いました。

  • オーディオファイルを読む
  • 考慮に値しないオーディオ信号を削除しました
  • 検討が必要な信号をブロックに分割する

これは、音素を含むブロックが残っていることを意味します。データのゼロクロッシングを計算したので、次のようになります。

「いいえ」の場合、これからのデータは非常に少ないですが、

「はい」の場合、これからのデータは非常に高くなります。

したがって、(上記の)例では、次のようになっています。

では、ゼロクロッシングの結果を確率として渡すことができますか?私は混乱していて、誰かがこれを手伝ってくれることを願っています。

0 投票する
2 に答える
7875 参照

algorithm - トップを見つける-HMMのkビタビパス

HMMで上位k個のビタビパスを見つけるアルゴリズムを作成する必要があります(通常のビタビアルゴリズムを使用して最適なパスを見つけます)。

状態Nで終わる上位K個のパスを含む状態NごとにサイズkのリストV_t、Nを保存する必要があると思いますが、そのリストを追跡する方法がわかりません。ありがとう

0 投票する
1 に答える
1182 参照

algorithm - ビタビ アルゴリズムで HMM を使用してタイプミスを修正する

入力ミスを修正するために Viterbi Algorithm で HMM を使用したいです。必要な確率を計算しましたが、Viterbi アルゴリズムを適用すると非常に悪い結果が得られました。コードを 1 行ずつチェックしましたが、エラーを見つけることができませんでした。

0 投票する
1 に答える
2357 参照

c++ - ビタビアルゴリズムを理解する

ここからいくつかのコードを実装しようとしています

また、係数を使用してHMMをトレーニングしましたが、ビタビ復号アルゴリズムがどのように機能するかを理解していません。たとえば、次のようになります。

しかし、これが私が理解していないことです。私は2つの音声信号(トレーニング、サンプル)を比較して、可能な限り最も近い一致を見つけようとしています。たとえば、DTWアルゴリズムでは、最も近い整数を見つけることができる単一の整数が返されますが、このアルゴリズムではaが返されるint* arrayため、区別するのは困難です。

現在のプログラムの仕組みは次のとおりです。

トレーニングから入力までの最適なパスを特定する問題に対して、ビタビデコーダーがどのように機能するかを教えてください。デコードパスでユークリッド距離とハミング距離の両方を試しました(q)が、そのような運はありませんでした。

どんな助けでも大歓迎です

0 投票する
2 に答える
7071 参照

java - Java のビタビ アルゴリズム

私は coursera NLP コースを受講しており、最初のプログラミング課題は、Viterbi デコーダーを構築することです。ほぼ完成に近づいていると思いますが、追跡できないと思われるとらえどころのないバグがあります。これが私のコードです:

http://pastie.org/private/ksmbns3gjctedu1zxrehw

http://pastie.org/private/ssv6tc8dwnamn2qegdvww

これまでのところ、「教育」関連の機能をデバッグしたので、アルゴリズムのパラメーターが正しく推定されていると言えます。特に興味深いのは、 viterbi() および findW() メソッドです。私が使用しているアルゴリズムの定義は、http ://www.cs.columbia.edu/~mcollins/hmms-spring2013.pdfの 18 ページにあります。

私が頭を抱えているのは、K = {1, 2} (私の場合、私はゼロなので、これは 0 と 1 です。これらの場合に使用しているパラメーターは、q({TAGSET} | *, *) および q ({TAGSET} | *, {TAGSET}) です。

スプーンでの回答ではなく、ヒントも大歓迎です。