最尤推定・交差エントロピー誤差(2)
前回:最尤推定・交差エントロピー誤差(1)に引き続き進めていきます。
まだご覧になっていない方は、前回記事から見ることをオススメします。
今回は今までやってきたことの総まとめです。分類問題の最後ですので頑張りましょう。
上記の図は今まで学んできた分類の処理を簡単にまとめたものです。
順を追って見直していきます。
(1)シグモイド関数の入力にする。(2)シグモイド関数の決定
ここでは直線の式(1次関数)をシグモイド関数の入力として用いることで、まるで直線の両端を押しつぶしたようなグラフが得られることが分かりました。
直線のパラメータ(a,b)を求めることで、尤もらしい確率のグラフが完成します。
(3)尤度の計算
前提としてyは「与えられたデータが男性の体重である確率」を表しており、tは「実際に体重データが男性のものだったのかどうか」を表します。
(※yは(1)(2)で作成したシグモイド関数のこと)
プログラムの実装を考えると与えられたデータが「男性だった場合」を「女性だった場合」で条件分岐式(if文)を書きたくなるところですが、数学の力でうまく表現してやりましょう。
L= y ^ t ( 1 - y ) ^ ( 1 - t )…上記の図にも同じ数式があります。
このような表現をすることで条件分岐式を使わずともうまく計算できます。
男性データ(識別子:1)を扱う時は( 1 - y ) ^ ( 1 - t )の部分が1になります。
女性データ(識別子:0)を扱う時はy ^ t の部分が1になり掛け算されます。
ここで分類問題とは別に学べることは、わざわざ条件分岐式のようなプログラミング記法を頼らなくても、数学の力を使うとうまく処理できることがあるということです。
地道で単調なコーディングをすることは時として重要ですが、物事の構造に迫り活用することもプログラミングの醍醐味だなと感じます。
(4)交差エントロピー誤差に直してパラメータの導出
パラメータの導出のために最尤推定法としてここまで話を進めてきました。
つまり尤度の最大化問題を考えてきたわけです。
しかし、以前学んだ勾配降下法を使うためには値の最小化問題を考えたいので尤度に-1をかけてしまいます。
すると、パラメータ(a,b)の推定を行うことができます。
さて、今回は2つのものに分類する問題について考えてきました。
分類(実装編)の記事は今まで3回に分けてお伝えしてきたことを1つの記事にまとめて掲載しようと考えています。