識別モデルと生成モデル
識別モデルと生成モデルの違いについてSimon J.D. Prince先生の著書”Computer Vision: Models, Learning, and Inference“\(^{[1]}\)で学んだので,忘れた時のためにメモしておく.
Contents
はじめに
機械学習の分類タスクにおいて,入力されたデータ\(\textbf{x}\)からそのデータが所属するクラス\(w\)を推定することを考える.例えば,顔写真から性別を推定するとか,風景写真に特定の物体(車など)が映っているかどうかを推定するといった具合である.この時,事後確率\(Pr(w | \textbf{x})\)が最大となるクラス\(w\)に分類することになるが,この事後確率\(Pr(w | \textbf{x})\)のモデリングには2種類のアプローチがある.識別モデルと生成モデルである.
識別モデル
概要
識別モデルでは,\(Pr(w | \textbf{x})\),すなわちサンプルデータ\(\textbf{x}\)が各クラス\(w\)に所属する確率を直接モデル化する.その手順は以下の通り.
- \(w\)の分布として適切な分布を用意し,そのパラメータ\( \boldsymbol \theta\)を\(\textbf{x}\)の関数として表す.例えば,2値分類であれば\(w \)の分布としてベルヌーイ分布がふさわしいかもしれない.用意した\(w \)の分布が返す値はパラメータ\( \boldsymbol \theta\)に依存する.ここで,パラメータ\( \boldsymbol \theta\)はサンプルデータ\(\textbf{x}\)の関数としているから,この分布が返す値は\(\textbf{x}\)に依存する.よって,この\(w\)の分布を\(Pr(w|\textbf{x})\)と書く.
- 訓練データ\(\{\textbf{x}_i, w_i\}^I_{i=1} \)から,\(Pr(w|\textbf{x})\)のパラメータ\( \boldsymbol \theta\)を最尤推定やMAP推定,ベイズ推定などにより学習する.
以上の手順により\(Pr(w | \textbf{x})\)をモデル化する.新しいデータ\(\textbf{x}\)について分類を行う際には,各\(w\)について\(Pr(w | \textbf{x})\)を評価し,この値が最大となるクラス\(w\)に分類する.
例 −識別モデルでの二値分類−
識別モデルでの分類の例として,二値分類を取り上げる.ここでは,入力データ\(x\)について,それが所属するクラス\(w\in \{0, 1\} \)を推定する問題を考える.
まず,\(w\)の分布として適切なものを用意し,その分布のパラメータを\(x\)の関数として表現する.\(w\)は0か1かの二値であるから,ベルヌーイ分布を選択し,
\[\begin{equation} \label{pr_wx}
Pr(w|x)=\text{Bern}_w[\lambda (x) ]
\end{equation} \]
とする.
パラメータ\( \lambda \)を\(x\)の関数として表すが,ベルヌーイ分布のパラメータ\( \lambda \)は\( 0 \leq \lambda \leq 1 \)を満たさなければならない.そこで,シグモイド関数を使って例えば
\[\begin{eqnarray}
\lambda &=& \text{sig}[\phi_0 + \phi_1x] \nonumber \\ &=& \dfrac{1}{1+\text{exp}[-\phi_0 – \phi_1x]}
\end{eqnarray}\]
とする.これにより,\(0 \leq \lambda \leq 1\)なる\(\lambda\)を\(x\)の関数として表現することができる.この時,式\eqref{pr_wx}は,
\(\begin{eqnarray}
Pr(w|x)&=&\text{Bern}_w\bigl[\text{sig}[\phi_0 + \phi_1x]\bigr] \nonumber \\ &=& \text{Bern}_w\biggl[\dfrac{1}{1+\text{exp}[-\phi_0 – \phi_1x]}\biggr]
\end{eqnarray}\)
となる.
次にパラメータの学習を行う.学習では,訓練データ\( \{x_i, w_i\}^I_{i=1} \)を用いてこのモデルのパラメータ\( \boldsymbol \theta = \{\phi_0, \phi_1 \} \)を学習する.
以上の手順により,\(Pr(w|x) \)をモデル化する.新たな観測データ\(x\)について分類を行う際には,単に\(Pr(w|x) \)を評価してこの値が最も大きくなるクラス\(w\)に分類すればよい.
生成モデル
概要
生成モデルでは,\(Pr(w|\textbf{x})\)を直接モデル化する代わりに,\(Pr(\textbf{x}|w)\),すなわち各クラス\(w\)からはどのようなデータ\(\textbf{x}\)が得られやすいかをモデル化する.分類の際には,ベイズの定理を用いて事後確率\(Pr(w|\textbf{x})\)を以下のように計算する.
\[\begin{equation} \label{gen_bayes}
Pr(w|\textbf{x})=\dfrac {Pr(\textbf{x}|w)Pr(w)} {\int Pr(\textbf{x}|w)Pr(w)dw}
\end{equation}\]
\(Pr(\textbf{x}|w)\)のモデル化の手順は以下の通り.
- \(\textbf{x}\)の分布として適切な分布を用意し,その分布のパラメータ\( \boldsymbol \theta\)を\(w\)の関数として表す.例えば,\(\textbf{x}\)が連続量であれば正規分布がふさわしいかもしれない.この\(\textbf{x} \)が返す値はパラメータ\( \boldsymbol \theta\)に依存し,その\( \boldsymbol \theta\)は\(w\)の関数であるから,この分布が返す値は\(w\)に依存する.よって,この分布を\(Pr(\textbf{x}|w)\)と書く.
- 訓練データ\(\{\textbf{x}_i, w_i\}^I_{i=1} \)から,\(Pr(\textbf{x}|w)\)のパラメータ\( \boldsymbol \theta\)を最尤推定やMAP推定,ベイズ推定などにより学習する.
以上の手順により,\(Pr(\textbf{x}|w)\)をモデル化する.新しいデータ\(\textbf{x}\)について分類を行う際には,上式\eqref{gen_bayes}により\(Pr(w|\textbf{x})\)を評価し,この値が最大となるクラス\(w\)に分類する.
例 −生成モデルによる二値分類−
生成モデルでの分類の例として,先ほどと同様,二値分類を取り上げる.ここでも,入力データ\(x\)(\(x\)は連続量)について,それが所属するクラス\(w\in \{0, 1\} \)を推定する問題を考える.
まず,\(x\)の分布として適切なものを用意し,その分布のパラメータを\(w\)の関数として表現する.\(x\)は連続量であることを仮定しているので,正規分布を選択し,
\[\begin{equation} \label{pr_xw}
Pr(x|w)=\text{Norm}_x[\mu _w, \sigma _w ^2]
\end{equation}\]
とする.ここで,\(w\)は0か1の二値であるから,\eqref{pr_xw}は次式のようにも書ける.
\[\begin{equation} \label{pr_xw_each}
Pr(x|w=0) = \text{Norm}_x[\mu _0, \sigma _0^2] \\
Pr(x|w=1) = \text{Norm}_x[\mu _1, \sigma _1^2]
\end{equation}\]
式\eqref{gen_bayes}を用いて事後確率\(Pr(w|x)\)を計算するために,\(Pr(x|w)\)に加えて事前確率\(Pr(w)\)についてもモデル化する.\(w\)は二値なので,ベルヌーイ分布を選択し,
\[\begin{equation}
Pr(w) = \text{Bern}_w[\lambda _p]
\end{equation}\]
とする.ただし、\(\lambda_p\)は\(w\)が\(w=1\)を取る確率である.
次に学習を行う.学習すべきパラメータ\(\boldsymbol{\theta}\)は,\(\boldsymbol{\theta}=\{\mu_0, \sigma_0^2, \mu_1, \sigma_1^2, \lambda_p\}\)である.訓練データ\(\{x_i, w_i\}^I_{i=1} \)から,これらのパラメータを学習する.より具体的には,\(w=0\)であるデータ\(x\)から\(\mu_0\)および\(\sigma_0^2\)を,\(w=1\)であるデータ\(x\)から\(\mu_1\)および\(\sigma_1^2\)をそれぞれ学習する.また,\(\{w_i\}^I_{i=1}\)から\(\lambda_p\)を学習する.
どちらのモデルが良いか
識別モデルと生成モデルのどちらを用いるべきかはアプリケーション依存であり,どちらが良いかは一概には言えない.識別モデルと生成モデルそれぞれの特徴を複数の観点からまとめておく.
計算コスト
推論\(\bigl(Pr(w | \textbf{x})\)の計算\(\bigl) \)は,識別モデルの方がシンプルである.識別モデルでは,\(Pr(w | \textbf{x})\)を直接モデル化するため,推論の際にはデータ\(\textbf{x}\)をそのままこのモデルに放り込めばよい.一方の生成モデルでは,\(Pr(\textbf{x}|w)\)をモデル化し,ベイズの定理 (式\eqref{gen_bayes})を用いて\(Pr(w | \textbf{x})\)の計算を行う.これには大きな計算コストがかかることがある.
欠損データがある場合
データ\(\textbf{x}\)の一部に欠損がある場合,生成モデルが識別モデルよりも優れている.生成モデルでは\(\textbf{x}\)についての確率分布をモデル化しているため,このモデルからデータを生成することができる.これにより,欠損部分を補完することができる.
クラス\(w\)についての事前知識がある場合
クラス\(w\)に関する何らかの事前知識がある場合,生成モデルであれば\(w\)の事前分布\(Pr(w)\)としてモデルに組み込むことができる.一方識別モデルの場合,事前知識をモデルに組み込むことは困難である.
参考文献
- Simon J.D. Prince, Computer Vision: Models, Learning, and Inference (Cambridge University Press, 2012), chap. 6