プログラミングメモ - tanh 関数とかシグモイド関数とか

2010/03/02

パターン認識と機械学習 C. M. Bishop シュプリンガー・ジャパン 2007年
パターン認識と機械学習 C. M. Bishop シュプリンガー・ジャパン 2008年

手を焼いている『パターン認識と機械学習』(以下,PRML)も,やっとのことで上巻の最後までやってまいりました。

読むまではなんとかなるんですけど,問題を解いたり演習用のプログラムを作ったりしていると,どうしても時間がかかってしまう。あたしゃ理論家ではなくて,動くものを作ってナンボなところがあるので,口だけ番長ならんためにもチマチマ作っています。読んで理解していたつもりでも,プログラムを作ってはじめて理解できるところもあるわけで。

PRML 上巻の最後はニューラルネットワーク(NN)。原書は分冊になっていないので,全体としてみたら特別な区切りとはいえないんですけれど,個人的には一息つける区切り目です。

NN は,もう有名すぎるほど有名な近似アルゴリズムで,非線形な関数もバシバシ近似してしまう強力な道具です。で,この非線形な関数も近似してしまう仕組みを保証しているのが,tanh 関数(ハイパーボリックタンジェント)や(ロジスティック)シグモイド関数。正確には,両者は同じもんなんですが。

あたしゃこれ以上説明できるほど学がないので,詳しい話は他のリソースをあたって欲しいんですけれど,素人のあたしからしてみると,そもそも tanh 関数やシグモイド関数を使うのはどうしてなんだろう,と思っていたのでした。本書を読む前に,他の資料をあたったんですけれど,なんか当たり前のように使っているもんで,理由がよく分からなかった。まじないかなんかの類かと。

で,PRML を読んだところ,こんな風に書いてあった(数式は簡体で)。

一方,隠れユニットは

h(a) = tanh(a)

で与えられるシグモイド活性化関数を持つものを考える.ここで

tanh(a) = {exp(a) - exp(-a)} / {exp(a) + exp(-a)}

である.

この関数はその微分が特に単純な形で書けるという便利な性質を持つ.すなわち

h'(a) = 1 - {h(a)}^2

である.

[3] パターン認識と機械学習. 上. C. M. Bishop. シュプリンガー・ジャパン. 2007年. p246.

あー……逆伝播(Backpropagation)するとき勾配(微分)を評価するのに,簡単な方がやりやすいじゃんってことなのか。それだけか。たしかに便利だ。

じゃ,ほんとに微分してそうなるのか,と,疑い深くも手計算。メモを無くしそうなのでここに貼っとくです。

ふーん……。というだけなんですが。

専門にしてる学生さんとかには朝飯前の話なんでしょうけどね。もうこんな具合で,チマチマとやってるわけです。なんだか,ちょこっと貼り付けるつもりだったのに,大仰になってしまった。失敗。チマチマ。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.