「生成Deep Learning」を読みました
生成に特化したAIの本「生成Deep Learning」を読みました。

生成 Deep Learning ―絵を描き、物語や音楽を作り、ゲームをプレイする
- 作者:David Foster
- 発売日: 2020/10/05
- メディア: 単行本(ソフトカバー)
独創力とは、思慮深い模倣以外の何ものでもない
とは18世紀フランスの哲学者ヴォルテールの言葉とのことですが、AIによる模倣と創造の境界に関して考えさせられるような本でした。
本の内容は、オートエンコーダからはじまりGANでの画像生成、文章生成、音楽生成。アテンション、強化学習の世界モデルまでとタイトル通り生成系のAI技術を幅広くカバーしています。
結構骨太で、AIの本は1冊目という人が読む本ではなくて、何冊かAI関係の書籍を読んで、ある程度自分で実践して、生成系のAI(Auto EncoderとかGAN)に興味を持った人が読むような本だと思います。
コードは、本だけでは完結せずGitHubのコードを見比べたり、動かしながら読む形になるかなと思います。コードのレベル的には、クラスを使ったオブジェクト指向のPythonプログラミングがある程度書けるくらいのレベルは必要だと思います。
書籍では、AE(Auto Encoder), VAE, GAN, RNNといった生成系AIモデルの仕組みを、理解が深まるように例え話で説明してくれています。ただ、この例え話は、翻訳の関係もあり結構独特なので、人によってはピンとこないかもしれません。初めてAIの本を読んだ人が分かった気になるというものでなく、ある程度の基礎知識ある人が、更に理解を深めるための補助説明的な位置付けかなと思います。自分では、イマイチ理解できない項目もありました(私の理解が浅いのが原因とは思いますが)。
サンプルコードの1部をGoogle Colaboratory(Google Colab)に対応して公開しました
書籍のサンプルコードはGitHubで公開されています。再利用しやすいように、クラスを使って書かれているので、そのあたりの書き方は参考になる人がいるかもしれません。ただ、PEP8とかはあんまり気にしていないようで、わりと自由な感じですね。
また、初心者やAI関係のコードに慣れてない人が動かすのはちょっと手間取るかもしれません。エラーで動かないものもあったりしました。GitHubのissueも大量に放置されている状態のようです。
かなり計算力のあるPCが必要なコードもあります。書籍にGoogle Colabに関する言及があったので、てっきりサンプルコードGoogle Colabに対応しているものだと思っていたのですが、全然そんなことはなかったです。TwitterでGoogle Colab対応してて簡単に動かせそう!的なことをTwitterで呟いてしまったので、愕然としてしまいました。
読んでる。オートエンコーダからGAN、アテンション、強化学習の世界モデルまで。コードはGoogle Colabにも対応してて、久しぶりにワクワクしそうなディープラーニングの本 > 生成 Deep Learning ―絵を描き、物語や音楽を作り、ゲームをプレイする
— からあげ (@karaage0703) November 1, 2020
Amazon: https://t.co/OLxUn19c6S pic.twitter.com/qAbatimPnk
多少責任を感じて、本家のリポジトリをforkしてGoogle Colabに対応したNotebookを作成しました。以下参照ください。
GitHub上のNotebookをGoogle Colabで開く方法は以下記事の「GitHub上のJupyter NotebookファイルをGoogle Colaboratory上で実行」を参照ください。
基本的にはどのNotebookもクリックしていけば動くようになっていますが「4_01_gan_camel.ipynb」だけは、Google ColabからGoogle Driveを連携して、教師データを移動する形になるので、GitHub - googlecreativelab/quickdraw-dataset: Documentation on how to access and use the Quick, Draw! Dataset.のNumpy Quick Drawからcamel.npy
というデータセットをダウンロードして、あらかじめGoogle Driveの「My Drive」の「dl」というディレクトリ直下に格納する必要があります。
その他、セレブの顔の教師データを使うNotebookもあったのですが、教師データのデータセットが巨大すぎて諦めました(Google Colabでまともに学習が終わりそうになかった)。
実行していくと、モデルを学習して生成して終わりというだけでなく、そのモデルの中でどんなことがおこっているかを色々な手法で可視化したり、解析したりしています。以下は可視化の例です。
これらがどのような意味をもつかも書籍では解説してあります。この辺りは、面白く参考になりました。
まとめ
「生成Deep Learning」というAI関係の本の紹介をしました。Google Colabで動かすのは、エラーで動かないものあったり、元の設定だと全く学習が終わらないものもあるため、まともに動くようにするのが大変でしたが、その分勉強になりました。
最初にこの本に興味持ったのは、強化学習の世界モデルを取り扱っているところだったのですが、書籍で学んでいく技術が全て世界モデルに繋がっていくような構成になっていてちょっとビックリでした。9章の冒頭によると、この本の筆者は、世界モデルの論文を読んだ直後、世界モデルが目玉になるようにこの書籍を書いたようです。
世界モデルとは、本書によると「生成系のAIが作り出した夢の中でAIが強化学習で賢くなる」というそれこそ夢のような話の技術です。難しそうですが、興味湧いたので世界モデル使って、何か面白いもの作れないかなーとか色々夢想してしまいました。
というわけで、久しぶりにワクワクするAI関係の書籍でした。興味ある方は是非。

生成 Deep Learning ―絵を描き、物語や音楽を作り、ゲームをプレイする
- 作者:David Foster
- 発売日: 2020/10/05
- メディア: 単行本(ソフトカバー)