まんぼう日記

takataka's diary

Pylearn2 の tutorial でお勉強 - 2時間目

Pylearn2 の tutorial でお勉強 - まんぼう日記 のつづき.MLP のチュートリアル

http://nbviewer.ipython.org/github/lisa-lab/pylearn2/blob/master/pylearn2/scripts/tutorials/multilayer_perceptron/multilayer_perceptron.ipynb

の Part3 から.

Part3

 Part2 との違いは次の通り.

  • (784)-500-10 の2層から (784)-500-1000-10 の3層に
  • 隠れ層ニューロンを sigmoid から rectified linear に
  • 学習則を BGD から SGD (Stochastic Gradient Descent) にして慣性項を付ける

この日記は,機械学習とかニューラルネットのことを知らない人に解説しよう,ちうような親切な代物ではないので,SGDって? 慣性項って? というようなことがわからければ自分で調べましょう(そんな調子ではほんまに自分以外誰の役にも立たないメモにしかなりませんが…すいません,そういう日記です (^^;)

 

さて,チュートリアルのページの指示通りに実行すれば結果が出ますが,自分でいろいろ実験するためには,いろんな条件やパラメータをどうやって指定するのかを知っときたいわけで.そういうのは,

Library Documentation — Pylearn2 dev documentation

で調べたらいいみたい.例えば,慣性項をepoch毎に大きくしてるけどどうやって指定するのか&どんなスケジューリングしてるのか,とかそういうのは,

上記ページの Training ==> Training Algorithms ==> Learning rule の先

Training — Pylearn2 dev documentation

class pylearn2.training_algorithms.learning_rule.MomentumAdjustor

の説明を読むとわかります.慣性項の係数は最初 0.5 で,10 epoch 目に 0.99 になるように線形に大きくしていって,その後はずっと 0.99,という設定になってますね.

 

学習を実行してみると,44 epoch で停止.計算時間は

real     8m57.848s
user     19m43.214s
sys     0m19.560s

前回寄り道でやったrectified linearな隠れ層ニューロンをもつ2層MLPの場合よりもdeeper(層を追加した)やのに計算時間が減ってるのが謎 (?_?) ... そっか,BGDの方は単純なバッチ平均の最急降下じゃなくて直線探索してたのでした.SGDの方はランダムに選んだバッチでバッチ平均の最急降下(慣性項つき)するだけやから早いと.

 

誤識別率の方は

$ ../../print_monitor.py mlp_2_best.pkl  | grep misclass
train_y_misclass : 0.00232
valid_y_misclass : 0.0206
test_y_misclass : 0.0204

チュートリアルでは test_y_misclass が 0.0175 まで減ったと言ってるんやけどなあ.重みの初期値の違いによるばらつきかと考えてもっぺん実行しても,たかたかの実験ではやぱしテスト識別率は 0.02 程度.チュートリアルでは GPU 上で動かしてるとこをたかたかは CPU 上で実行してるって違いはあるけど…浮動小数点数の精度が違ってて,チュートリアルの実験条件では,精度の低いGPUの方で性能が出易くなってるとか? むー,とりあえず先へ進もう.

Part4

MLPの構造はそのままで,パラメータ正則化を導入する実験.パラメータのL2-norm正則化,つまり \( \Vert \boldsymbol{w} \Vert^2 \) での Weight Decay です.バイアス項には入れないようにしてるみたい.誤識別率は

train_y_misclass : 0.0
valid_y_misclass : 0.0161
test_y_misclass : 0.0165

チュートリアルでは test_y_misclass は 0.154 と言ってるけど.これくらいの差は初期値の違いその他もろもろによる変動の範囲かな.

 

つづく Pylearn2 の tutorial でお勉強 - 3時間目 - まんぼう日記