ゼロから作るDeep Learning❷で素人がつまずいたことメモ: まとめ

# はじめに

[「ゼロから作るDeep Learning❷ーー自然言語処理編」](https://www.oreilly.co.jp/books/9784873118369/)を読み終えたので、その感想やこれから読む方に向けてのメッセージなどを列挙してみます。購入を悩んでいる方や、読み始めたけど途中で挫折してしまった方の参考になることがあれば幸いです。

:::note info
この記事は個人で作成したものであり、内容や意見は所属企業・部門見解を代表するものではありません。
:::

# 感想

最近話題の翻訳や文章生成などがどんな感じで実現されているのかを、ざっくりとですが把握できるようになりました。読んで良かったです。

# ゼロから作れるようになる？

がんばり次第です。全くアドバイスになっていませんが:sweat:

私は、最初のうちは前巻同様[^1]に一からコードを書いて読み進めていたのですが、途中でいろいろと多忙になってしまい、後半は[本のコード](https://github.com/oreilly-japan/deep-learning-from-scratch-2)をちょっといじって動かす程度になってしまいました。でも、もしずっと暇だったら、この本を読みながら最後までコードを書くことはできていたかと思います。

少し脱線しますが、私はゼロから作ることを目指してこの本を選んだのではありません。すでに世の中には有用なライブラリがたくさんありますし、過去には自社パッケージ用にオレオレ・フレームワークを作って性能やら保守性やらで散々痛い目にもあったので、使えるものは作らずに使う派です。

ただ、どんなに高性能なライブラリがあったとしても、それをブラック ボックスのままで使うのは嫌いです。中が想像できないとチューニングもトラブル シューティングも大変ですし応用も効きません。そこで、Deep Learningの仕組みを把握するためにこの本（＆前巻）を選びました。

# コードを書きながら読んだ方がいい？

一からコードを書かなくても、提供されているコードを少し改造して動かす程度で、理解はかなり進みます。後半、時間が取れなくなった私は、データセットだけを自作して本のコードを動かすことにしましたが、その程度でもいろいろつまずいて勉強になりましたし、面白かったです。

なお、全くコードに触らずに本だけ読むのはお薦めできません。少なくても私はそれだと眠くなってしまって、本の内容が頭に入ってきません。通勤通学の時間で読むのにも向かない本だと思います。

# 前巻は必要？

この本は、前巻の[「ゼロから作るDeep LearningーーPythonで学ぶディープラーニングの理論と実装」](https://www.oreilly.co.jp/books/9784873117584/)を読まなくても大丈夫な構成になってはいます。ただ、第1章に前巻の半分以上の内容が詰まっているので、第1章を読み終えられるかどうかが分岐点です。

まず第1章を読んでみて、もし挫折しそうになったら前巻を購入されるのが良いかと思います。

# 必要な環境は？

最初はMac mini(Late 2012)の中にさらにmacOSのVM（メモリ割り当て4GB）を立てて[^2]スタートしたのですが、6章まで進んだところでなんと学習に2週間かかるプログラムが出てきて詰みました。

そこからは、コードは同じMacで書きつつ、実行は[Google Colaboratory](https://colab.research.google.com/notebooks/welcome.ipynb)（以降、Google Colab）を使う形に切り替えたのですが[^3]、このGoogle Colabが死ぬほどお薦めです。ネットがあれば使えて、PythonやらNumpyやらの環境構築さえ不要で、GPUまで使えて、なんと現時点では勉強で利用する程度であれば無料です。

手元にPythonが動く環境はあった方が良いかと思いますが、Google Colabを併用すれば、手元のPCは多少古くても遅くても大丈夫です。なお、私の手元の環境については、[前巻のメモの1章](https://qiita.com/segavvy/items/1945aa1a0f91a1473555)にまとめています。

# この本の不満は？
本当は最近よく聞くTransformer、BERT、GPT-2などの仕組みまで触れて欲しかったのですが、この本はTransformerの手前までがメインで、最後にTransformerを少し紹介して終わってしまいます。

ただこれは当然で、この本の発行は2018年7月です。BERTが発表されたのは2018年10月ですから、BERT以降の話が載っている訳がありません。2年前の本ですらちょっと古いと感じてしまうのですから、Deep Learningの世界は恐ろしいです。

なお、前巻同様にベストセラーなのでネットにもたくさん情報があります。よくわからない部分があってもググれば解決できるかと思います。

# メモのお知らせ

この本を読んだ際に私が参考にしたサイトやいじったコードなどを、章ごとにまとめてQiitaに投稿しています。もしよろしければ参考にしてください。

|本の内容| Qiitaに投稿したメモ                                          |
|----| ------------------------------------------------------------ |
|1章 ニューラルネットワークの復習| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:1章](https://qiita.com/segavvy/items/91be1d4fc66f7e322f25) |
|2章 自然言語処理と単語の分散表現| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:2章](https://qiita.com/segavvy/items/52feabbf7867020e117d) |
|3章 word2vec| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:3章](https://qiita.com/segavvy/items/1510d8c264edd291e0ef) |
|4章 word2vecの高速化| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:4章](https://qiita.com/segavvy/items/a286143dbcc5a93100b6) |
|5章 リカレントニューラルネットワーク（RNN）| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:5章](https://qiita.com/segavvy/items/3e6a9f6bff103824598f) |
|6章 ゲート付きRNN| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:6章](https://qiita.com/segavvy/items/fba1595cf64a2462b415) |
|7章 RNNによる文章生成| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:7章](https://qiita.com/segavvy/items/883671d07cd7ab26fbe0) |
|8章 Attention| [ゼロから作るDeep Learning❷で素人がつまずいたことメモ:8章](https://qiita.com/segavvy/items/69ca97ff2d4e8a7144fd) |

# おわりに
この本のおかげで、自然言語処理の理解が深まりました。著者の斎藤康毅さんに大変感謝しています。
このメモが誰かのお役に立つことがあれば幸いです。

[^1]: 前巻については[ゼロから作るDeep Learningで素人がつまずいたことメモ: まとめ](https://qiita.com/segavvy/items/4e8c36cac9c6f3543ffd)にまとめています。
[^2]: このMac on Macの詳細は、[Parallels DesktopでmacOS仮想マシンを構築](https://qiita.com/segavvy/items/306bd6574a42c35d860c)にまとめています。
[^3]: Google Colabについてはこのメモの[6章](https://qiita.com/segavvy/items/fba1595cf64a2462b415#%E8%84%B1%E7%B7%9Agoogle-colaboratory%E3%81%A7%E3%81%AE%E5%AE%9F%E8%A1%8C%E3%81%AE%E6%B5%81%E3%82%8C)にまとめています。