D'ac

元銀行員。子育てられ中。

超素人による『ゼロから作るDeep Learning』の感想。

最近、ようやく勉強する時間が取れるようになりました。
先週末も夫に子どもを丸投げして、仕事に行き、帰ったら勉強。
これで夫が食事の準備をしてくれたら完璧なんだけれど…。贅沢言ったらあかんですね。

 

さてさて、そんな感じで最近取り組んでいる『ゼロから作るDeep Learning』の感想をまとめておきます。
まだ途中ですが、そろそろ娘が冬休みなのと、猫の発作がひどくなっていっているので、また時間がなくなりそうなので…。

 

*以下は初学者の感想です。まだ深いところとかあんまり理解できていません。同じようにDeepLearning興味あるけど、プログラミングの知識もあんまりない中で、どこから始めたらいいかな…みたいな人はぜひ読んでいってください。

 

『ゼロから作るDeep Learning』感想。

まだ終わっていませんが、全体的に平易に書かれており、私のような初学者でも今のところ投げ出さず取り組めています。勉強しようと思ったところでこの本が出版されて、よかったなあ…という感じ。 

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

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

 

これですよ! これ!

 

3つほど要点をまとめてお伝えしたいと思います。


プログラミングがほとんどわからなくても大丈夫。

すごく簡単なPythonの本を以前やりました。 

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)

 

そこから、どうプログラミングの勉強を拡張していくか実は途方に暮れていたんですね。
何からでもやればいいのかもしれないのですが、まったく興味のないものを作ったり、ましてや、ネット上学習サイトとか到底面白いと思えず…。
かといって、「実際に作りつつ勉強しよう!」というレベルにも到達していなかったので、完全にやる気を削がれていました。


その点、この『ゼロから作るDeep Learning』であれば、最初に必要なPythonの知識を簡単に紹介してくれています。そして、平易にコードを書いてくれてあるので、興味関心を保ちつつ、プログラミングの勉強ができ、一石二鳥な感じで楽しんで勉強できています。(ソースコードはネットにありますが、実際に自分で書いてみることで理解が進みます。)


「機械学習勉強したいな」っていう目的が明確なのに、プログラミングをちんたらやるのは正直詰まらないので、専門的な内容を扱いつつ、プログラミングの説明もしてくれているこの本は本当にありがたいです。

 


まず他のDeep Learningフレームワークを触ってからのほうが理解はいいかもしれない。

そんな感じで、プログラミングとDeep Learningと両方勉強できるいい本なのですが、時々、「あれ? 今何しているんだっけ?」となります。
Deep Learningに対してまったく知識がないと、問題意識が薄くなります。
なんというか、学生時代に勉強しているような感覚? 社会人になってから勉強すると問題意識がしっかりしているので、スッと頭に入るんだけど、学生はただの詰め込み教育になりますよね。
あんな感じ。

だから、一旦、Deep Learning のフレームワーク(例えば、TensorFlowとかChainerとか)を触ってみて、問題意識を醸成してからのほうが、内容はしっくりくるのかな? という印象です。


私も一旦全部取り組み終わったら、実際にデータを扱ってみて、再度読み込みたいと思っています。

 


数学知識の必要性。

「機械学習には数学が必須」のようなことをたびたび聞くのですが、この本で出てくる数学知識ってせいぜいexponentialとか偏微分くらいなもので、ちょっとググればすぐに判明するようなことなので、特に事前に数学の知識が必須という印象はありません。行列の掛け算とかもきちんと本の中で説明されてあります。


ただ、数学知識があったほうが、ちょっと気持ち的には楽です。
私は夏ごろに高校数学を勉強したので、多少楽に読み進めています。(文系人間なので)
まあ、人は自分がやってきたことを過大評価しがちなので、数学を一通りさらった私が「数学やってて楽だったよ」と言っても、そういうバイアスがかかったものとして受け止めてくだされば…。

 

ちなみに今のところ、一番「数学やっててよかったな」って思ったところはsigmoidの逆伝播の計算のところです。
δL/δy*1= δL/δy(1/(1+exp(-x))**2)*exp(-x)= δL/δy(y(1-y))
*こういう式ってネットで書くとき、どうやったらいいんでしょうか…。読みにくいよね…。
のところの式変形のあたりなんかは数学やってなかったら、ピンとこなかったと思います。
夏ごろにやった数学で、数字を足したり引いたりして、綺麗にまとめる系の計算を散々やっていたので、この式をみたときに、「ああ。こういう時に使うのか~」と妙に感動してしまいました。
(それまでは、「別にまとめなくてもええやん!」って思ってたので…。実務的に役に立つのですね…。)


そんなところでしょうか。
あとΣ(シグマ)とかδ(デルタ)を見かけると卒倒しそうな人(半年前は私がそうだった)もちょっとくらい数学やっておいたほうがお得かもしれません。
そんな大したものじゃないのですが、たくさん出会えば仲良くなれるので…。

 


と超素人が勉強している『ゼロから作るDeep Learning』はそんな感じです。
アマゾンレビューとかみると、超詳しい人たちが沢山レビュー書いてあるのですが、見えている景色が違います(+_+)
私もそのうち違う景色が見えるようになるのかなあ…。


とはいえ、ちょっとずつですが、知識は増えていっています。
毎日新しい発見があります。


「全然素人だけど…」っていう人も、ともに、新しい世界を見つけにいきませんか?
その入り口として、『ゼロから作るDeep Learning』、とってもいい本です。
引き続き、読み進めていきます!


以上。

 

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

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

 

 良書…。

*1:y**2)exp(-x