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


587

私は単なる初心者であることを念頭に置いて、生成アルゴリズムと 識別アルゴリズムの違いを理解してください。


4
このドキュメント(以下のanguyen8でも指摘されています)は優れたドキュメントです。cs229.stanford.edu
notes

5
統計に関する同じ質問も参照してください。SE:ジェネレーティブvs.差別的
Lenar Hoyt

シンプルで視覚的な答えについては、ここをクリックしてください。stackoverflow.com
Ravi G

回答:


840

入力データが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)

上記の説明から、生成モデルはより一般的に有用であり、したがってより良いと考えているかもしれませんが、それほど単純ではありません。このホワイトペーパーは、識別的分類と生成的分類の主題について非常に人気のある参考文献ですが、かなり大変です。全体的な要点は、一般に、識別モデルが分類タスクの生成モデルよりも優れていることです。


48
論文をありがとう。著者は現在スタンフォード大学の教授であり、stanford.edu
class / cs229 / materials.htmlに


39
行列を見つめると、最初の行列ではすべてのエントリの合計が1.0になり、2番目の行列では各行の合計が1になります。これにより、啓発の速度が
上がります

5
Andrew Ngによるここのメモも非常に役立ちます:cs229.stanford.edu/notes/cs229-notes2.pdf
anh_ng8

1
「これを直接モデル化するアルゴリズムが判別アルゴリズムと呼ばれるのはこのためです」、p(y|x)それをモデル化するアルゴリズムが「判別モデル」と呼ばれることを意味する理由はまだわかりません。
nbro 2018年

291

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

差別的アルゴリズムは、データが生成されたかを気にしない、それは単に与えられた信号を分類します。


6
この答えは私を混乱させます。アルゴリズムの両方のクラスは、他のデータを予測する関数を導出するためにラベル付きトレーニングデータのモデルを学習する教師あり学習アルゴリズムのクラスに分類されます。あなたがそれを説明するときのそれはモデルを作成しないかのように聞こえる識別アルゴリズムはそれは正しいですか?その点でお答えを充実させていただければ幸いです。
Lenar Hoyt

42
@mcb生成アルゴリズムは、データが「生成された」方法をモデル化するので、「これまたはそのクラスがこのインスタンスを生成した可能性はどれくらいですか」と尋ねます。確率の高い方を選びます。判別アルゴリズムはデータを使用して決定境界を作成するため、「このインスタンスが決定境界のどちら側にあるか」と尋ねます。したがって、データの生成方法のモデルを作成するのではなく、クラス間の境界がどのように見えるかをモデル化します。
Anthony、

1
では、ナイーブベイズのような生成モデルには、決定境界がありませんか?
sheetal_158 2016年

4
では、生成モデルは解釈可能性に優れているように見えますか?
Candic3 2017年

157

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

次のいずれかを実行できます。

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

または

  1. 言語を学習せずに言語モデルの違いを判断し、スピーチを分類します。

1つ生成的アプローチで、2つ目は識別的アプローチです。

詳細については、このリファレンスを確認してください:http : //www.cedar.buffalo.edu/~srihari/CSE574/Discriminative-Generative.pdf


2
逆ではないですか?あなたが言語を学んだことを考えると、あなたは条件付き分布で動作しているので、それは差別的なアプローチであるべきですか?
ロンドンの男

以下の回答を読んだ後、それは逆でもあると思います-GhruaによるCS299の講義ノートの例
Mitali Cyrus

132

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

差別モデル、ラベルを予測するためyの訓練の例からx、あなたは評価する必要があります:

ここに画像の説明を入力してください

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

ここで、ベイズのルールを使用ここに画像の説明を入力してくださいして、方程式のをで置き換えましょうここに画像の説明を入力してくださいarg maxだけに関心があるので、分母を消去できますy。これは、すべてので同じになります。だから、あなたは残っています

ここに画像の説明を入力してください

これは、生成モデルで使用する方程式です。

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

結合確率分布関数を使用すると、を指定するとy、それぞれのを計算(「生成」)できますx。このため、これらは「生成」モデルと呼ばれます。


3
この推論により、同じ分布に適用した場合、生成モデルと判別モデルは等しくなりませんか?では、なぜ分類動作に違いがあるのですか?または、これらはこの最尤コンテキストで等しいですか?
Sebastian Graf

それらが「等しい」かどうかを判断するには、まずその意味を定義する必要があります。共通点はたくさんありますが、最も大きな違いは採用された戦略です:分布のモデル化(生成的)対分布に関係なくクラスを予測(差別的)-例としてKNNを少し考えてみてください。
Saul Berardo

90

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

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

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

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


33

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

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

手元のタスクには無関係なp(x)をモデル化する必要があります。データのスパース性などの実用的な制限p(x)により、弱い独立性の仮定でモデル化する必要があります。したがって、分類には直観的に判別モデルを使用します。



22

上記のStompChickenによる回答によく合う追加の有益なポイント。

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

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

生成モデルは、個々のクラスの分布モデル化します

編集:

生成モデルは、データを生成できるモデルです。これは、機能とクラス(つまり、完全なデータ)の両方をモデル化します。

モデル化する場合P(x,y):この確率分布を使用してデータポイントを生成できますP(x,y)。したがって、すべてのアルゴリズムモデリングは生成的です。

例えば。生成モデルの

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

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

    したがって、いくつかのフォームモデルの単純ベイズ、 P(c,d)

  • ベイズネット

  • マルコフネット

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

例えば。識別モデルの:

  • ロジスティック回帰

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

  • 条件付きランダムフィールド

一般に、生成モデルは、判別モデルよりもはるかに多くのモデルを作成する必要があるため、効果的でない場合があります。実際には、クラスタリングなどのほとんど(すべてではない)の教師なし学習アルゴリズムは生成モデルと呼ばれますP(d)(クラスがないため:P)。

