ぼくの実装した最弱のディープラーニング

8月の頭からディープラーニングを実装していたのを、先日、プレゼンしてきました。
プログラマのための数学勉強会@福岡 - connpass



GPU対応したり、ドロップアウトとかミニバッチとかいろいろ実装して、結構つよくなってます。
ちゃんと学習してくれないこと以外は。


ソースはこんな感じになってきています。
https://github.com/kishida/neuralnet/tree/CorrectOperationAsCCN


GPU対応にはaparapiを使っています。JavaGPUコードが書けるスグレモノです。
aparapi - API for data parallel Java. Allows suitable code to be executed on GPU via OpenCL. - Google Project Hosting
けど、バグがあってはまってたので、修正してパッチ投げてます。
Add parenthesis around conditional expression by kishida · Pull Request #10 · aparapi/aparapi
最近停滞してるっぽくて、取り込まれる気がしない。
※ 9/9 取り込まれました!


参考文献としては、とりあえずこの本。ディープラーニングについて、だいたいわかります。基本的には、この本を参考にして実装しました。

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

細かいパラメータやニューラルネットワークの構成などは、ニューラルネットが流行りだすきかっけになった、この論文を参考にしてます。
ImageNet Classification with Deep Convolutional Neural Networks
このふたつを読むと、実装に必要な情報はだいたい揃います。


学習用の画像には、CALTECH256というのを使っています。
http://www.vision.caltech.edu/Image_Datasets/Caltech256/
※ 9/9追記 カテゴリごとの画像数が、80枚だったり700枚だったり、偏ってるので注意


学習結果を保存できるようになったり、ニューラルネットの構成をJSONで記述できるようになったり、だいぶ まっとうなフレームワークになってきた気がします。