生成 Deep Learning は読みやすくて夢の溢れる GAN入門本だった

GAN本

引用元:

生成モデリングの過去の進歩(2014年から2018年あたりまで)を紹介した本。具体的には、2014年の VAE(variational autoencoder:変分オートエンコーダ)から GAN(generative adversarial network:敵対的生成ネットワーク)、2018年頃までの GAN の課題とその解決策および各種応用、生成モデルの一つの帰結として強化学習で用いられる World Models(世界モデル)の紹介をした本である。

本書の特色として、物語形式(昔話みたいな感じ)で生成モデリング手法を説明している部分が3箇所存在する。その3つは、①単純ベイズモデル②VAE(変分オートエンコーダ)③GAN(敵対的生成ネットワーク)である。下記それら物語の概要をザッと紹介してみ(ようとして①のみ書いて力尽き)た。

課題としては、「惑星 Wrodl の住民の顔写真50枚からこの惑星の住民が追いかけたくなるようなファッショントレンドを作りたい!」というもの。

Wrodl 星人のファッションの特徴は「髪型」「髪の色」「メガネ」「服の種類」「服の色」の5つ。取り得る値は下記で合計 7×6×3×4×8 = 4,032通り。

単純ベイズ仮定「各特徴は他のすべての特徴と独立である」をシンプルに仮定した場合、各特徴の各値の出現回数 n とその確率 θ は下記の表。

単純ベイズモデルを用いて生成した新ファッション10選!🎉(パンパカパーン!)

Pixel星人(32×32ピクセルの観測画像データしかない星人)のケース:

Pixel星人に対して単純ベイズモデルを適用してみると……

ぐっちゃぐちゃに(笑)つまり、このケースでは単純ベイズでファッションを提案するのは難しい!(→だから Deep Learning (次章)が必要という流れ)

  • GAN がどのようなものか知りたい人
  • GAN の応用(絵を描く、文章を書く、作曲、強化学習 etc.)に興味がある人
  • ゼロから作るDeep Learning①(本書2章)、②(本書6章)
  • Google Colabratory (サンプルコード実行のための GPU マシン環境として)
  • Keras, Tensorflow (主にサンプルコード実行時のエラーに遭遇したときの対処のため)
  • VAE, GAN の説明が物語形式(昔話みたいな感じ)で語られているので、本来 VAE, GAN の無味乾燥な処理の中身がストーリ仕立ての例え話として紹介されており理解しやすい(手法の本質を損なわない程度の抽象化された物語になっていて凄い)
  • VAE, GAN がどのようなものか特定データに対するサンプルコードを動かしてみることで雰囲気を掴むことができる(ただし、ちゃんと動かせればの話)
  • 生成モデリングの 2014年から2018年あたりまでの進展を追える(本書執筆開始が2018年あたりらしいため。それ以降の話は 9章でサラッと絵だけの紹介と日本語訳で追加された付録で GPT-3 の話などがある)
  • サンプルコードの半分くらいはそのままだとエラー吐いて動かなかった。Github リポジトリの Issues を読んでエラー処理して実行してく必要がある
  • サンプルコードの学習データ量が大きすぎる場合がある(例えば 03_05_vae_faces_train.ipynb の学習データは12GBくらいで、202,624枚の顔画像で、圧縮された学習データの解凍にも30分から1時間くらいかかるので、全然気楽にサンプルコードを叩けない(笑))
  • サンプルコードの学習データの配置の仕方について詳しい情報なく、それに伴うエラー などもあって、そのへんホンマ勘弁してくれというお気持ちになった
  • サンプルの計算時間がどんどん長くなっていくため、ちょっとしたエラーのデバッグもかなり大変(なぜなら1エポック15分とか時間がかかってエラー再現/解消を確認しなくてはならないので)

ざっと全体読んだ印象として、著者の GAN に対する夢の溢れる良い本だったので、GAN に興味のある人には広くオススメできる(何より読みやすいのが貴重だと思う)。

また、本書の欠点のサンプルコードが動かない問題は気が向いたら、ちゃんと動く形で Google Colab か何かにまとめておこうかと考えている(一部サンプルについてはそういった形でまとめてくれている方もいる)。

個人的にこれまで GAN を直接やってみたことがなかったので、Jupyter Notebook のサンプルを動かすことでイメージが湧いたし、本書の物語での手法の説明も分かりやすく理解できたので全体として読んで良かった。

わくわくすることを じゆうに すきほうだいに