PS:回答の一部はソースから取得されます


8

短い答え

ここでの答えの多くは、広く使用されている数学的定義[1]に依存しています。

  • 判別モデルは条件付き予測分布を直接学習します p(y|x)
  • 生成モデルは、共同分布を学習しますp(x,y)(または、p(x|y)およびp(y))。
    • 予測分布p(y|x)はベイズの法則で取得できます。

この狭い定義は非常に便利ですが、監視ありの設定を想定しているため、監視なしまたは半監視ありのメソッドを調べる場合にはあまり役に立ちません。また、ディープジェネレーティブモデリングの多くの現代的なアプローチには適用されません。たとえば、今では暗黙的な生成モデルがあります。たとえば、生成ベースの敵対的ネットワーク(GAN)は、サンプリングベースであり、確率密度を明示的にモデル化していませんp(x)(代わりに、弁別器ネットワークを介して発散測定を学習しています)。しかし、それらは(高次元[10])サンプルの生成に使用されるため、「生成モデル」と呼んでいます。

より広く、より根本的な定義 [2]も同様に、この一般的な質問のためのフィッティングと思われます。

  • 判別モデルは、クラス間の境界を学習します。
    • そのため、異なる種類のデータインスタンスを区別できます。
  • 生成モデルは、データの分布を学習します。
    • そのため、新しいデータインスタンスを生成できます。

http://primo.ai/index.php?title=Discriminative_vs._Generativeから 画像ソース


よく見る

それでも、この質問は、いくらか誤った二分法を示唆しています[3]。生成的識別の「二分法」は、実際、[4]の間でスムーズに補間できるスペクトルです。

結果として、この区別は恣意的で混乱します。特に、多くの人気のあるモデルがきちんとどちらにも分類されない場合[5、6]、または実際にはハイブリッドモデル(従来の「識別」モデルと「生成」モデルの組み合わせ)の場合。

それにもかかわらず、それはまだ非常に有用であり、一般的な違いです。生成モデルと識別モデルのいくつかの明確な例を、正規および最近の両方でリストできます。

  • ジェネレーティブ:ナイーブベイズ、潜在ディリクレ割り当て(LDA)、ジェネレーティブアドバサリネットワーク(GAN)、変分オートエンコーダ(VAE)、フローの正規化。
  • 弁別:サポートベクターマシン(SVM)、ロジスティック回帰、最も深いニューラルネットワーク。

また、生成的識別の分割[7]とスペクトル[4,8]を深く調べ、さらに識別的モデルを生成的モデル[9]に変換することさえも興味深い研究がたくさんあります。

結局、特にこの急速に成長している分野では、定義は常に進化しています:)少々の塩を加えて、自分や他の人のためにそれらを再定義することもできます。


出典

  1. おそらく「機械学習-差別的で生成的」(Tony Jebara、2004)に由来します。
  2. Googleによる機械学習のクラッシュコース
  3. 生成的差別的誤り
  4. 「生成モデルと識別モデルのプリンシプルハイブリッド」(Lasserre et al。、2006)
  5. @shimaoの質問
  6. Binu Jasimの答え
  7. ロジスティック回帰と単純ベイズの比較:
  8. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/04/DengJaitly2015-ch1-2.pdf
  9. 「あなたの分類子は密かにエネルギーベースのモデルです」(Grathwohl et al。、2019)
  10. スタンフォードCS236の注記:技術的には、確率的識別モデルは、データに条件付けられたラベルの生成モデルでもあります。ただし、生成モデルという用語は通常、高次元データ用に予約されています。

1
これには本当にもっと多くの賛成票があるはずです。あなたが私が見つけた「誤った二分法」の考えに触れた唯一の答えでした。これと同じOSの私の質問:stats.stackexchange.com/questions/408421/...
アントニオ・ルイス・SOMBRA

1

これまでの答えはすべてすばらしいので、もう1つ説明しておきます。

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


0

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


0

生成アルゴリズムモデルは、トレーニングデータから完全に学習し、応答を予測します。

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


私が得られるのは、生成モデルは教師あり学習に基づいていますが、識別モデルは教師なし学習に基づいています。私は正しいですか?
Waseem Ahmad Naeem

@WaseemAhmadNaeemちょっと、でもそうでもない。yは常にターゲットであり、入力データの一部として必要なので、両方が監視されます。ジェネレーティブ、最初のステップが完全な分布を取得することであるため、監視されていないようです(すべての変数で、yを特別とは見なさない)。そこに立ち止まり、yを特別なものとして扱わない場合、その部分自体は監視されません。
ミッチ

@ミッチは、両方の違いについていくつかの紙/メモ/リンクを共有するように頼むことができますか?実際、私はこの概念について少し混乱しています。事前にありがとう
Waseem Ahmad Naeem 2018

@WaseemAhmadNaeem 特定の生成モデルと判別モデル、またはベイジアンコンテキストの生成モデルと判別モデルのCross Validated.SE(統計/ ML SEサイト)での検索。初歩的な例Naive Bayesは生成的で、ロジスティック回帰は識別的です。両方のより多くの例
ミッチ

0

この記事は、この概念を理解するのに大いに役立ちました。

要約すれば、

  • どちらも確率モデルです。つまり、確率(正確には条件付き確率)を使用して、未知のデータのクラスを計算します。
  • 生成分類子は、データセットに結合PDFとベイズの定理を適用し、それらの値を使用して条件付き確率を計算します。
  • 判別的分類子は、データセットで条件付き確率を直接見つけます

いくつかの優れた読書資料: 条件付き確率共同PDF

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