書籍『ゼロから作るDeep Learning』で自分なりに学ぶ

もう1年以上前になりますが、書籍イラストで学ぶ ディープラーニング」を購入して少しずつ読み進めていたのです。↓

Pylearn2, Caffeと来て、Chainer, TensorFlowと、ディープラーニング系のライブラリが乱立し過ぎて、ある時点から追いかけるのをやめておりました。そもそももう少し仕組みというか、特性を理解しないと活用もできないんだ...

ところが、読み進めている途中で壁にぶち当たりました。この書籍、途中からどんどん数式率が上がって行き、あんまりイラストで教えてくれなくなるんですよ(笑)

数式が苦手だから「イラストで学ぶ」に期待していたのですが、考えが甘かったようです。
載っているサンプルコードは各種Deep Learningライブラリの使い方なので、肝心の仕組みは当然隠蔽されていて、そこから仕組みを理解するのは難しい。(ライブラリの使い方を覚えられる分実践的なんだけどね)

なので、実装しながら仕組みを理解していく方針に切り替えることにした。
ということで、こちらの書籍に頼ることにしました↓ (すぐ書籍買っちゃう)

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

Pythonのサンプルコードと、書籍の正誤表はGitHubにある↓
deep-learning-from-scratch - 『ゼロから作る Deep Learning』のリポジトリ
deep-learning-from-scratch - 『ゼロから作る Deep Learning』のリポジトリ

これでディープラーニングを作れる(笑)


スポンサーリンク



書籍のサンプルコードはPythonですが、そこは慣れたUnity(というかC#)環境に置き換えて学ぼうと思い、PythonのNumPyに代わる数値計算ライブラリを探していたのでした。
立て続けにUnityの話題ですが。 数学的なことをUnityで勉強しようかなという気分になってきた。お勉強用途だと最近はPython、というかPythonのNumPyが手軽で良く使われてるイメージ。 Unityでも使える数値計算ライブラ...

で、Math.NET Numerics導入後に少し調べたら、似た発想の人がいた↓
『ゼロから作る Deep Learning』を読んで、C# で実装してみたくなった。 問題は NumPy の変わりに何を使うかだけど、C# には Math.NET Numerics というのがある。 numerics.mathdotnet.com ベクトルや行列の計算はできそう。テンソルはやってみないと分からない。 ま...
『ゼロから作る Deep Learning』を読んで C# で実装したみたくなった続き。 今度はニューラルネットワークで使う関数に挑戦してみた。 実装するのは活性化関数であるシグモイド関数、ReLU 関数。 そして出力層で使うソフトマックス関数。 あとおまけでステップ関数も。 ひとまず畳み込まないニューラルネットワーク...
C# でゼロから Deep Learning を実装する挑戦の続き。 この挑戦では、『ゼロから作る Deep Learning』同様に、 手書き数字認識のニューラルネットワークを実装するので、 MNIST データセットを利用する。 MNIST handwritten digit database, Yann LeCun...
C# でゼロから Deep Learnig を実装する挑戦の続き。 今回は超単純な 3 層ニューラルネットワークを実装してみた。 といっても、『ゼロから作る Deep Learnig』の 3 章の写経みたいなもの。 C# + Math.NET Numerics で試行錯誤しながら書いたコードは次の通り。 using M...
C# でゼロから Deep Learning を実装する挑戦の続き。 今回は第 4 章で紹介されている損失関数(2乗和誤差と交差エントロピー誤差)を実装してみた。 using MathNet.Numerics.LinearAlgebra; using System; using System.Linq; namespa...
C# でゼロから Deep Learning を実装する挑戦の続き。 今回は第 4 章の数値微分を実装してみた。 using System; namespace NumericalDifferentiationSample { class Program { static void Main(string[] args...
C# でゼロから Deep Learning を実装する挑戦を少しずつ進めている。 まだ第 4 章だけど。 今回は勾配を実装してみた。 using MathNet.Numerics.LinearAlgebra; using System; using System.Linq; namespace NumericGrad...
C# でゼロから Deep Learning を実装する挑戦はまだ 4 章。 機械学習で使う勾配降下法を実装してみた。 勾配を計算するメソッドは前回記事を流用している。 using MathNet.Numerics.LinearAlgebra; using System; using System.Linq; name...
C# でゼロから Deep Learning を実装する挑戦の続き。 4 章もようやく終盤で、いよいよ機械学習に入る。 今回はニューラルネットワークに対する勾配を実装してみた。 using System; using System.Linq; using MathNet.Numerics.LinearAlgebra; ...

せっかくなので実装の参考にさせていただこう。Math.NET Numericsの使い方を知るのに良いサンプルだ。
Unity上で動作の仕組みを可視化できたら最高なんだが、そこまで行けるだろうか。

パーセプトロンニューラルネットワークのイメージ

書籍とは関係ないけど、パーセプトロンニューラルネットワークの働きをビジュアル化するとこんなイメージらしい↓



色んなアルゴリズムをこんな感じで可視化できると理解が捗るだろうなぁ。


スポンサーリンク

関連記事


Also published on Medium.