問題タブ [hidden-markov-models]

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 投票する
5 に答える
28801 参照

hidden-markov-models - マルコフ連鎖と隠れマルコフモデルの違いは何ですか?

マルコフ連鎖モデルと隠れマルコフモデルの違いは何ですか? ウィキペディアを読んだことがありますが、違いがわかりませんでした。

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

java - HMM をトレーニングするための MFCC データ形式

mfcc 機能と隠れマルコフ モデルを使用して、Java で音声分類システムを開発しようとしています。私はこの研究論文に従っています: http://acccn.net/cr569/Rstuff/keys/bathSoundMonitoring.pdf .

アルゴリズムは次のように説明されています。

サウンド イベントのサンプルに対応する各サウンド ファイルは、事前に強調され、50% のオーバーラップでハミング ウィンドウ (25 ミリ秒) によってウィンドウ化されたフレームで処理されました。各フレームを特徴付ける 13 次の MFCC で構成される特徴ベクトル。左から右への 6 状態連続密度 HMM を使用して、状態スキップなしで各サウンドをモデル化しました。各 HMM 状態は、2 つのガウス混合成分で構成されていました。モデルの初期化段階が完了した後、すべての HMM モデルが 3 回の反復サイクルでトレーニングされました。

サンプルサウンドからの特徴抽出である最初の部分は既に動作しています。その結果、各行の 13 列で構成される double の 2 次元配列が得られます (各行はサウンドのフレームを表します)。今私の問題は、このデータを使用してうーんを訓練する方法です。

jahmm ライブラリを使用しています。これまで、ライブラリがどのように機能するかを一般的に理解するために、いくつかのサンプル コードを作成しました。

私の質問は次のとおりです。

Q1: hmm をトレーニングするために、mfcc データをどの形式で渡す必要がありますか? (realSeuqences 行のコメントを参照)

Q2: 音声認識では、同じ単語を 10 回繰り返してシステムをトレーニングする必要がある場合があります。それらの 10 個のサンプルでうーん 1 つをトレーニングするということですか? はいの場合、同じ音の異なるサンプルを使用して 1 つのうーんをトレーニングする方法。それとも、10個の個別に訓練されたものですが、その言葉でラベル付けされていますか?

Q3: 音声認識に関して 2 つの hmm モデルを比較する方法。viterbi または Kullback Leibler Distance を使用する方が良いですか?

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

matlab - Keving Murphy の hmm matlab ツールボックス アサーション エラー

隠れマルコフ モデルを使用する必要があるプロジェクトに取り組んでいます。Kevin Murphy のツールボックスをダウンロードしました。使用上の問題がいくつかあります。ツールボックスの Web ページで、彼は dhmm_em と dhmm_logprob の最初の入力がシンボル シーケンス データであると述べています。彼らの例では、行ベクトルをデータとして与えています。したがって、シンボル シーケンスを行ベクトルとして指定すると、エラーが発生します。

ただし、このエラーが発生する前に、コードはいくつかのシンボル ベクトルに対して機能します。データを列ベクトルとして与えると、関数は正常に動作し、エラーは発生しません。では、なぜこのエラーが発生するのでしょうか?

単一のベクトルではなくベクトル セットを指定する必要があると言うかもしれませんが、特徴ベクトルを構造体に収集して行ベクトルをそのまま指定しようとしましたが、何も変更されず、まだアサーション エラーが発生します。

ちなみに、私のシンボルシーケンスにはゼロがありません。例で示したのとほぼ同じようにすべてを行っているので、誰かが私を助けてくれれば幸いです。

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

matlab - MATLAB の隠れマルコフ モデル

11 の状態と遷移確率行列がありますが、モデルが非表示になっていないため、排出量はありません。状態 (1,2,3, ..., 11) のみで構成されています。
遷移確率行列に基づいてランダムな状態を生成したいのですが、HMM ツール ボックスには出力確率行列が必要です。私は何をすべきか?

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

java - 隠れマルコフ モデルのしきい値処理

mfcc と隠れマルコフ モデルを使用した音声認識の概念実証システムを開発しました。既知の音でシステムをテストすると、有望な結果が得られます。システムは、未知の音が入力されると、最も近い一致の結果を返しますが、スコアはそれほど明確ではなく、未知の音であると判断することはできません。

