Entry

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

2010年03月02日

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

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

パターン認識と機械学習 上 - ベイズ理論による統計的予測
C. M. ビショップ
シュプリンガー・ジャパン株式会社
売り上げランキング: 32055
おすすめ度の平均: 3.5
2 オリジナルに劣る...
5 機械学習の新・定番教科書,待望の邦訳!

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

である.

『パターン認識と機械学習 上』(C. M. Bishop,シュプリンガー・ジャパン,2007年,p246)

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

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

シグモイド微分の図

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

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

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN