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

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



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

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

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

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

Pythonのサンプルコードと、書籍の正誤表はGitHubにある↓
https://github.com/oreilly-japan/deep-learning-from-scratch
https://github.com/oreilly-japan/deep-learning-from-scratch/wiki/errata

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



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


で、Math.NET Numerics導入後に少し調べたら、似た発想の人がいた↓
http://tnakamura.hatenablog.com/entry/2016/12/05/perceptron
http://tnakamura.hatenablog.com/entry/2016/12/08/sigmoid-relu-softmax
http://tnakamura.hatenablog.com/entry/2016/12/15/mnist
http://tnakamura.hatenablog.com/entry/2016/12/16/three-layer-neural-network
http://tnakamura.hatenablog.com/entry/2017/01/30/loss-function
http://tnakamura.hatenablog.com/entry/2017/02/08/numerical-differentiation
http://tnakamura.hatenablog.com/entry/2017/02/10/numeric-gradient
http://tnakamura.hatenablog.com/entry/2017/02/15/gradient-descent
http://tnakamura.hatenablog.com/entry/2017/02/20/gradient-simplenet
https://github.com/snaga/DeepLearning_C_Sharp

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

2019年 追記:今ならMath.NET Numericsじゃなくて、このNumSharpを使った方が良いと思う↓
NumSharp:C#で使えるNumPyライクな数値計算ライブラリ
C#で書かれたNumPy風の数値計算ライブラリ。Apache License 2.0だそうです。NumSharpNumSharpは.NET StandardをターゲットとしたNumPyのC#ポートです。NumSharpはC#で科学計算を行う...

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

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



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

関連記事

Unityで360度ステレオVR動画を作る

Mitsuba 3:オープンソースの研究向けレンダラ

Super Resolution:OpenCVの超解像処理モ...

ZBrushで作った3Dモデルを立体視で確認できるVRアプリ...

Raspberry PiのGPIOを操作するPythonライ...

3D復元技術の情報リンク集

pythonもかじってみようかと

OANDAのfxTrade API

ZBrushのZScript入門

UnityユーザーがUnreal Engineの使い方を学ぶ...

書籍『鈴木さんにも分かるネットの未来』読了

書籍『具体と抽象』読了

SSD (Single Shot Multibox Dete...

Raspberry Piでセンサーの常時稼働を検討する

ブログが1日ダウンしてました

FFS理論

オープンソースの物理ベースレンダラ『Mitsuba』をMay...

adskShaderSDK

Point Cloud Libraryに動画フォーマットが追...

SDカードサイズのコンピューター『Intel Edison』

PythonのHTML・XMLパーサー『BeautifulS...

Facebookの顔認証技術『DeepFace』

AmazonEC2のインスタンスをt1.microからt2....

ストレングス・ファインダー

UnrealCV:コンピュータビジョン研究のためのUnrea...

PCA (主成分分析)

CycleGAN:ドメイン関係を学習した画像変換

Google Chromecast

SegNet:ディープラーニングによるSemantic Se...

Seleniumを使ったFXや株の自動取引

ベイズ推定とグラフィカルモデル

書籍『人生は、運よりも実力よりも「勘違いさせる力」で決まって...

ブラウザ操作自動化ツール『Selenium』を試す

読書は趣味か?

Photogrammetry (写真測量法)

PyMC:Pythonのベイズ統計ライブラリ

Googleが画像解析旅行ガイドアプリのJetpac社を買収

書籍『絵はすぐに上手くならない』読了

OpenCV 3.1のsfmモジュールのビルド再び

Kinect for Windows v2の日本価格決定

機械学習に役立つPythonライブラリ一覧

OpenCVのfindEssentialMat関数を使ったサ...

コメント