Help us understand the problem. What is going on with this article?

Ruby でニューラルネットワーク

More than 3 years have passed since last update.

MNIST のデータを使って Ruby で手書き数字を認識する

ゼロから作るDeep Learning ――Pythonで学ぶディープラーニングの理論と実装
は deep learning の入門書として、素晴らしい本です。

Python で書かれた多数の例題を通じて、具体的に deep learning の仕組みについて学んでいくことができます。

ただ、私はふだん、Ruby でプログラムを書くことが多いので、Ruby でニューラルネットワークを実装してみたら、どうなるか興味がありました。

「3章 ニューラルネットワーク」のある例題を Ruby に書き直してみました。

https://github.com/elm200/nn-mnist-ruby/

使い方は、Github レポジトリの README.md を参照してください。

NMatrix という行列のライブラリを使っているだけで、他には特別なニューラルネットワーク用のライブラリは使用していません。そのため、ソースコードを読んでみると、ニューラルネットワークの雰囲気がつかめるかもしれません(今回は、3層のニューラルネットワークを使用しています)。

学習済みの重みとバイアスに関しては、元の Python の例題のものを使わせていただきました。

Python を Ruby に書き換えてみての感想

行列のライブラリとして、SciRuby の一部らしい NMatrix を使ってみたのですが、NumPy より明らかに使い勝手が悪かったです(ただ、チュートリアルがあまりなくて、私の使い方が間違っているせいかもしれませんが)。NumPy だと行列を含む数式を自然にプログラム上で表現できるのに対して、NMatrix はそこまで自然にかけませんでした。あと、スカラー・ベクトル・行列が混ざった式で、適当に型変換をしてくれるブロードキャスティングの機能もいまひとつでした。

私は、普段 Ruby を使うので、できれば Ruby でやりたいのですが、やはり機械学習は Python でやるのが、すくなくとも2016年の現在は、正解であるようです。

私について

普段は、Ruby on Rails でウェブサイトを作る仕事をしている。機械学習については、まだ初心者。大学レベルの線形代数を復習して、いま deep learning について学んでいるところ。deep learning 以外の機械学習の手法はほとんど知らない。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away