【論文紹介】GANを制覇する (2) ~BC-GAN~
GAN A to Z ~B編~
本日紹介するGANは
Bayesian Conditional GAN (BC-GAN)
です。
名前の通り"Bayese" + "Conditional" なGANです。
BC-GAN 概要
通常のGANと異なる点は、
- ノイズを入力とせず、Generator及びDiscriminator自体に分布を持たせることで様々なサンプルを生成する(Bayese)
- Generatorへの入力はラベル情報(Conditional)
といった所です。イメージは下の図の通りです。
この図において はモデルのパラメータ(重み)を表しており、通常のGANでは固定された値を用いる一方、BC-GANではこのパラメーターが不確実性を持っています。
そのため固定のConditionalな入力( )をGeneratorに入れても、生成されるサンプル( )は適当なばらつきを持ったものになります。
そして学習時には適当数サンプリングし、その結果からパラメータを最適化していきます。
これはまさに、事後分布をMCMC(マルコフ連鎖モンテカルロ法)を用いてベイズ推定していることになります。
実際の実装ではパラメータ自体を揺らがすと言うよりもドロップアウトとガウスノイズを付与する層を間に挟み込むことで不確実性を実現しているようです。
Bayesianのメリット
このようにGANにベイズのフレームワークを適用するメリットはいくつかあると思いますが、一つはGenerator, Discriminatorの出力を分布として表現できる所です。
例えばその分布の分散を出力結果の確信度と解釈すれば、それを見ることによって結果をどれほど信じてい良いか判断することができます。(逆に確信度が高すぎる場合はmode collapseの可能性もあるので一概には言えませんが。)
つまり、学習時には学習が上手くいっているかの指標に、推論時には結果の信頼度として扱うことも可能です。
以上が簡単なBC-GANの説明です。
こちらにも資料をアップしているので興味があればどうぞ。