ロジスティック回帰の尤度と交差エントロピーと勾配降下法

machinelearning

ロジスティック回帰

単純パーセプトロンの活性化関数を、0か1の値を取るステップ関数ではなく値域\((0,1)\)のシグモイド関数\(\sigma\)にすることで 確率を返せるようにしたモデル。

$$ p = \frac{1}{1+e^{-(w^Tx + b)}} $$

ニューラルネットワークと活性化関数 - sambaiz-net

シグモイド関数という非線形の関数を通すので非線形分離できそうな気もするが 上の式を変形すると次のようになり線形分離モデルであることが分かる。 例えば閾値を0.5とすると\(w^Tx + b = 0\)が境界となる。 層を増やせば非線形分離できるようになる。

MLPと誤差逆伝搬法(Backpropagation) - sambaiz-net

$$ \begin{align*} p &= 1 - \frac{1}{1+e^{w^Tx + b}} \because \sigma(-x) = 1 - \sigma(x) \\ \frac{1}{1-p} &= 1 + e^{w^Tx + b} \\ \ln \frac{p}{1-p} &= w^Tx + b \end{align*} $$

この左辺をロジットといい\([0,1]\)の確率から実数\([-\infty, \infty]\)への写像となっている。 また、対数を取っている\(\frac{p}{1-p}\)をオッズといい、 事象の起こりやすさを比較する際に用いられるオッズ比はこの比となっている。

尤度関数と交差エントロピー誤差関数

尤度関数(likelihood function)はある前提条件に従って事象が起きる場合に、 観測された事象から推測される前提条件の尤もらしさを表す尤度を返す関数。

例えばコインを3回投げて2回表が出た場合、前提条件である表が出る確率を\(p\)とすると 尤度関数は

$$ L(p) = p^2(1-p) $$

となり、これを微分すると

$$ \begin{align*} \frac{dL}{dp} &= 2p - 3p^2 = 0 \\ p &= \frac{2}{3} \end{align*} $$

となるので限られたサンプルより\(p\)の最も尤もらしいと考えられる値は\(\frac{2}{3}\)ということになる。

モデルの学習ではパラメータを、各入力に対する正解データの確率の尤度の和が最大になるように最適化していく。 通常のロジスティック回帰では二値分類を行うので正解データ\(t\)は\(0,1\)とし、\(y = p(1)\)とする。 ちなみに他クラス分類を行う際は正解データは\(0,1,2\)のようにするのではなく正解のindexだけ1でほかは0のone-hot vectorにする。

$$ \begin{align*} L(w,b) &= \sum p_{x_n}(t_n) &= y{_n}^{t_n} (1-y_n)^{1-t_n} \end{align*} $$

ただ、このままだと積になっていて計算しづらいので対数を取って和にして、 減らすべき誤差として扱うため負の数にする。これを交差エントロピー誤差関数という。 この値を最小化させるということは尤度を最大化させることになる。

$$ \begin{align*} E(w,b) &= -\log L(w,b) \\ &= -\sum {(t_n\log y_n + (1-t_n)\log (1-y_n))} \end{align*} $$

自己情報量、エントロピー、KL情報量、交差エントロピー - sambaiz-net

勾配降下法

誤差を\(w,b\)でそれぞれ偏微分したのを引いてパラメータを更新していき、 勾配が0になるような値を探す。

学習率\(\eta\)は大きすぎると収束しないが、小さすぎても収束に必要なステップ数が増え、さらに局所最適解で止まってしまう可能性が高まるので 最初は大きくして徐々に小さくしていったりする。

$$ \begin{align*} w^{k+1} &= w^k - \eta \frac{\partial E(w,b)}{\partial w} \\ &= w^k - \eta \Sigma \frac{\partial E_n}{\partial y_n}\frac{\partial y_n}{\partial w} \\ &= w^k + \eta \Sigma(\frac{t_n}{y_n} - \frac{1-t_n}{1-y_n})y_n(1-y_n)x_n \because \sigma^\prime(x) = \sigma(x)(1 - \sigma(x)) \\ &= w^k + \eta \Sigma(t_n - y_n)x_n \\ b^{k+1} &= b^k - \eta \frac{\partial E(w,b)}{\partial b} \\ &= … \\ &= b^k + \eta \Sigma(t_n - y_n) \end{align*} $$

ほかに局所最適解で止まるのを避ける手法として、サンプル全体ではなく毎回異なるMinibatchを用いる確率的勾配降下法(SGD: Stochastic Gradient Descent)や、SGDに慣性を追加したMomentumなどがある。

参考

機械学習6 カーネル・確率的識別モデル1.pptx

情報数学

詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~