8月の頭からディープラーニングを実装していたのを、先日、プレゼンしてきました。
プログラマのための数学勉強会@福岡 - connpass
※追記 2023/4/12
SpeakerDeckにも置いてます
https://speakerdeck.com/kishida/weakest-deep-learning-i-implemented
GPU対応したり、ドロップアウトとかミニバッチとかいろいろ実装して、結構つよくなってます。
ちゃんと学習してくれないこと以外は。
ソースはこんな感じになってきています。
https://github.com/kishida/neuralnet/tree/CorrectOperationAsCCN
GPU対応にはaparapiを使っています。JavaでGPUコードが書けるスグレモノです。
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で記述できるようになったり、だいぶ まっとうなフレームワークになってきた気がします。