機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

確率的生成モデル - シグモイド関数

確率的生成モデル

線形識別を最小二乗法で解くとうまくいきません。*1 最小二乗法は誤差が正規分布に従うことを前提とした手法ですので、どのクラスに属するかという識別の問題ではこの前提が成り立っていないからです。*2 確率的生成モデルでは、データがどのような確率分布に従って生起しているのかを考慮してモデルを考えていきます。

2クラスの場合

クラスC_1、クラスC_2の2クラスの問題を考えます。データ\mathbf{x}が与えられたとき、クラスC_1に属する確率は、ベイズの定理より、


\displaystyle P(C_{1}|\mathbf{x}) = \frac{P(\mathbf{x}|C_{1})P(C_{1})}{P(\mathbf{x})} \tag{1}

と書けます。事後確率P(C_{1}|\mathbf{x})を出力結果とするようなモデルを考え、これが0.5を超えるならクラスC_{1}に識別する、とします。そのようなモデルを考えたいので、右辺が\mathbf{x}の線形関数で表せると都合が良いです。

式(1)は周辺確率、確率の乗法定理を使えば*3


\displaystyle P(C_{1}|\mathbf{x}) = \frac{P(\mathbf{x}|C_{1})P(C_{1})}{P(\mathbf{x}|C_{1})P(C_{1}) + P(\mathbf{x}|C_{2})P(C_{2})} \tag{2}

と展開できます。ここで、


\displaystyle a = \ln \frac{P(\mathbf{x}|C_{1})P(C_{1})}{P(\mathbf{x}|C_{2})P(C_{2})} \tag{3}

とすれば、


\displaystyle \exp(a) = \frac{P(\mathbf{x}|C_{1})P(C_{1})}{P(\mathbf{x}|C_{2})P(C_{2})} \tag{4}

だから、これを式(2)に代入して計算していけば


\begin{eqnarray*}

\displaystyle P(C_{1}|\mathbf{x}) &=& \frac{\exp(a)P(\mathbf{x}|C_{2})P(C_{2})}{\exp(a)P(\mathbf{x}|C_{2})P(C_{2}) + \exp(-a)P(\mathbf{x}|C_{1})P(C_{1})} \tag{5} \\
\displaystyle & =& \frac{1}{1 + \exp(-2a)\frac{P(\mathbf{x}|C_{1})P(C_{1})}{P(\mathbf{x}|C_{2})P(C_{2})}} \tag{6} \\
\displaystyle & =& \frac{1}{1+\exp(-a)} \tag{7}
\end{eqnarray*}

となり、データ\mathbf{x}が与えられたとき、それがクラスC_1に属する事後確率が式(7)のように表すことができました。これを\sigma(a)で表し、シグモイド関数と呼びます。

さて、ここで式(3)が\mathbf{x}の線形関数\mathbf{w}^{T}\mathbf{x}で表すことができるなら、\mathbf{x}が与えられたとき、クラスC_{1}である確率P(C_{1}|\mathbf{x})


P(C_{1}|\mathbf{x}) = \sigma(\mathbf{w}^{T}\mathbf{x}) \tag{8}

で書けることになります。もちろん


P(C_{2}|\mathbf{x}) = 1 - \sigma(\mathbf{w}^{T}\mathbf{x}) \tag{9}

です。

シグモイド関数のグラフ

シグモイド関数は以下のような形の関数で、どのような入力でも出力は[0,1]の区間に収まっておりますので、どちらのクラスに属するか?という2値の問題を考えるのに適していますし、確率として解釈することもできます。ベイズの定理から出発したのだから確率として解釈できるのは当然ですが。


2次元データの識別を考えたとき、シグモイド関数の出力のイメージは以下の図のようになります。この出力が0.5を超えるかどうかで、どちらのクラスに属するかを判別します。そして係数\mathbf wを適切に求めることによって、境界である0.5の位置が調整されます。


以上より、事後確率P(C_{1}|\mathbf{x})\sigma(\mathbf{w}^{T}\mathbf{x})の出力として表せることがわかりました。前提としては式(3)が\mathbf{w}^{T}\mathbf{x}で表せることなのですが、実際に様々な分布において、式(3)が\mathbf{w}^{T}\mathbf{x}で表すことができるようです。

式(3)で登場するaが唐突で、なぜシグモイド関数が出てきたのかがなんとなくすっきりしませんが、微分がしやすいとか計算上のメリットがあるようです。

代表としてP(\mathbf{x}|C)が正規分布の場合にa\mathbf{w}^{T}\mathbf{x}と表せることを次に確認したいと思います。→aが線形関数で表されることの確認