識別モデルと生成モデル
機械学習の分類問題は、識別モデルと生成モデルに大別される。
(識別関数によるアプローチもあるがここでは言及しない。)
自分の頭の整理のために、これらの違いをまとめる。
識別モデル(Discriminative model)
サンプルデータがクラスに分類する条件付き確率を直接モデル化する。
分類時は、を選択する。
分類問題で求めたいのは、個々のデータがどのクラスに所属するかであり、識別モデルは所属確率を直接求めるモデルである。この考え方は最もシンプルで理にかなっており、機械学習で分類問題を解く場合、識別モデルによるアプローチが一般的な手法となっている。
生成モデル(Generative models)
観測データを生成する確率分布を想定し、観測データからその確率分布を推定する方法。
識別モデルと同様に条件付き確率をモデル化するがその方法が異なる。
(生成モデルでは直接これをモデル化しない。)
ベイズの定理を用いて以下のように書き直す。
この右辺が最大となるクラスに分類する。
この時、分母のはクラスに依存しないので、分類時には不要である。すなわち、
のクラスに分類する。
ではが何を表しているか。
まず、はクラスの割合。(全体のうち、クラス1のデータが60%ならといった感じ。)
次に、であるが、これが少しややこしい。ここでは、観測されたデータは、無作為に生成されるのではなく、何らかの分布に基づいて生成されると考える。この分布が、のクラスごとに異なっており、各クラスが観測データを生成する確率(尤度)がどのくらいあるか、という値である。
例えば、下記のようなデータが観測されたとする。(色でクラスを識別)
生成モデルでは各クラスは何らかの分布から生成された(潜在的に分布が存在する)と仮定する。
を直接求めるのではなく、を求めると何が嬉しいのだろうか。
が分かると、クラスを分類できるだけでなく、あるクラスに属する擬似的なデータを作ることができるようになる。そのような理由もあって、教師なし学習で使われることがある。(最近の例だと、生成モデルを使って画像生成などを行う研究が盛んだったりする。)