波動と機械学習

人間の声を色相の変化を利用して3次元プロットした図に美しさを感じて、そのまま音声解析の道を進んでいます。自分なりに調べて実装できたものから更新していきます。アドバイス、アイデアなどあれば是非お願いします。

最尤推定・交差エントロピー誤差(1)

前回:確率の導入では分類の問題に確率を用いるメリットと、シグモイド関数について解説してきました。

今回からはそのシグモイド関数の形の決定について扱っていきましょう!

少し長いので2回に分けて学んでいきます!

 

問題:体重データから性別を推定する。

解決したい問題の例は前回同様です。

f:id:araitbs007:20190409044850p:plain

今回は前回勉強したシグモイド関数を色々な形に変形してみるところからスタートしてみましょう!

 

シグモイド関数の変形

以前も紹介しましたが、シグモイド関数の式は以下の通りです。

\varsigma _{a}(x)={\frac {1}{1+e^{-ax}}}={\frac {\tanh(ax/2)+1}{2}}

(※wikipediaから引用)

 

この関数の引数に様々なパターンの値を代入して形がどう変化するのか見てみましょう。

f:id:araitbs007:20190415030511p:plain

左上:ε(x) 標準シグモイド関数 

左下:ε(x-20) 右に20平行移動

右上:ε(-0.3*x) 形を滑らかに変形・左右を反転

右下:ε(0.15x+5) 上記3つの応用

 

ただデータ(x)を用いるのでなく、1次関数(ax+b)になるよう加工してからシグモイド関数へ代入すると、変形できることがわかります。

 

「形が自由自在に操れる」ということは、「どんなデータセットに対しても適切な形のシグモイド関数を求められる」ということになります。

すると、どんなデータセットが与えられたとしても確率が正確に表せるシステム構築へと繋がるわけです。

 

最尤推定

さて、ここで確率の求め方の紹介を挟みます。

f:id:araitbs007:20190408051241p:plain

上図の緑色の線で囲まれた部分に注目してください。

青点が2個、赤点が4個入っているのが確認できると思います。

 

では、問題です。

この緑色の線の中から一つデータを選ぶとき、男性のデータが選ばれる確率はいくらでしょう?

 

もちろん全部で6個あるデータのうち、2個が男性のデータなので確率は2/6(33%)が正解ですよね。

この方法は小学生の時から使っている分かりやすい解析的な確率導出の手段です。

 

しかし、以下2点の理由からオススメの方法とは言えません。

  • 機械学習では逐次教師データが更新される場合があるため、その都度数え直す手間が大きい。
  • 男性データの個数を数えるのに条件分岐式を使うことが予想される。(if文などの条件分岐式は多用すると実行に時間が多くかかる恐れがある。)

 

そこで出てくるのが最尤推定です!

先ほど緑色の線で囲まれたデータが、男性のものである確率は33%と求めました。

その確率が尤もらしい(もっともらしい)、つまり「それっぽさ」の度合いを表す言葉が尤度です。

求め方は男性のデータ2個(各33%)、女性のデータ4個(各66%)の場合なので…

0.33 × 0.33 × 0.66 × 0.66 × 0.66 × 0.66 = 0.0206… となります。

0.33を2回0.66を4回掛け算すれば良いです。

 

実はこの尤度という値は、確率(今回でいうと男性のデータが選ばれる確率の値)が正しく導かれているときに最大値をとります。

(よって男性33%、女性66%のとき最大値)

 

本当に他の値の組み合わせで最大値を取らないか検証します。

男性のデータが得られる確率が10%、女性のデータが得られる確率が90%じゃないかと予想して尤度の計算をしてみます。

0.1 × 0.1 × 0.9 × 0.9 × 0.9 × 0.9 = 0.0065… となりました。

0.9という数字を使っていることから数値が大きくなるかと思いきや、結果はやはり先ほどの男性33%、女性66%の組み合わせの方が圧倒的に尤度が大きいことが分かります。

 

このように確率の「それっぽさ」は尤度の最大化計算によってなされます。

  

さて、以前:勾配降下法(理論編)にて、ある関数が最小値をとるようなパラメータの導出法を学びました。

 

今回の記事で学んだ尤度は最大化することを目標としていますが、-1をかけてやることで最小化問題に変化します。このように尤度の符号を変化させたものを交差エントロピー誤差と呼びます。

 

交差エントロピー誤差を使うことで以前学んだ勾配降下法の学習プロセスをそのまま使うことができます。

 

まとめ

次回はシグモイド関数で表された確率の尤度について学びます。