コンテンツにスキップ

ナイーブベイズ・ガウス過程回帰・条件付き確率場

キーワード:ナイーブベイズ、条件付き独立、MAP推定、ガウス過程回帰、カーネル、周辺尤度、条件付き確率場(CRF)、ビタビアルゴリズム

要点

  • ナイーブベイズは「特徴どうしがクラスを条件に独立」と仮定し、事後確率を \(P(C_k)\prod_n P(x_n\mid C_k)\) に分解する生成モデル。
  • ガウス過程回帰は関数そのものに事前分布(ガウス過程)を置く。予測は平均と分散の閉じた式で出て、データから遠いほど不確かさが増える。
  • 条件付き確率場(CRF)は系列ラベルを \(P(\mathbf{y}\mid\mathbf{x})\) で直接モデル化する識別モデル。全系列で正規化し、デコードはビタビ法。

ナイーブベイズ

クラスの事後確率が最大のクラスを選ぶ(MAP 推定)。\(\mathbf{x}=(x_1,\dots,x_D)\)、クラスを \(C_k\ (k=1,\dots,K)\) とする。

\[ \begin{aligned} &\text{ベイズの定理} && P(C_k\mid\mathbf{x})=\frac{P(C_k)\,P(\mathbf{x}\mid C_k)}{P(\mathbf{x})} \\[2mm] &\text{条件付き独立の仮定} && P(\mathbf{x}\mid C_k)=\prod_{n=1}^{D}P(x_n\mid C_k) \\[2mm] &\text{対数化} && \log P(C_k\mid\mathbf{x})=\log P(C_k)+\sum_{n=1}^{D}\log P(x_n\mid C_k)-\log P(\mathbf{x}) \\[2mm] &\text{予測} && \hat{C}=\operatorname*{arg\,max}_{C_k}\Bigl(\log P(C_k)+\sum_{n=1}^{D}\log P(x_n\mid C_k)\Bigr) \end{aligned} \]
  • \(P(\mathbf{x})\) はクラスによらないので、\(\arg\max\) では無視できる(確率そのものが欲しいときは全クラスの和で正規化する)。
  • 対数をとる理由は、小さい確率の積によるアンダーフローを避けるため。積が和になり、後の説明(線形判別)にも都合がよい。
  • 学習は数え上げだけ。\(P(C_k)\) はクラスの頻度、\(P(x_n\mid C_k)\) は各クラス内での特徴の分布を最尤推定する。反復計算は要らない。
種類 特徴 \(x_n\) \(P(x_n\mid C_k)\) 用途
ガウスNB 連続値 \(\mathcal{N}(\mu_{kn},\sigma_{kn}^2)\)(クラス・特徴ごとに平均と分散) 数値特徴
多項NB 出現回数 語 \(w\) の出現確率 \(\theta_{kw}\) の積(\(\prod_w\theta_{kw}^{x_w}\)) 文書分類
ベルヌーイNB 0/1(有無) 出現する確率 \(\theta_{kn}\)、しない確率 \(1-\theta_{kn}\) 短い文書

小さな計算例

迷惑メール判定。\(P(\text{迷惑})=0.4\)、語「無料」「会議」について \(P(\text{無料}\mid\text{迷惑})=0.5,\ P(\text{無料}\mid\text{普通})=0.05,\ P(\text{会議}\mid\text{迷惑})=0.1,\ P(\text{会議}\mid\text{普通})=0.4\)。両方を含むメールは、出現した語だけで比べる簡略化をすると次のようになる。

\[ \begin{aligned} &\text{迷惑:}\ 0.4\times0.5\times0.1=0.020,\qquad \text{普通:}\ 0.6\times0.05\times0.4=0.012 \\[1mm] &P(\text{迷惑}\mid\mathbf{x})=\frac{0.020}{0.020+0.012}=0.625 \end{aligned} \]

