Edited at

素人が「ディープラーニングをなんとなくわかっておくか〜」と思って2週間くらいでやったこと

More than 1 year has passed since last update.


概要

素人が急に「ディープラーニングをなんとなくわかっておくか〜(素人)」と思い立って2週間くらい勉強したことを忘れないうちにメモしておきます。なんとなくわかっておくというのは、


  • ディープラーニングはどういう仕組みで、どういうことができるのか

  • 実際にどういうコードを書けばいいのか

  • 精度を上げていくためにどういう工夫をすればいいのか

がわかるというくらいの意味です。

私の前提知識は、Pythonは基本的な文法がわかる程度、数学は微積とか線形代数の基本的な概念や計算法ならなんとなく覚えている程度だったので、似たような感じの人には参考になりやすいかもしれません。下記で、やったMOOCと読んだ本を挙げますが、挙げた順番にやったというわけではなく、けっこう同時並行的に行なっていたような気がします。


MOOC


Practical Deep Learning For Coders, Part 1

CNNとRNNについて丁寧に教えてくれるMOOCです。講師の人の説明が非常にわかりやすいです。この授業でわかるようになることをおおまかに挙げると以下のようになると思います。


  • CNN、RNNの考え方

  • Kerasの使い方

  • AWSでのGPUインスタンスの使い方

  • 予測精度を挙げるための工夫のしどころ

  • 機械学習のプロみたいな人が具体的にどんな感じで作業してるか

この授業のいいところは自分でディープラーニングのコードを書くことを強制されることです。講義でjupyter notebookが配布されてその簡単な説明があり、次回の講義までにそのnotebookを自分で一から書き直す+そこそこ大変な課題をやっておくことが推奨されています。kaggleの実際の課題をもとにどうやったら精度が出るのかみたいな感じで話が進んでいくので、やる気が出やすいと思います。



Make Your Own Neural Network

ディープラーニングの入門書と言うと下で挙げる「ゼロから作るDeep Learning」が有名だと思いますが、それよりもさらに素人向けの本です。難しい概念は出てこず、本当に一番単純なニューラルネットワークを実装してみるという感じで、最初に読む本としてかなりおすすめです。Kindle版が驚安なので、とりあえず買って損することはないと思います。


ゼロから作るDeep Learning

有名な本です。上のMOOCがどちらかというと応用寄りで、いきなりすごいことができるようになるのに対して、この本では基礎的な理論がわかるようになる感じです。フレームワークも使わず、本当にpythonでゼロからコードを書いていきます。

誤差逆伝搬法とか損失関数の最小化のアルゴリズムみたいな、フレームワークを使う上では概念と数式だけわかってれば大丈夫な要素技術を実際にコーディングすることで理解が深まります。実はこの本は2回読んで、1回目は途中で自分でコードを書くのに飽きて掲載されているコードを流し読み、2回目はそこそこ真面目に自分でコードを書く、という感じだったのですが、2回目の方が圧倒的に面白かったのでちゃんとコードを書いた方がいい気がします。


深層学習

有名な本2です。この本は読み物的な感じでとくに手を動かさずに読みました。ここまでで挙げた2つの教材に比べると前提知識のない素人に対する配慮が足りない感がありますが、知識がコンパクトにまとまっていて復習するのに良いと思います。


Kaggle


Planet: Understanding the Amazon from Space

やはり自分でコンペティションに出てみると、いろいろ必死に調べるので良いと思います。とりあえずこれまで学んだことを活かせそうなやつがあったのでやってみました。アマゾンの航空写真を与えられて、森とか川とか住居とかのラベルをつけていく課題です。最初はこれで100万円を得て豪遊する計画だったのですが、上位30%(当時)に入ったくらいで、プロみたいな人に勝てるビジョンがなさすぎたのとAWSの請求額が悲しみに包まれる感じになってきたので、現実に立ち帰って地道に生きていくことにしました。とにかく、何らかのコンペに出てみると理解の確認+補強になるのと、素人でも真面目にやればまともな順位になる(ダントツの最下位とかにはならない)ことがわかって満足感があると思います。