bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

Haskellでニューラルネット

1.ニューラルネット

ニューラルネットは元来あまり好きではない。人間の脳神経網を表現するモデルとして使われてきたのだが、脳神経網とニューラルネットワークとの間の対比関係を得る手段がないことが嫌いであることの最大の理由である。しかし、昨日、谷口忠大著「記号創発ロボティックス」の本を読んで考え直してみることにした。この本では、「物体認識」や「分かち書き」が教師なし学習でできる例を示してる。これは、人間と同じように、環境との相互作用を通して自身で成長してゆくロボットが可能であることを示唆している。画期的なことといえる

そこで、Haskellの世界でニューラルネットワークがどの程度サポートされているのかを調べることにした。ニューラルネットワークのライブラリはいくつか用意されているようだが、私が見つけたのは、
A functional approach to Neural Networkである。ニューラルネットワークの理論的背景については、この文献にも簡単に書いてあるし、説明書もたくさんあるので、ここでは、触れない。

この説明書に基づいたプログラムはオンラインで提供されている。このプログラムを試すには、ここから、ZIPファイルをダウンロードし、解凍する。また、学習とテストの時に用いる手書き文字のファイルも入手する。このファイルは解凍するとXXX.idx1(3)-ubtypeのファイル形式になるが、これをXXX-idx1(3)-ubtypeとし、ニューラルネットワークのプログラムと同じディレクトリに納めておく。

また、ニューラルネットワークのプログラムは行列計算を行うので、hmatrixもインストールする。hmatrixはCのライブラリを使用するので、gsl-lapack-windows.zipをダウンロード、解凍し、あるフォルダーに納める。ここでは、C:\gslにする。この時、環境変数pathにこのディレクトリを書き込み、アクセスできるようにする。

hmatrixのインストールは次のように行う。

cabal install hmatrix --extra-lib-dir=C:\gsl --extra-include-dir=C:\gsl

後は、ニューラルネットのプログラムがインストールされているディレクトリに移り、

cabal install
backprop-example

とする。但し、backprop-exmple.cabalの中で定義されているモジュールは最新ではないので、修正する必要がある。今回は、
hmatrix == 0.14.* -> hmatrix == 0.16.*
bytestring == 0.9.* -> bytestring == 0.10.*
とした。
実行結果は認識率87.5%と出力されると思う。