隠れマルコフモデルとニューラルネットワークの違いは何ですか?


40

私は統計に足を踏み入れたばかりなので、この質問が意味をなさない場合は申し訳ありません。私はマルコフモデルを使用して、隠れた状態(不公平なカジノ、サイコロロールなど)とニューラルネットワークを予測し、検索エンジンでのユーザークリックを調べました。どちらも、観測を使用して把握しようとしている隠された状態がありました。

私の理解では、それらは両方とも隠れ状態を予測するので、ニューラルネットワークでマルコフモデルをいつ使用するのだろうか?それらは、同様の問題に対する異なるアプローチですか?

(私は学習に興味がありますが、別の動機もあります。隠れたマルコフモデルを使用して解決しようとしている問題があります。


2
:あなたはここで見たいと思うかもしれません stats.stackexchange.com/questions/4498/...
Nucular

答えを選んでもよろしいですか、探しているものをさらに明確にしますか?
共役14年

回答:


27

隠されているものと観察されているもの

隠れマルコフモデルに隠れているものは、離散混合モデルに隠れているものと同じです。そのため、明確にするために、隠れ状態のダイナミクスを忘れ、例として有限混合モデルに固執します。このモデルの「状態」は、各観測の原因となったコンポーネントの識別情報です。このクラスのモデルでは、このような原因は観察されないため、「隠れた原因」は統計的に、観察されたデータには限界依存性があるという主張に変換されます。そして、ソースコンポーネントは、この統計的な関係を真にするものであると推定されます。

シグモイド中間ユニットを備えたフィードフォワード多層ニューラルネットワークに隠れているのは、推論のターゲットである出力ではなく、それらのユニットの状態です。ネットワークの出力が分類、つまり可能な出力カテゴリにわたる確率分布である場合、これらの隠されたユニット値は、カテゴリが分離可能な空間を定義します。このようなモデルを学習するコツは、問題が線形になる隠れた空間を作成することです(入力ユニットからマッピングを調整することにより)。その結果、システム全体から非線形の決定境界が可能になります。

生成的と差別的

混合モデル(およびHMM)は、データ生成プロセスのモデルであり、尤度または「フォワードモデル」とも呼ばれます。各状態の事前確率に関するいくつかの仮定と組み合わせると、ベイズの定理を使用して隠れ状態の可能な値の分布を推測できます(生成的アプローチ)。「事前」と呼ばれますが、尤度の事前とパラメータの両方が通常データから学習されることに注意してください。

混合モデル(およびHMM)とは対照的に、ニューラルネットワークは出力カテゴリの事後分布を直接学習します(判別アプローチ)。これは、出力値が推定中に観察されたために可能です。また、それらが観察されたため、混合などの尤度の事前および特定のモデルから事後分布を構築する必要はありません。事後はデータから直接学習されるため、より効率的でモデルへの依存度が低くなります。

ミックスアンドマッチ

物事をより混乱させるために、たとえば混合モデル(またはHMM)の状態が実際に観察される場合など、これらのアプローチを混合することができます。それが当てはまる場合、およびここに関係のない他の状況では、生成モデルで差別的に訓練することが可能です。同様に、HMMの混合モデルマッピングを、より柔軟なフォワードモデル(ニューラルネットワークなど)に置き換えることができます。

質問

そのため、両方のモデルが隠れた状態を予測するということはあまり真実ではありません。HMM 、フォワードモデルが期待している種類だけではありますが、隠れ状態を予測するために使用できます。ニューラルネットワークを使用して、まだ観測されいない状態、たとえば予測子が利用可能な将来の状態を予測できます。この種の状態は、原則として隠されていません。まだ観察されていません。

どちらを使用するかはいつですか?私の経験では、ニューラルネットワークはやや厄介な時系列モデルを作成します。また、出力を観察したことを前提としています。HMMはそうではありませんが、隠された状態が実際に何であるかを実際に制御することはできません。それにもかかわらず、それらは適切な時系列モデルです。


2
+1これはとても良いです。:Similarly it is possible to replace the mixture model mapping of an HMM with a more flexible forward model, e.g., a neural network.では、排出確率p(Observed | Hidden)をフィードフォワードNNに置き換えることを意味しますか?いくつかの場所でこれに遭遇しましたが、説明はありません。彼らはそれを実装したと言っているだけです。排出量を学習するためのMLEステップに取って代わるものと思われますが、その方法は理解できません。コードや説明的な例を知っていますか?どんなポインタも歓迎します、ありがとう。
ジュバル14

それはあまり使用されていないようです(ここでMLの人が私を修正できます)。Thaは、状態ベクトルを知ることを条件に(またはEMアルゴリズムのように少なくともその期待値を知ることで)状態ベクトルを出力にマッピングするNNパラメータを推定することは、観測された入力データと出力データを使ったトレーニングと同じタスクであるため、その部分について言うことは特別なことではありません。
共役前14

答えは良いです。ただし、ニューラルネットワークは識別(フィードフォワードなど)または生成(制限付きボルツマンマシンなど)のいずれかです。また、LSTMやReservoir Computingモデルなどのリカレントニューラルネットワークは、時系列およびHMMをモデル化できます。特に強力な非線形ダイナミクスと長時間相関のある時系列の場合は、HMMよりも優れている場合もあります。
グスク14年

10

隠れマルコフモデルを使用して、言語を生成できます。つまり、文字列のファミリから要素をリストします。たとえば、一連のシーケンスをモデル化するHMMがある場合、モデル化するシーケンスのグループに分類されるシーケンスをリストすることにより、このファミリーのメンバーを生成できます。

ニューラルネットワークは、高次元空間から入力を取得し、それを単純に低次元空間にマッピングします(ニューラルネットワークがこの入力をマッピングする方法は、トレーニング、トポロジ、およびその他の要因に基づきます)。たとえば、数値の64ビットイメージを取得し、この数値が1か0かを示すtrue / false値にマップします。

両方のメソッドは、アイテムがクラスのメンバーであるかどうかを判別できます(または少なくとも試行できます)が、ニューラルネットワークは上記のように言語を生成できません。

隠れマルコフモデルに代わるものがあります。たとえば、HMMのパワー不足にあると思われる場合は、より一般的なベイジアンネットワーク、異なるトポロジ、または確率的文脈自由文法(SCFG)を使用できる場合があります。問題をモデル化する-つまり、より複雑な仮説を区別したり、はるかに複雑なデータの動作を記述したりできるアルゴリズムが必要な場合。


6
+1 2番目の段落。この回答のすべての要素を明確に理解している人は、おそらく元の質問をすることはないでしょう。投稿が「統計で足を濡らしているだけです...」で始まる人に正式な文法を言及するのはおそらく役に立たないでしょう。最初の段落の代わりに、HMMは隠れ状態の条件付き依存関係をモデル化します。各状態には観測値の確率分布があります。
フィリップクラウド

7
この答えは単に間違っています。ここでのニューラルネットワークはフィードフォワードであると想定されています。これはニューラルネットワークの1つのクラスにすぎません。反復モデルは、単一の入力を低次元の表現に単純にマップするのではなく、言語生成できます。たとえば、arxiv.org
abs

(リンクされた論文のように)シーケンスを生成することは、言語を生成することと同じではありません。セットの要素を識別するためにそれらを適用できると思いますが、必要に応じて、再帰モデルは、個々の入力にまたがる単一の大きな入力を繰り返して1つの大きな出力を返すように想定することができます。リカレントニューラルネットワークが入力なしで出力を提供できるかどうかはわかりません。
アンドリュー

うーん HMMで生成でき、RNNでは生成できないと思われるものの例を挙げることができますか?
rd11

思い浮かぶ例は次のとおりです。HMMを指定すると、HMMが表す言語に属する要素のシーケンスを取得できます。RNNでこれを行うには、さらに何かを追加する必要があります(たとえば、異なる入力を試し、入力をクラスのメンバーとしてマークするなど)-RNNの場合は、おそらく複数の入力を見ています(次々に)単一の「アイテム」を表すものとして。HMMは、言語を生成する目的により自然に適しています。
アンドリュー

3

私が見つけたものからこの質問への最良の答えはこれです:変装してマルコフ連鎖を深く学習しています。これはまさに私が理解したことですが、インターネットの他の場所ですでに議論があったので、ここにリンクを張っています。

pバツ1バツn=pバツ1pバツ2|バツ1pバツ3|バツ2

pバツ1バツn=pバツ1pバツ2|バツ1pバツ3|バツ2バツ1pバツ4|バツ3バツ2バツ1

単一の文字の代わりに、文字シーケンスを入力として使用できます。これにより、状態をより適切にキャプチャできます(コンテキストに応じて)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.