私は 3 つの隠れマルコフ モデルを訓練しました。次に、目に見えないデータでそれらをテストし、次の結果を取得します。

ここでは、入力は未知の音ですが、しきい値処理/ガベージ フィルタリングのシステムがないため、最も近い一致が返されます。

キーワードのスポッティングでは、ガベージ モデルまたはフィラー モデルを使用して OOV (語彙外) の音を除外できることを知っていますが、未知の単語の有限セットを使用してトレーニングされているため、これをシステムに適用できないと言われています。システムが記録する可能性のあるすべての音を知っているわけではありません。

音声認識システムで同様の問題をどのように解決しますか? また、誤検知を回避するために問題を解決するにはどうすればよいですか?

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

python - GHMMで単一の共分散行列を使用するにはどうすればよいですか?

GHMMライブラリを使用して隠れマルコフモデル(HMM)をトレーニングしようとしています。これまでのところ、州ごとに単一のガウス分布を使用して、離散モデルと連続モデルの両方をトレーニングすることができました。

ここにそれを行う方法についての本当に良い例があります。

ただし、 (各状態に1つではなく)すべての状態にまたがる単一の共分散行列を使用して、連続HMMをトレーニングしたいと思います。それはGHMMlibで可能ですか?もしそうなら、私はいくつかの例を見たいと思います。そうでない場合は、誰かが私に他のコードを教えてもらえますか、それとも実際にそれを実行できる別のHMM python / cライブラリを紹介してもらえますか?

ありがとうございました!

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

classification - 隠れマルコフモデル (HMM) に複数のデータストリームを同時に供給する方法は?

8 つの加速度計で構成されるボディ センサー ネットワークを構築しました。各サンプル (約 30 Hz) で、各加速度計から XY 値と Z 値が得られます。

1 つの加速度計で構成されるデータストリームの分類に jahmm Java ライブラリを使用しました。これはうまくいきます。しかし今、コードを拡張して複数の加速度計を供給できるようにする方法について混乱しています。

単一のデータストリームは次のようになります。

ライブラリを使用すると、特徴ベクトルの次元を定義できます。上記のストリームでは、次元は 3 です。次元を 3 x 8 = 24 に上げて、すべての加速度計を単一の 24D 特徴ベクトルに単純に連結することを考えました。

これは行くべき道ですか、それとも私の結果を悪化させますか?

編集:

これまでにデータを収集しましたが、次のようになります (1 人の参加者の場合):

{... ... ...} の間の値は、1 つの加速度計を表します。サンプルごとに(30hz程度)、8つの加速度計があります。1 つのサンプルは [...] 内にあります。ジェスチャーの例ごとに、[...]の約40ブロックがあります

最初のセンサー ([] の各ブロックの最初の {}) を取得し、結果のシーケンスでモデルを作成し、2 番目から 8 番目まで同じことを提案しますか?

これにより、ジェスチャーごとに 8 つのモデルが得られます。テスト シーケンスよりも 8 つの確率が得られます。したがって、オーバーレイクラスを取得するには、ある種の複数投票が必要になります。これはあなたが意味したものですか?

ありがとうございました

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

classification - WEKA ツールキットの隠れマルコフ モデルに相当するものは何ですか?

8 つの加速度計で構成されるセンサー ネットワークからのデータ ストリームを分類する必要があります。各加速度計は、XY 値と Z 値を提供します。したがって、各サンプルで、8 x 3 = 24 の加速度値があります。約 30 Hz でサンプリングし、演奏時間は約 0.5 秒です。

最初はこれに隠れマルコフ モデルを使用することを考えましたが、WEKA ツールキットはそのようなものを提供していないようです。これに相当するWEKAは何ですか?

ありがとうございました。

編集:データをフォーマットする方法は?

データを収集したので、分類に HMMWeka を使用したいと考えています。ウェブサイトでは、次のように述べています

