はじめに
最近、業務GANの一種を応用するニーズが出てきた。
せっかくだからGANについての知識をきちんと整理しようと思い、最終的にはNLPや音声認識に応用することを目標にGANについて学習・実装していこうという試み。
今回はざっくりと知識の整理をしてみる。
実装編は次回からしていく。
GANについて基礎知識
敵対的生成ネットワークのこと。
細かいところは割愛するが、AI関係のいろんなフィールドでかなり期待されているらしい。
生成器(Generator)と識別器(Discriminator)からなるNNのモデル。
生成器と識別器が競争的に学習する。
-
生成器
より識別器を騙せるような本物っぽいデータを生成するように学習
乱数ベクトルzを入力とする -
識別器
生成器からくるデータをより正確に見分けられるように学習
本物サンプル(訓練データ)と偽物サンプル(生成器から生成された)を入力とする
学習プロセスにおいて、ナッシュ均衡状態という以下のような均衡状態にたどり着くまで学習する。
- 本物と偽物のサンプルが見分けがつかなくなる
- 識別器の正答率が50%になる
GANにおける損失関数
通常のNNとGANの大きな違い。
GANでは識別器と生成器で異なる損失関数を持つ。
生成器の損失には識別器のパラメータも寄与しているが、生成器の学習においては生成器のパラメータしか更新できない。(逆も然り)
識別器と生成器で対立する目標に向かってナッシュ均衡まで学習していく。
まとめ
GANについてまとめてみた。
実装がないとピンとこないので、次回からpytorchを使っていろんなGANを実装していこうと思う。