ニューラルネットワークの実装

pythonの練習とニューラルネットワーク(多層パーセプトロン)の復習として一度実装をしてみようと思い書いてみた。 バッグプロパゲーションによる学習は教科書等で読んでわかっているつもりだったが、実際に手を動かしてパラメータの更新式を導出しようとするとかなり手間取った。 さらっと読んでわかったつもりになっているのはやはりよくない。

適当な分類問題のデータセットに対して適用してみて、ある程度予測できているように見える。おそらく正しく実装できているはずだけど、機械学習のアルゴリズムは正しく動いているのかどうかの判断が難しく、どうも自信が無い。

ラベルプロパゲーション(Zhu and Ghahranabum, 2002)のnumpyによる実装

numpy, matplotlibの練習がてら、ラベルプロパゲーションを実装した。

結果:

わかりにくいが、左図が入力で緑点はラベルのないサンプル, 青赤点はそれぞれ-1, +1のラベルが付いたサンプルを表している。

右図はラベルプロパゲーションの結果で、入力中の少数のサンプルだけが持っていたラベルの情報が距離に応じて伝搬されている。

f:id:t_a_b_e:20121011150633p:plain