データ インスタンスには、単一の公称クラス属性と単一のリレーショナル シーケンス属性が必要です。この関係属性のインスタンスは、単一の名義データ インスタンス (離散 HMM の場合) または多変量の数値属性 (ガウス HMM の場合) のいずれかで構成されます。

しかし、この要件を満たすためにデータをどのように提示する必要があるのか​​ 混乱しています。

私のデータは次のようになります。

したがって、すべてのジェスチャーについて、いくつかの例があります。{} の間のデータは、1 つの加速度計の XYZ 値を表します。オーバータッチ [ ... ] は、8 つの加速度計を含む 1 つのサンプルを表します。

これから ARFF ファイルを作成する方法がわかりません。

ありがとうございました

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

algorithm - 未知のサイクル(時系列)で位置を検出するためのアルゴリズム

ボートが次に訪れる時間を確率として予測したいとします。ボートサイクルの任意の位置から観察を開始します。観察を行うときは、ボートが表示されているかどうかのみを記録できます(サイクルの正しいポイントである場合、ボートは常に表示されていると想定します)。この世界では、ボートのサイクルの長さも不明ですが周期的であり、ボートの訪問時間は不明ですが、常にサイクルの長さよりも短くなっています。また、サイクルはおそらく変化しない固定された自然現象であると仮定します。

ケース1.観察の最初の1時間は、ボートが見えません。したがって、次の1時間にボートが存在する確率は任意です。ボートを観察する2時間目は、3時間目に高い確率を予測します。4時間目にはボートを観察しません。これで、ボートが通常2時間(2時間目と3時間目)観察可能であることがわかります。私たちは観察を続けています。7時間目にボートが再び見えます。この時点でのみ、サイクルの長さ(5時間)とボートが観測可能な期間(2時間)の両方がわかります。

ケース2。観察の最初の1時間は、ボートが見えます。次の1時間は、予測される確率が高くなります。4時間目には、ボートは観察されません。この時点で、ボートの視界は少なくとも3時間です。5、6、7、8時間目に再びボートを観察し、9時間目にはボートがないことを確認します。9時間後にのみ、サイクルは5時間、視程は4時間であると安全に言えます。

ケース3。最初の1時間はボートが見えます。あなたは3時間眠りにつく。5時間目には、ボートは見えません。あなたは3時間眠りにつく。9時間目にボートが見えます。10、11、12時間にボートを見る確率はどれくらいですか?

これを解決するためにどのアルゴリズムを使用できますか?隠れマルコフモデルは根本的な現象があるのでうまくいくのではないかと思いますが、直接観測することはできません。しかし、この場合、現象は完全にはわかっていません。私の特定のケースでは、平均サイクル長でアルゴリズムを初期化できます。このアルゴリズムを作成する本当の動機は、観測が遠く、その間にほとんどないことです。このプログラムは、サイクルの長さとサイクル内の位置がわかっていれば些細なことなので、トレーニングフェーズで最も価値があります。

以下は、平均履歴サイクル長8時間、ボート持続時間2時間を使用して、 0、1、2、および3回の連続観測(Xはボートを見た観測、Oはボートなしを意味する)で出力できるものです。チャートをよく見ると、ボートが戻る可能性のある場所の周りに確率が高くなっていることがわかります。 内部確率分布

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

classification - Jahmm lib: ForwardBackwardScaledCalculator.lnProbability() から負の値を解釈する方法は?

加速度計シーケンスの分類には Jahmm ライブラリを使用します。

モデルを作成しましたが、次の方法でモデルのテスト シーケンスの確率を計算しようとすると:

-1278.0926336276573 のような負の値を取得します。

ライブラリのコードのコメントには、lnProbability メソッドが次のように記述されています。

このオブジェクトを生成したシーケンスの確率のネイピア対数を返します。

戻り値: 対象のシーケンスのネイピア対数の確率

しかし、そのような対数のうちの 2 つを比較するにはどうすればよいでしょうか。2 つのテスト シーケンスを使用して 2 つの異なるモデルでメソッドを呼び出すので、4 つの確率が得られます。

しかし、この文脈では、ゼロに近づくほど、テスト シーケンスがモデルに似ているということでしょうか (つまり、この例では、分類精度 = 100% ですか?)

ありがとうございました