生成アルゴリズムと判別アルゴリズムの違いは何ですか?
-
22-08-2019 - |
質問
の違いを理解するのを手伝ってください。 原動力 そして差別的な アルゴリズムについては、私が単なる初心者であることを念頭に置いてください。
解決
入力データがあるとします。 x
データをラベルに分類したいとします y
. 。生成モデルが学習するのは、 ジョイント 確率分布 p(x,y)
そして識別モデルは 条件付き 確率分布 p(y|x)
- これは次のように読む必要があります 「確率は y
与えられた x
".
ここでは非常に簡単な例を示します。フォームに次のデータがあるとします。 (x,y)
:
(1,0), (1,0), (2,0), (2, 1)
p(x,y)
は
y=0 y=1
-----------
x=1 | 1/2 0
x=2 | 1/4 1/4
p(y|x)
は
y=0 y=1
-----------
x=1 | 1 0
x=2 | 1/2 1/2
これら 2 つの行列を数分眺めてみると、2 つの確率分布の違いが理解できるでしょう。
配布 p(y|x)
与えられた例を分類するための自然分布です x
クラスに入る y
, これが、これを直接モデル化するアルゴリズムが識別アルゴリズムと呼ばれる理由です。生成アルゴリズムモデル p(x,y)
, に変換できます。 p(y|x)
ベイズ規則を適用して分類に使用します。ただし、配布は p(x,y)
他の目的にも使用できます。たとえば、次のように使用できます p(x,y)
に 生成する おそらく (x,y)
ペア。
上記の説明から、生成モデルはより一般的に役立つため、優れていると思われるかもしれませんが、それほど単純ではありません。 この紙 これは、差別と差別をテーマにした非常に人気のある参考文献です。生成分類器ですが、かなり大変です。全体的な要点は、分類タスクにおいては、識別モデルが一般に生成モデルよりも優れたパフォーマンスを発揮するということです。
他のヒント
あ 生成アルゴリズム 信号を分類するためにデータがどのように生成されたかをモデル化します。それは次のような質問をします。私の生成の仮定に基づくと、この信号を生成する可能性が最も高いカテゴリはどれですか?
あ 判別アルゴリズム データがどのように生成されたかは考慮せず、単に特定の信号を分類するだけです。
あなたのタスクが音声を言語に分類することであると想像してください。
次のいずれかの方法で実行できます。
- 各言語を学習し、得た知識を使用して言語を分類する
または
- 言語を学習せずに言語モデルの違いを判断し、音声を分類します。
一つ目は、 原動力 アプローチ、そして2つ目は 差別的な アプローチ。
詳細については、このリファレンスを確認してください。 http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf.
実際には、モデルは次のように使用されます。
で 識別モデル, 、ラベルを予測します y
トレーニング例から x
, 、以下を評価する必要があります。
これは単に最も可能性の高いクラスを選択するだけです y
検討中 x
. 。まるで私たちがしようとしていたような クラス間の決定境界をモデル化する. 。この動作はニューラル ネットワークでは非常に明確であり、計算された重みは空間内のクラスの要素を分離する複雑な形状の曲線として見ることができます。
さて、ベイズの法則を使って、 方程式では . 。あなたはただそれに興味があるだけなので、 引数最大, 、分母を消去できます。それはすべての場合と同じになります。 y
. 。それで、あなたに残ったのは、
これはで使用する方程式です 生成モデル.
最初のケースでは、 条件付き確率分布 p(y|x)
, 、クラス間の境界をモデル化したもので、次の瞬間に 同時確率分布 p(x, y)、p(x, y) = p(x | y) p(y) なので、 各クラスの実際の分布を明示的にモデル化します。.
同時確率分布関数を使用すると、 y
, 、それぞれを計算 (「生成」) できます。 x
. 。このため、これらは「生成」モデルと呼ばれます。
ここからは最も重要な部分です 講義ノート このトピックに関連する CS299 (Andrew Ng 著) の 本当に との違いを理解するのに役立ちます 差別的な そして 原動力 学習アルゴリズム。
ゾウという 2 つのクラスの動物があるとします (y = 1
)と犬(y = 0
)。そして バツ は動物の特徴ベクトルです。
トレーニング セットが与えられると、ロジスティック回帰やパーセプトロン アルゴリズムなどのアルゴリズムは (基本的に) 象と犬を分ける直線、つまり決定境界を見つけようとします。次に、新しい動物を象または犬のいずれかに分類するために、それが下る決定境界のどちら側がどの側にあるかをチェックし、それに応じてその予測を行います。これらを私たちは呼びます 判別学習アルゴリズム.
ここでは別のアプローチを紹介します。まず、ゾウを見ると、 ゾウの模型。次に、犬を見ると、 犬の見た目の別のモデル。最後に、新しい動物を分類するために、 新しい動物を象のモデルと照合し、 新しい動物が象に似ているかどうかを確認するための犬のモデル というか、訓練セットで見た犬みたいな感じです。これらを私たちは呼びます 生成学習アルゴリズム.
一般に、機械学習コミュニティでは、学習したくないことは学習しないという習慣があります。たとえば、与えられた x 入力に y ラベルを割り当てることが目標である分類問題を考えてみましょう。生成モデルを使用する場合
p(x,y)=p(y|x).p(x)
p(x) をモデル化する必要がありますが、これは当面のタスクには無関係です。データの希薄性などの実際的な制限により、モデル化が余儀なくされる p(x)
いくつかの弱い独立性の前提があります。したがって、分類には識別モデルを直感的に使用します。
上記のStompChickenによる回答と一致する追加の有益な点。
の 根本的な違い 間 識別モデル そして 生成モデル は:
識別モデル を学ぶ (ハードまたはソフト) 境界 クラス間
生成モデル モデル化する 分布 個々のクラスの
編集:
生成モデルとは データを生成できるもの. 。特徴とクラスの両方をモデル化します (すなわち、完全なデータ)。
モデル化するなら P(x,y)
:この確率分布を使用してデータポイントを生成できるため、すべてのアルゴリズムのモデリングが可能になります。 P(x,y)
生成的です。
例えば。生成モデルの
単純ベイズモデル
P(c)
そしてP(d|c)
- どこc
はクラスであり、d
は特徴ベクトルです。また、
P(c,d) = P(c) * P(d|c)
したがって、いくつかの形式モデルにおける単純ベイズは、
P(c,d)
ベイズネット
マルコフ・ネッツ
識別モデルとは、次の目的でのみ使用できるモデルです。 データポイントを識別/分類する。モデリングするだけで済みます P(y|x)
そのような場合、(すなわち、特徴ベクトルが与えられた場合のクラスの確率)。
例えば。識別モデルの:
ロジスティック回帰
ニューラルネットワーク
条件付きランダムフィールド
一般に、生成モデルは識別モデルよりもはるかに多くのモデルをモデル化する必要があるため、場合によってはそれほど効果的ではありません。実際のところ、クラスタリングなどのほとんど (すべてかどうかはわかりません) 教師なし学習アルゴリズムは、モデル化されているため、生成的と呼ぶことができます。 P(d)
(そしてクラスはありません:P)
追伸:答えの一部はから引用されています ソース
私の2セント:差別的アプローチは違いを浮き彫りにする ジェネレーティブ・アプローチは違いに着目しません。彼らはクラスを代表するモデルを構築しようとします。両者の間には重複する部分があります。理想的には両方のアプローチを使用する必要があります。1 つは類似点を見つけるのに役立ち、もう 1 つは相違点を見つけるのに役立ちます。
生成アルゴリズム モデルはトレーニング データから完全に学習し、応答を予測します。
判別アルゴリズムの仕事は、2 つの結果を分類または区別することだけです。
これまでの回答はすべて素晴らしいので、もう 1 点追加したいと思います。
生成アルゴリズム モデルから、あらゆる分布を導き出すことができます。一方、条件付き分布 P(Y|X) は判別アルゴリズム モデルからしか取得できません (または、それらは Y のラベルを判別する場合にのみ役立つと言えます)。そのため、それが判別モデルと呼ばれます。識別モデルは、Y($X_i \perp X_{-i} | Y$) が与えられた場合に X が独立しているとは想定していないため、通常は条件付き分布の計算により強力です。