GANは2つのネットワークを戦わせるって聞いた。何と何が戦って、なんでそれで画像が作れるん?
【疑問】GAN(敵対的生成ネットワーク)の仕組みと、DCGAN・Pix2Pix・CycleGANの違い【G検定】
前提のおさらい。畳み込み層は画像から特徴マップを作る。逆に、小さい特徴マップを広げて画像を作る畳み込み(転置畳み込み)もある
>>1
GAN(敵対的生成ネットワーク)は、グッドフェローらの2014年の論文
生成ネットワーク:ランダムな数から、本物っぽい画像を作る
識別ネットワーク:入ってきた画像が本物か作り物かを見分ける
識別側はだまされないように、生成側はだませるように、交互に学習する
>>3
識別ネットワークの出力を「本物である確率」とすると、本物の画像に0.9を出したときの誤差は 、作り物に0.2を出したときの誤差は
生成側は、作り物への出力を大きくさせる、つまり識別側の誤差を大きくする向きに学ぶ
>>4
最後はどうなったら終わりなん?
>>5
理屈の上では、作り物の分布が本物と同じになって、識別側がどの画像にも0.5を出すしかなくなったところ
実際はそこまできれいにいかん。生成側が同じような画像ばかり出すようになる(モード崩壊)など、学習が不安定になりやすい
DCGANは、ラドフォードらの論文。GANの2つのネットワークを畳み込み層で作って、バッチ正規化などを入れて学習を安定させた
入力のランダムな数の空間で「笑顔の女性 − 女性 + 男性 ≒ 笑顔の男性」みたいな足し引きができることも見せた
Pix2Pixは、イゾラらの2017年の論文。ある画像を別の画像に変換する
線画から写真、地図から航空写真、のように、入力と正解の画像が組になったデータで学習する
>>8
組のデータなんて、そんなに集められんやろ。馬の写真と、まったく同じ形のシマウマの写真なんてない
>>9
それを解いたのがCycleGAN。ジュウらの2017年の論文。組になってない、馬の写真の集まりとシマウマの写真の集まりだけで学習する
馬→シマウマ→馬と2回変換したら、もとの馬に戻るように学ぶ(サイクル一貫性)。画素の値が0.6で、戻した値が0.5なら、その差0.1を小さくする
>>10
戻るように縛らんと、シマウマっぽければ何でもええことになって、もとの馬の形や向きが消えてしまうもんな
管理人のひとこと
- GAN(2014年の論文)は、生成ネットワークと識別ネットワークを交互に学習させる。識別側が本物に0.9なら誤差約0.11、作り物に0.2なら約0.22。
- 理屈の上では識別側がどれにも0.5を出すところで終わるが、実際はモード崩壊など不安定になりやすい。
- DCGANは畳み込み層とバッチ正規化で学習を安定させた。Pix2Pix(2017年の論文)は組のデータで画像を変換する。
- CycleGAN(2017年の論文)は組にならないデータで、2回変換するともとに戻るよう学ぶ(サイクル一貫性)。