ゼロ頻度問題とスムージング

  • 訓練データに一度も現れなかった語があると \(P(x_n\mid C_k)=0\) になり、積全体が 0 になる。
  • ラプラス平滑化(加算スムージング):語彙数 \(V\)、クラス \(k\) 内の語 \(w\) の出現数 \(n_{kw}\)、総語数 \(n_k\) として
\[ \hat\theta_{kw}=\frac{n_{kw}+\alpha}{n_k+\alpha V}\qquad(\alpha=1\text{ がラプラス平滑化}) \]
  • 分子に \(\alpha\)、分母に \(\alpha V\) を足すのは、全語の確率の和を 1 に保つため。

性質

  • 独立の仮定は現実には成り立たないことが多いが、分類(\(\arg\max\))は意外に当たる。ただし出力の確率値は 0 か 1 に寄りやすく、信頼できない(較正が必要)。
  • 多項NB・ベルヌーイNB・等分散のガウスNBでは、対数事後確率が特徴の線形関数になり、決定境界は直線(超平面)。
  • ロジスティック回帰は同じ形の識別モデル。データが少ないときはNB、多いときはロジスティック回帰が有利と言われる(ロジスティック回帰)。
  • ガウスNBは共分散を対角(特徴間で独立)に限った生成モデル。クラス間で共通の一般の共分散行列を許したものが LDA(次元圧縮)。

ガウス過程回帰

関数 \(f\) にガウス過程を事前分布として置く。任意の入力の有限個の組 \(f(x_1),\dots,f(x_N)\) が同時に多変量正規分布に従う、というのが定義である。

