Skip to content

【Ruby】Numo::NArray でニューラルネットワークでMNIST認識

 ノンエンジニアが Ruby + NArray を使って多層ニューラルネットワークを書き、比較的高速にMNISTを分類してみる話の続きです。全結合のニューラルネットワークを使用しています。以前は旧NArrayを使っていましたが、今回は新しいNumo::NArrayに書きなおしてあります。numo/linalg で OpenBLAS を使ってますので旧NArrayよりも高速に学習できます。

nn2.rb

MNISTを読み込むコードです。

 あとは適当に書き換えればdenoising autoencoderで多層ニューラルネットワークとかも出来るかと思います。

 ようやくNumo::NArrayに乗り換えることができました。

 でもMNISTはそろそろ飽きたし、数式を読む力が皆無なので(↑だって単に動作することを確認しているだけで間違いがきっとある)これ以上はちょっと難しい。Caffeのmodelzooの学習済みCNNをChainerに入れて、重み付けを取り出して、Ruby/NArrayでニューラルネットワークに移植して順伝播とかすごい頑張ったらできるんだろうか。そのまえに少しずつPythonとかChainerとか勉強しないと。

 それよりも、どうすれば実データを試せるかといった方向を考えていきたいところ。gem install で自動でライブラリやコマンドがインストールできるように、色々なデータに対して、フリーのデータセットと、フリーの学習済みモデルが公開されて、それを人工知能にインストールする未来が薄っすらと想像される。

 データセットが公表されれば、学習済みモデルを作成して、モデルで実データを評価するところまで誰でも行ける。
学習済みモデルが公開されれば、モデルで実データを評価することだけできる。

 データセットには個人情報が含まれているので、公開されているデータセットはMNISTのような、中立的なものばかりになる。一方で学習済みモデルはそれ自体個人情報を含まないので、個人情報を元にしたデータセットから作られたものであっても、比較的自由に配布できるはずだと思う。データの収集とモデルの配布が今後の焦点。
 1.5歩先はこのあたりかな。海外のプロジェクトでも探してみるか。。

2 Trackbacks/Pingbacks

  1. […] Gym はPython製なので、Rubyとはパイプで通信することにしました。最初は自作の簡易ニューラルネットワークを流用しようと試みましたが、RMSProp […]

  2. […]  チュートリアルでMnist手書き文字認識があるそうなので、以前作成したRubyでニューラルネットでMnist認識するコードを使って投稿してみた。使用したニューラルネットワークはこんな感じ。 […]

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*