Deep Learningの話
前回の記事からかなり間が空きました。
毎日のようにブログを書いている友人が何人かいますが素直に尊敬です。
自分は記録用というか覚書のためにやっている面も多少あるので,投稿は気まぐれです。
今回は最近勉強した「ゼロから作るDeep Learning- Pythonで学ぶディープラーニングの理論と実装 斎藤康毅著」について。
ディープラーニングの入門書としてはかなり有名なものらしく,Amazonレビューを見ても人気の高さが伺えます。言語はすべてPythonです。
機械学習の知識ゼロの僕でも難なく読めたのでたぶん良書です。
著者の日本語にクセがなく,説明も非常に丁寧な印象を受けました。
この本のコンセプトは,外部のライブラリに頼らず(使うのはNumpyやmatplotlibくらい),Python 3によってゼロからディープラーニングを作りながら原理を学ぶということです。ディープラーニングやニューラルネットワークの基礎だけでなく,誤差逆伝播法(back propagation),畳み込みニューラルネットワーク(CNN)なども実装レベルで理解できます。
最後の方には最近のトレンドや応用例もお話として触れられています。ただここはコードを書いたり,とかは全くないので本当にお話程度。
良いところとしては大事なところは何度も繰り返してくれるので,短期記憶よわよわな人でもついてこれるところだと思います。教養レベルの微積分,線型代数の知識とPythonの文法さえわかっていれば,他の前提知識は要りません。
悪いところをあげるとすれば,途中で意味不明なコードが一箇所だけ登場するところです。たいしたことはないですが,ググると「こういうことやで」という記事がすぐに見つかりました。誤植的なものはほぼ本書のホームページに網羅されているので適宜確認するのが良いと思います。
前半の山場でもある手書き数字認識の学習(パラメータの最適化)で,ある処理を10000回計算させるのですが,その章で「数値微分だと時間かかるから後々紹介する誤差逆伝播を先取りして実装してもいいよ」的な記述がありました。
「時間かかるとかいってもせいぜい数分でしょ」
愚直に数値微分で実行したところ,10分経っても終わらず,20分経っても終わらず…
結局25分で中断したところ,88回しか計算できていませんでした!すると10000回の計算が終わるのは47時間…
back propagationで実装すると15秒くらいで終わりました。back propagationすげえ。
6章あたりから手を動かしながら学ぶ感じではなくなるのでちょっと読むのがきつかったですが,大体1日に1章進めたのでトータルで1週間くらいで読み終わりました。
この本には続編があって2冊目が自然言語処理編,3冊目がフレームワーク編となっています。いまのところ自然言語処理にはあまり興味がないので飛ばしてフレームワーク編を読んでいます(1章が終わったくらい)。読み終わったらこれについても書くかもしれません。
この本と並行して読んだ「人工知能は人間を超えるか ディープラーニングの先にあるもの」も理解を深める上で役に立ちましたし,普通に面白かったです(これは一般書なので気楽に読める)。人工知能の定義の話題で航空宇宙の某教授のお名前が登場して「おお」となったりしました。
部屋に出没した蜘蛛を撃退するのに疲れたので今日はここまで。