\[ f\sim\mathcal{GP}\bigl(m(x),\,k(x,x')\bigr),\qquad y=f(x)+\varepsilon,\quad \varepsilon\sim\mathcal{N}(0,\sigma_n^2) \]
  • 平均関数 \(m(x)\) は 0 とすることが多い(以下 \(m=0\))。形を決めるのはカーネル \(k(x,x')\):入力が近いほど出力も似る、という強さを表す。
  • 代表的なカーネル:RBF(ガウス)\(k(x,x')=\sigma_f^2\exp\!\bigl(-\|x-x'\|^2/2\ell^2\bigr)\)(なめらかな関数)、線形、周期、マターン(RBFより粗い関数)。
  • 訓練データ \((\mathbf{X},\mathbf{y})\)(\(\mathbf{y}\in\mathbb{R}^N\))から、カーネル行列 \(\mathbf{K}_{ij}=k(\mathbf{x}^{(i)},\mathbf{x}^{(j)})\) を作る。
\[ \begin{aligned} &\text{結合分布} && \begin{pmatrix}\mathbf{y}\\ f_*\end{pmatrix}\sim\mathcal{N}\!\left(\mathbf{0},\ \begin{pmatrix}\mathbf{K}+\sigma_n^2\mathbf{I} & \mathbf{k}_*\\ \mathbf{k}_*^{\top} & k(x_*,x_*)\end{pmatrix}\right),\quad (\mathbf{k}_*)_i=k(\mathbf{x}^{(i)},x_*) \\[3mm] &\text{予測平均} && \mu_*=\mathbf{k}_*^{\top}\bigl(\mathbf{K}+\sigma_n^2\mathbf{I}\bigr)^{-1}\mathbf{y} \\[3mm] &\text{予測分散} && \sigma_*^2=k(x_*,x_*)-\mathbf{k}_*^{\top}\bigl(\mathbf{K}+\sigma_n^2\mathbf{I}\bigr)^{-1}\mathbf{k}_* \\[3mm] &\text{周辺尤度} && \log p(\mathbf{y}\mid\mathbf{X})=\underbrace{-\tfrac12\mathbf{y}^{\top}\bigl(\mathbf{K}+\sigma_n^2\mathbf{I}\bigr)^{-1}\mathbf{y}}_{\text{データへの適合}}\ \underbrace{-\tfrac12\log\bigl|\mathbf{K}+\sigma_n^2\mathbf{I}\bigr|}_{\text{複雑さへの罰}}\ -\tfrac{N}{2}\log2\pi \end{aligned} \]
  • 予測は結合正規分布の条件付き分布を求めただけ(正規分布の条件付けの公式)。事後分布も正規分布になるので、閉じた式で出る。
  • \(\sigma_*^2\) は潜在関数 \(f_*\) の不確かさ。観測値 \(y_*\) の予測分散にはノイズ \(\sigma_n^2\) を足す。
  • 平均が \(m\neq0\) のときは \(\mu_*=m(x_*)+\mathbf{k}_*^{\top}(\mathbf{K}+\sigma_n^2\mathbf{I})^{-1}(\mathbf{y}-\mathbf{m})\)。
  • \(\boldsymbol\alpha=(\mathbf{K}+\sigma_n^2\mathbf{I})^{-1}\mathbf{y}\) とおくと \(\mu_*=\sum_i\alpha_i\,k(\mathbf{x}^{(i)},x_*)\)。予測平均はカーネルの重ね合わせで、カーネルリッジ回帰(\(\sigma_n^2\) が正則化係数)と一致する。

動かしてみる

  • \(x_*\) を観測点のない右端(10 付近)へ動かすと、予測平均は 0 に戻り、\(\sigma_*^2\) は \(k(x_*,x_*)=1\)(事前分布の分散)に近づきます(データから遠いほど何も分からない)。
  • \(\ell\) を小さくすると曲線は観測点ごとに細かく振れ、大きくすると滑らかになります。周辺尤度の「データへの適合」と「複雑さ」の和が、どこで大きくなるかを探してみてください。
  • \(\sigma_n\) を小さくすると曲線は観測点をそのまま通り(帯が観測点で細くなる)、大きくすると観測点を無視した緩い曲線になります。

ハイパーパラメータの学習

  • カーネルのパラメータ(\(\ell,\sigma_f\))とノイズ \(\sigma_n\) は、周辺尤度の最大化(第2種の最尤推定)で決める。勾配法で最適化する。
  • 周辺尤度には「適合」と「複雑さ」が両方入るため、検証データを使わなくても過剰適合が抑えられる(自動的な Occam の剃刀)。
  • 計算量は、コレスキー分解が \(O(N^3)\)、メモリが \(O(N^2)\)。大規模データには疑似入力点を使う近似などがある。

使いどころ

  • 少ないデータで、不確かさ付きの回帰をしたいとき(実験計画、ベイズ最適化)。ベイズ最適化では予測平均と分散から獲得関数(EI、UCB など)を作り、次に試す点を選ぶ。
  • ニューラルネットワークの幅を無限にした極限はガウス過程になる(関連研究)。

条件付き確率場(CRF)

入力系列 \(\mathbf{x}=(x_1,\dots,x_T)\) に対するラベル系列 \(\mathbf{y}=(y_1,\dots,y_T)\) の条件付き確率を直接モデル化する(品詞タグ付け、固有表現抽出など)。ここでは隣り合うラベルだけが結びつく線形連鎖 CRF を扱う。

\[ \begin{aligned} &\text{モデル} && P(\mathbf{y}\mid\mathbf{x})=\frac{1}{Z(\mathbf{x})}\exp\!\left(\sum_{t=1}^{T}\sum_{k}w_k\,f_k(y_{t-1},y_t,\mathbf{x},t)\right) \\[3mm] &\text{分配関数} && Z(\mathbf{x})=\sum_{\mathbf{y}'}\exp\!\left(\sum_{t=1}^{T}\sum_{k}w_k\,f_k(y'_{t-1},y'_t,\mathbf{x},t)\right) \\[3mm] &\text{対数尤度} && \log P(\mathbf{y}\mid\mathbf{x})=\sum_{t,k}w_k f_k-\log Z(\mathbf{x}) \\[3mm] &\text{勾配} && \frac{\partial \log P(\mathbf{y}\mid\mathbf{x})}{\partial w_k}=\sum_{t}f_k(y_{t-1},y_t,\mathbf{x},t)-\mathbb{E}_{P(\mathbf{y}'\mid\mathbf{x})}\!\Bigl[\sum_{t}f_k(y'_{t-1},y'_t,\mathbf{x},t)\Bigr] \\[3mm] &\text{デコード} && \mathbf{y}^*=\operatorname*{arg\,max}_{\mathbf{y}}P(\mathbf{y}\mid\mathbf{x})=\operatorname*{arg\,max}_{\mathbf{y}}\sum_{t,k}w_k f_k \end{aligned} \]
  • 特徴量関数 \(f_k\) は人が設計する(遷移特徴:ラベルの並び \(y_{t-1}\to y_t\)、出力特徴:語と \(y_t\) の組、など)。重み \(w_k\) が学習の対象。
  • \(Z(\mathbf{x})\) は全ラベル系列(\(M^T\) 通り、\(M\) はラベル数)にわたる和。ただし系列の構造を使った前向きアルゴリズムで \(O(TM^2)\) で計算できる。
  • 勾配は「観測された特徴の合計」と「モデルの下での特徴の期待値」の差。期待値は前向き・後ろ向きアルゴリズムで得る周辺確率から計算する。差が 0 になる点が最尤解(指数型分布族の性質)。
  • 実際には過剰適合を防ぐため、L2 正則化を加えて勾配法(L-BFGS や SGD)で最適化する。
  • デコードでは \(Z(\mathbf{x})\) が系列によらないので不要。ビタビアルゴリズムで動的計画法により \(O(TM^2)\) で \(\arg\max\) を求める。
アルゴリズム 漸化式 求めるもの
前向き \(\alpha_t(j)=\sum_i\alpha_{t-1}(i)\,\exp\psi_t(i,j)\) \(Z(\mathbf{x})=\sum_j\alpha_T(j)\)
ビタビ \(\delta_t(j)=\max_i\bigl[\delta_{t-1}(i)+\psi_t(i,j)\bigr]\) 最尤系列(argmax を覚えて逆にたどる)

ここで \(\psi_t(i,j)=\sum_k w_k f_k(i,j,\mathbf{x},t)\) は位置 \(t\) でラベルが \(i\to j\) と遷移するときのスコアである。

HMM・ソフトマックス回帰との関係

  • ロジスティック回帰(ソフトマックス回帰):\(T=1\) の CRF にあたる。CRF は系列全体を1つのソフトマックスで正規化したもの。
  • 隠れマルコフモデル(HMM)は同時確率 \(P(\mathbf{x},\mathbf{y})\) を作る生成モデルで、観測の独立を仮定する。CRF は条件付き確率だけを扱うので、入力に任意の特徴(前後の語、接頭辞など)を使える。
  • 各時刻で別々に正規化する MEMM は、遷移先が少ない状態に確率が偏るラベルバイアスを起こす。CRF は全体で正規化するので起きない。
  • 深層学習では、BiLSTM や Transformer の出力を \(f_k\) の代わりにするニューラル CRF(BiLSTM-CRF)が使われる。

試験の着眼点

  • ナイーブベイズの「ナイーブ」はクラスを与えたときの特徴の条件付き独立。特徴どうしが無相関という意味ではない。
  • 分母 \(P(\mathbf{x})\) は \(\arg\max\) では無視できる。実装は対数の和で行う。
  • ゼロ頻度にはラプラス平滑化(分子 \(+\alpha\)、分母 \(+\alpha V\))。
  • ガウス過程は関数の分布。予測が平均と分散で出る点、\(O(N^3)\) の計算量、周辺尤度でハイパーパラメータを決める点を押さえる。
  • 周辺尤度の第1項は適合、第2項(\(\log\) 行列式)は複雑さへの罰。
  • CRF は識別モデル(HMM は生成モデル)。学習は対数尤度の最大化、推論(デコード)はビタビ。分配関数 \(Z\) は全系列の和で、前向きアルゴリズムで効率的に計算する。

参考