私の周りでDeep Learningて数学的で難しいというイメージを持っている人が多いです。
実際数学は使いますがそこまで複雑ではありません。適切なステップを踏めば、数学知識ない状態からでもしっかり仕組みを知って論文読んで一からモデル実装できるようになると思います。
そのステップについてまとめます。今回は画像系のみにフォーカスしています。
目次
1. 「ゼロから作るDeep Learning」Pythonと必要最低限の数学知識、Deep Learningの仕組みを知る
この本ではPythonの書き方、必要最低限の数学知識、パーセプトロンからDeep Learningの仕組みを知ることができます。
正直1冊読むのは結構大変だと思います。最適化関数あたりはこんなものあるんだ程度で飛ばしていいかもしれません。
誤差逆伝播と畳み込みのところが特に難しいと思います。
誤差逆伝播はざっくりいうと「偏微分した値を次の層に渡していくのを繰り返す」こと、畳み込み層は「入力を1列にして考えれば、全結合層を飛び飛びでやる」ということを意識しておくと理解しやすいかもしれません。
誤差逆伝播、畳み込み・全結合層、活性化関数・最適化関数の仕組みざっくり分かれば十分かと思います。
2. Deep Learningのライブラリ・フレームワークについて学ぶ(Pytorch)
ゼロから作る~の本で仕組みを知って、一から書けることが分かったと思います。
しかし、実際に実務などでDeep Learningを動かす場合、いちいち自作しては時間が足りないし拡張やパフォーマンスを考えるととても無理です。
なので次はDeep Learningを扱うライブラリ・フレームワークについて学びます。
次のステップに向けてライブラリの扱い方とDeep Learningの仕組みの復習をすると良いと思います。
KerasやTensorflowなど色々なライブラリありますがPytorchをお勧めします。最新の論文の実装がPytorchだったり、機能が豊富なためです。
3. 代表的なDeep Learningモデルやタスクについて知る
Deep Learningの仕組みと、それを扱うPytorchの使い方について、ステップ1, 2の本で分かってきたと思います。
最後に、実世界のタスクをどうDeep Learningで解決できるのか、どんなモデルがあるのかなど、業務に近い実践的な内容を学びます。
代表的なタスク、モデルが載っていて、新しめの情報が多く書いてある以下の本がお勧めです。コード一式がGithubに上がっているところが良いです。
この本で、semantic segmentationや物体検出など、Deep Learningを使って実世界のタスクを解決する手法を知ることができ、SSDやPSPNetやDCGANなどブレイクスルーとなった幅広いモデルなどを知ることができます。
正直物体検出などかなり難易度が高いかもしれません。
まずは本の通りにコードを動かしてみて、コードと本を読みながらモデルの構造を紐解いていくやり方が良いと思います。
かなりこの本読破するのに時間がかかると思いますが、この本が一通り分かれば、モデルのカスタマイズや論文読んで一からそれっぽい実装などができるようになります。
まとめ
正直この3ステップすべてできるようになるには相当時間がかかると思います。社会人なら1年以上かかるかもしれません。
ですが、すべて読み終われば、仕組みを理解してさらにカスタマイズやゼロから実装ができるようになると思います。
実際の現場でも既存モデルをGithubから引っ張ってきて動かすだけで、仕組みを知らないから中身をいじれなかったり、うまく学習できないときに修正できない人がけっこう多いです。
しっかり中身を知ることは大きなアドバンテージになると思うので最後まで頑張ってみてください。