RelativisticGANの論文を読んでPytorchで実装した その1
生きてます
お世話になってる博士の人にRelativistic GAN
なる論文を教えてもらったので読んだ。相変わらず自分から良さげな論文を探すスキルが向上しない・・みんなどっから情報収集してるんだ
[1807.00734] The relativistic discriminator: a key element missing from standard GAN
点線から点線までは論文と直接関係ない
自分が最初に読んだGANはGenerator(生成器)
とDiscriminator(識別器)
の2つを持ってて、識別器は与えられたデータが本物か偽物(生成器が作ったもの)であるかを識別する役割だった。
一方でWGANと呼ばれるやつはGenerator
とCritic
の2つを持ってた。Critic
はどちらかというとWasserstein距離というものを求める役割で上のDiscriminator
と役割は違う。
ところでWGANのようなものはIPM (Integral probability metrics) GAN
と呼ぶらしい。積分と確率、、うーん、WGAN読んだとき2つの確率分布が似ているかどうかの指標となる距離を求めるには期待値を計算しなくちゃいけなくて、その期待値の計算に積分が出てくるから関係あるのか。測度論について勉強していくとわかってくるのかな。そうでもない?そう・・・
話は戻って初期の頃のGANはGenerator
とDiscriminator
の学習バランスが不安定なのが問題と自分が読んできたGANの論文で指摘されていた。
そういえば何で2つの学習バランスが悪いんだっけ。
Generator
はDiscriminator
に自身が作った偽物を渡して返ってくる結果が本物(確率として1に近い値)であるように自身のパラメータを修正していく。学習ステップが初期の頃にGenerator
が作るものが本物のデータとかけ離れていればDiscriminator
は容易に本物と偽物の識別ができるに違いない。
そうなるとGenerator
は返ってきた結果のほとんどが偽物と返ってくるため、本物のデータに近づくための手がかり(教師信号)が得られないんじゃなかろうか。1個でも本物と返ってきたならばその1個に近いサンプルを作れるようにパラメータを修正していって試行錯誤できるけど、色々作ったサンプルが全部偽物と返ってきたら自分ならどうすればいいか分かんなくて挫ける。
でもこれって判別する役割より作る役割のが大変だからなのかなあ。そんなこんなで訓練の改善策としてUnrolledGANなりWGANなり出てきた。
本題
Relativistic GANの改善点はどうやらWGANみたいに1ステップCritic
をn回更新、Generator
を1回更新、といったことをせず両モデル1ステップ1回更新で学習するから400%の時間短縮できて、今流行りのWGAN-GPとかより高品質な生成物を作れるぜって書いてある。ス、スゲー!!!
この論文でのGANにおけるDiscriminator
はWGANみたいに距離の最小化の役割も持ってて、かつ偽物か本物かを識別する役割も持ったDiscriminator
と述べてる。
初期の頃に登場していたGANには、Generatorが作った偽物をDiscriminatorに渡したときの確率が高まる(偽物渡してるのに本物と識別されてる)につれて、本物のデータを渡した確率は反対に下がるべきという特性が失われているらしい。
この論文で初めて2年も前に登場していたGANの重要な特性を知った。考えもせず無知なままなのは罪である。
どうもGeneratorの訓練がうまくいったとして、与えられた入力がどれだけ現実的(realistic)かを出力する関数に偽物 と本物 を渡したらといった状況になってるらしい。どっちも本物っぽいぜ〜 1に近い値出すぜ〜ってことか
いや、別にその状況よくね?とも思ったんだけど、もし に渡す N個のうち半分が本物で半分が偽物と事前に知っていたなら、このような状況はおかしいというか不合理、良くて「うわ〜どれも本物っぽくて迷うな〜〜どうしよっかな〜〜〜わっかんねーからどっちつかずの 0.5 って返しとこ」あたりが自然だよねって述べてる、はず。
マークシートの試験で全8問のうち4問はAが正解と知っているのに全問Bで埋めてる奴はどう考えてもヤバイ・・・中忍試験のように白紙のがまだ理解できる。
じゃあGeneratorの学習が良い方向に進む、 が本物っぽくなる(値が大きくなる)につれては反対に下がるような大事な特性を与えてあげるのがRelativistic GANの特徴なのか。というよりは今まで読んできたGANはこの特性を与えるように工夫したGANだったんだな。
この大事な特性が失われている「どっちも本物っぽいから1に近い値出すぜ」な感じになってるGANの学習と「どっちも本物っぽくて迷うからどっちつかずの 0.5 って返しとこ」な感じのGANの学習ではどう違うのかの説明が論文に述べられてる。
最初に登場したGANの学習方法として論文にはこんなのが載ってた。
Relativistic GANの方の論文だとDiscriminatorの目的関数はJSダイバージェンスと等しく、そして目的関数を最大化するように学習していくと書いてある。数式だとこんな感じ。
本物データ分布とGeneratorの偽物のデータ分布が近いかを示す指標のJSダイバージェンスを最大化するって二つの分布が遠ざかってる、似てないってことだよな。
は置いといて、上の式の第二項と第三項のとどうなれば大きくなるか。識別器としては、と割り当てるのが役割なので、、となっちゃうからによってJSダイバージェンスは無限大になっちゃうな。最大化だからいいのか
GeneratorはこのJSダイバージェンスが小さくなるように自身の偽物のデータ分布を本物データ分布に近づけるように学習していく。上の式の場合と識別器に割り当てさせるように学習させればJSダイバージェンスが最小になると書いてある。自分はならなかったんですけど(´;ω;`)
、となってしまうととなってしまうからそれもそっか
JSダイバージェンスの最小化としては、次のような感じで徐々に二つの分布が近づくようにしていきたい。(論文の図だとこんなのが載ってる)
赤が本物のデータで青がGeneratorが作った偽物のデータ
GANの大事な特性が失われていると、のみが増加する。(論文の図)
どっちも本物っぽいって状況だ。これではJSダイバージェンスは最小にはなってないからGeneratorの学習としてはゴールじゃない
Discriminatorの学習においての変動に対しが変化してないというのはDiscriminatorは識別するための一体何がデータの本物らしさを意味しているのかということをGeneratorの偽物のみから(焦点をおいて)学習していることに繋がっているそうで。本物のデータも参考にして学習してくれよ・・・。そうなるとGeneratorもより本物らしく偽物を作るように学習ができず訓練自体が行き詰まるとか。
理想としてはな状況。の値が大きくなるのに対しては下がるとDiscriminatorが本物のデータに対しても誤って「偽物」と割り当てる可能性も出てきて、偽物と本物の両方のデータを参考にして本物らしさを学習している感じかな(論文の図)
Ideal が眩しいぜ
実際にどういう変更を加えるとそういった学習になってくれるのか。
初期のGANのDiscriminatorとGeneratorの各目的関数は次のように定義されてる
上で述べてるのはこの定義で訓練するとが変化しない、Generatorの偽物しか参考にしてない悪い状況になるはずで。
Discriminatorの最後の出力層を、それにシグモイド関数で活性化したものをと定義しておく。
本物 と偽物 の両方 を見比べるようなDiscriminatorは次のように定義すれば実現できるそうだ。
思ったよりシンプル。の時点では確率にはなってなくて、このは与えられた本物のデータがGeneratorの偽物より本物らしいといった確率を推定していることを意味する(解釈できる)と書いてある。
逆にGeneratorの偽物の方が本物のデータよりも本物らしいといった確率はこうなる
このDiscriminatorの定義に従って学習していけばいいんだな。目的関数としては次のようにすればいいそうだ
Discriminatorの方で考えるとが 1 に近ければ嬉しいのでlogでくくると log1 = 0になってくはずだから最小化なのかな。
RSGANは Relativistic Standard GANの略でStandard GANについては論文だとこう述べてる。
In the original GAN by Goodfellow et al. [2014], which we refer to as Standard GAN (SGAN), D is a classifier, thus it is predicting the probability that the input data is real.
RelativisticなDiscriminatorは他のGANにも適用できないかと思ってしまうのは自然で、次に一般的な表現というか定義の説明があった。
多くのGANを次のように表現する
where f1, f2, g1, g2 are scalar-to-scalar functions.
これにRelativisticなDiscriminatorをソイヤ
これが・・・Relativistic GAN・・・!ほとんどのGANではGeneratorのは無視される、勾配がゼロと書いてある。本物のデータから本物らしさを学ばずに学習してしまう悪い状況じゃん。
RGANの方では非ゼロの勾配を持つそうで、本物データからもGeneratorは影響を受けて学習できる。いいじゃん!!!
もう一つRelativistic average GAN(RaGAN)というものの説明が載ってたんですけど犬の画像がとても可愛くて癒されたので見てほしい。
食パンと類似した画像なら他にもあっただろうにあえて犬のケツを選ぶセンスすこだ・・・
まずはStandardなRSGAN試したろと思って長くなったので毎度のこと分ける
参考文献というか論文
[1807.00734] The relativistic discriminator: a key element missing from standard GAN
[1807.00734] The relativistic discriminator: a key element missing from standard GAN
[1807.00734] The relativistic discriminator: a key element missing from standard GAN