GAN の損失関数と二値交差エントロピー
概要
先日,GAN の学習時に妙な実装を目にしました. 実際にその実装が一般的なのかは知らないですが,導出過程が謎であったため自分なりに行間を埋めるという作業を行いました. これで正しい!と言いきれる結果にはなっていませんが,とりあえずのメモという形で記録に残したく思い,この記事を書くに至りました.
以下行うのは,GAN の学習を二値交差エントロピーの最小化のみによって実装する場合の正当性についての考察になります. また,GAN について私自身が厳密に理解できているわけではないため,GAN の説明は省略します (検索するなり arXiv を読むなりでなんとでも調べられますし...).
GAN の損失関数の変型
ほとんどの場合 GAN は画像の生成に利用されているため,Discriminator の入力と Generator の出力は画像として考えます. これは本質的に問題でなく,呼称の上で便利だという理由で仮定しています.
まずいくつか必要な変数等を定義します. 学習に使う画像のデータセットをとすることとし,このから定まる
を学習時に考える経験分布とします(経験分布ってこういうことだと解釈してるんですがあってるんですかねぇ...分布だから部分集合を始域とする関数だと思うんですけどねぇ...). また Generator に入力されるノイズの事前分布を
とおきます. そして画像を入力としたときの Discriminator の出力を
とし,ノイズを入力としたときの Generator の出力を
とします. ここで Discriminator の出力の意味はのときは本物であり,のときは偽物であるとしています.
これらの定義の下で確率変数を
とすると GAN の学習は
と表現することができます. この式の意味は検索すればいくらでも出てきますし,論文だってあるので気にしないものとします.
実際に学習する際には,いくつかのデータによって Discriminator を少し学習し,次に Generator を少し学習するというような手順を収束するまで繰り返すという方法が一般的に用いられます. ここで,まず Discriminator の学習に注目し式を考えると,Generator であるについての最小化は無視することになるため
と変形でき,単純な最小化として表されます. 同様に Generator の学習は,式中にが表れる項がつしかないことを考えると
と変形でき,Discriminator と同様に単純な最小化として表されます. ここで少し無理やりではありますが
が成立します. どちらものときが最小となるため,最小値という意味では同値です.
以上より Discriminator の学習は
と表現可能であり,Generator の学習は
と表現できることがわかります. いずれも特定の式の最小化であるため
とすればは Discriminator の損失関数,は Generator の損失関数と解釈できます. 特に Discriminator の損失関数と解釈したは 2 つの項から構成され,新たに
とすれば
であり,は Discriminator が本物の画像を正しく識別できるかを示す項,は Discriminator が偽物の画像を正しく識別できるかを示す項であると言えます.
GAN の損失関数と二値交差クロスエントロピー
以上の議論から
とすると,Discriminator の損失関数と Generator の損失関数は,それぞれ
と表すことができます.
ここで二値交差エントロピーを
とすると,
が明かに成り立ちます. よって GAN の損失関数は二値クロスエントロピーによって表現することができるということを示せました.
まとめ
本記事では GAN の学習を示す式を変形することで Discriminator と Generator の損失関数を二値クロスエントロピーによって表現しました. Discriminator については純粋に等価な変形であり,特に違和感は無く自然なものと言えます. 対して Generator の変形は最小値が等しいという意味での変形であり,通常ニューラルネットワークの学習に用いられる勾配降下法の観点からは等価な式とは言えません. その点ではこの変型に納得できているわけでは無いのですが,他にこの実装の正当性について見当がついていません. ということで,この結果をもってひとまずの決着ということにしておきます.
より納得できる考察が思いつくなりすれば,この記事の更新等を行うつもりです.