web-dev-qa-db-ja.com

生成的アルゴリズムと識別的アルゴリズムの違いは何ですか?

生成的識別的の違いを理解してください。私は単なる初心者だということを忘れないでください。

531
unj2

入力データ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)generate(x,y)の組に使用できます。

上記の説明から、生成モデルはより一般的に有用であり、したがってより優れていると考えるかもしれませんが、それほど単純ではありません。 このペーパー は、判別分類と生成分類の話題に関する非常に一般的な参考文献ですが、かなり重い話になります。全体的な要旨は、識別モデルは一般に分類作業において生成モデルよりも優れているということです。

774
Stompchicken

生成的アルゴリズムは、信号を分類するためにデータがどのように生成されたかをモデル化します。それは質問をします:私の生成仮定に基づいて、どのカテゴリーがこのシグナルを生成する可能性が最も高いですか?

識別アルゴリズムは、データがどのように生成されたかを気にすることなく、単に特定の信号を分類します。

283
Carlos Rendon

あなたの仕事がスピーチを言語に分類することであると想像してください。

どちらでもできます。

  1. 各言語を学び、それからあなたが今学んだ知識を使ってそれを分類する

または

  1. 言語を学習せずに言語モデルの違いを判断してから、音声を分類します。

最初のものは生成的アプローチで、2番目のものは差別的アプローチです。

詳細については、この参照を確認してください。 http://www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf

149
madCode

実際には、モデルは次のように使用されます。

判別モデルで、学習例yからラベルxを予測するには、次のように評価する必要があります。

enter image description here

これは単にyを考慮して最も可能性の高いクラスxであるものを選ぶだけです。クラス間の決定境界をモデル化しようとしていたようです。この振る舞いは、計算された重みが空間内のクラスの要素を分離する複雑な形状の曲線と見なすことができるニューラルネットワークでは非常に明らかです。

さて、ベイズの法則を使って、 enter image description here 式で enter image description herearg maxに興味があるだけなので、分母を一掃することができます。これはすべてのyに対して同じです。だから、あなたは残されている

enter image description here

これは生成モデルで使う方程式です。

最初のケースではクラス間の境界をモデル化した条件付き確率分布p(y|x)がありましたが、2番目のケースでは同時確率分布pがありました。 p(x、y)= p(x | y)p(y)で、は各クラスの実際の分布を明示的にモデル化します.

yが与えられると、同時確率分布関数を使って、それぞれのxを計算( "生成")することができます。このため、それらは「生成的」モデルと呼ばれます。

121
Saul Berardo

これは、トピックに関連した(Andrew Ngによる)CS299の 講義ノート からの最も重要な部分です。本当に識別的生成的学習アルゴリズムの違いを理解するのに役立ちます。

象(y = 1)と犬(y = 0)の2種類の動物がいるとします。そしてxは動物の特徴ベクトルです。

訓練セットが与えられると、ロジスティック回帰やパーセプトロンアルゴリズムのようなアルゴリズムは(基本的に)象と犬を分ける直線、つまり決定境界を見つけようとします。次に、新しい動物をゾウまたはイヌとして分類するために、決定境界のどちら側に落ちるかを調べ、それに応じて予測を行います。これらを判別学習アルゴリズムと呼びます。

これは別のアプローチです。まず、象を見て、象がどのように見えるかのモデルを構築することができます。それから、犬を見て、犬がどのように見えるかの別のモデルを構築することができます。最後に、新しい動物を分類するために、新しい動物を象のモデルと照合し、それを犬のモデルと照合して、新しい動物が象のように見えるのか、トレーニングセットで見た犬のように見えるのかを確認できます。 。これらを生成的学習アルゴリズムと呼びます。

77
Ghrua

一般的に、機械学習コミュニティでは、したくないことを学ばないことが慣習となっています。たとえば、目的がx入力にyラベルを割り当てることである場合の分類問題を考えてみましょう。生成モデルを使用すれば

p(x,y)=p(y|x).p(x)

私たちはp(x)をモデル化する必要がありますが、これは手元のタスクには無関係です。データの疎密性のような実用上の制限により、いくつかの弱い独立性の仮定でp(x)をモデル化する必要があります。したがって、分類には直感的に識別モデルを使用します。

31

上記のStompChickenによる答えとうまくいく付加的な有益な点。

識別モデル生成モデルの間の根本的な違いは次のとおりです。

クラス間の判別モデル(ハードまたはソフト)境界を学ぶ

生成モデル個々のクラスの分布をモデル化する

編集する

生成モデルはデータを生成することができるです。それは特徴とクラス(すなわち完全なデータ)の両方をモデル化します。

P(x,y)をモデル化するならば:私はデータポイントを生成するためにこの確率分布を使うことができます - そしてそれ故P(x,y)をモデル化するすべてのアルゴリズムは生成的です。

例えば。生成モデルの

  • Naive BayesモデルP(c)P(d|c) - ここでcはクラス、dは特徴ベクトルです。

    また、P(c,d) = P(c) * P(d|c)

    したがって、Naive Bayesはいくつかの形式モデルでP(c,d)

  • ベイズネット

  • マルコフネット

識別モデルは、データポイントの識別/分類にのみ使用できるモデルです。そのような場合にのみP(y|x)をモデル化する必要があります(すなわち、特徴ベクトルが与えられたクラスの確率)。

例えば。判別モデルの例:

  • ロジスティック回帰

  • ニューラルネットワーク

  • 条件付きランダム場

一般に、生成モデルは、識別モデルよりもはるかに多くのモデルを作成する必要があるため、時には効果的ではありません。実際のところ、クラスタリングなどの教師なし学習アルゴリズムのほとんど(全部ではないとしたらわかりません)はP(d)をモデル化しているため(生成クラスはありません:P)

シモンズ:答えの一部は ソースから取られています

19
Prakhar Agrawal

異なるモデルは以下の表にまとめられています。 enter image description here

17
Ravi G

生成的アルゴリズムモデルは、訓練データから完全に学び、応答を予測します。

判別アルゴリズムの仕事は、単に2つの結果を分類または区別することです。

0
Nages

私の2つのポイント:差別的アプローチは違いを強調する生成的アプローチは違いに焦点を当てていません。彼らはクラスを代表するモデルを構築しようとします。両者には重なりがあります。理想的には両方のアプローチが使用されるべきです。1つは類似性を見つけるのに役立ち、もう1つは非類似性を見つけるのに役立ちます。

0
Arun

これまでの回答はすべて素晴らしく、もう1つのポイントを追加したいと思います。

生成アルゴリズムモデルから、任意の分布を導出できます。一方、条件付き分布P(Y | X)は判別アルゴリズムモデルからのみ取得できます(または、Yラベルの判別にのみ有効であると言えます)。そのため、判別モデルと呼ばれます。判別モデルは、Y($ X_i\perp X _ {-i} | Y $)が与えられるとXが独立しているとは想定しないため、通常、その条件付き分布を計算するのにより強力です。

0
Lerner Zhang