yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[2017] The Numerics of GANs #1

Open yoheikikuta opened 6 years ago

yoheikikuta commented 6 years ago

論文リンク

https://arxiv.org/abs/1705.10461

公開日(yyyy/mm/dd)

2017/05/30

概要

GANの学習の収束性に関して、目的関数の勾配ベクトル場を解析することで理解を深めようという論文。 勾配ベクトル場の Jacobian の固有値に注目し、収束のために固有値の実部が非ゼロで大きくない値でかつ虚部が大きくない場合に平衡点近傍で速く収束することを示した。

この解析に基づき、固有値の実部を負の方向に動かして相対的に虚部が大きくならないようにする consensus optimization を提案。これは generator と discriminator に勾配ベクトル場に関する L2 regularizer を入れるもので、two game players の player が合意形成に至りやすい方向に動かすという意味で consensus の名が与えられている。

実験でもその効果を確認している。 面白いのは、この論文の解析は存在が仮定されている平衡点周りでの解析になっているが、学習時の generator と discriminator の振る舞いを見ると学習を通じて非常に安定的になっている。これは global に良い性質がないと説明できない現象なので、global minimum の解析にも繋がるかもしれない、ということ。

yoheikikuta commented 6 years ago

モチベーションはGANの学習の難しさをどうやって理解し打破するかということ。難しさとしては以下のようなものが挙げられる。

yoheikikuta commented 6 years ago

この論文ではナッシュ均衡の存在は仮定している。 smooth two player games のナッシュ均衡を求めるのは Simultaneous Gradient Ascent (SimGA) がデファクトスタンダードであり、これは定微分方程式でのオイラー法として捉えることができる。

オイラー法は初期として位置と速度が与えられるときに微小ステップを繰り返して任意の点での解を求める方法である。

これを GAN の言葉で述べると、generator と discriminator のパラメタによる微分から得られる associated gradient vector field で解までステップを経て収束していけるかという話になる。 この勾配ベクトル場を解析、具体的にはこのヤコビアンの固有値を解析することで、GANの収束性にどのような性質があるかを調べようというものである。

yoheikikuta commented 6 years ago

discriminator f と generator g の associated gradient vector field は以下。

zero-sum game では g = -f なので、それを使うとこの勾配ベクトル場のヤコビアンが次の形に書ける。

これの固有値が主たる解析対象になる。なぜ固有値が重要になるかというと、以下が証明されるため。 パラメタの組(φ,θ)がナッシュ均衡の点にいれば、このヤコビアンが negative semi-definite である(逆も成り立つ)。

yoheikikuta commented 6 years ago

勾配ベクトル場を定義した後は、$F: \ \Omega \rightarrow \Omega$ なる写像を考える。これはパラメタの組を更新によって新たなパラメタに移すことに対応している。この辺はナッシュ均衡の formalize そのままだという感じ。

求めたいのはこの写像による固定点を求めること、global の解析は難しいこともあり、固定点周りの議論に注目して写像を $F(x) = x + h G(x) \ \text{where} \ h > 0 $ という形に書く。この $G(x)$ が 0 になるところが固定点になる。

これをベースに議論をしていくのだが、これだけでは制約がゆるくて収束を議論するには弱い。 さらにこの $F(x)$ がヤコビアン $F'(x)$ の固有値の絶対値を全て 1 以下にするような写像に限定する。なぜこんなことを考えるのか?ここにオイラー法的な考えが入ってくるわけで、固定点 $ x^ $ の近傍 $ F(x) - x^ $ において傾きが小さいことを保証しておくことで固定点にたどり着くことを保証するという狙い。

この辺の証明は純粋に常微分方程式の解法に基づくもので reference は この本(pdf) を見よとのこと。

yoheikikuta commented 6 years ago

この F を対象として、G が実部が負の固有値のみを持つと仮定した場合に、$ I + h G(x) $ の固有値が絶対値 1 以内に入る場合には全ての固有値 $ \lambda $ が次の関係式を持つことが要求される。

この辺はちょっと条件が入り組んでいるところもあるが、現時点ではこれくらいのセットアップをすることでようやくちゃんとした理論的な解析ができるという状況だということだろう。

この h の値と収束がどういう関係にあるのか? まず、h が非常に小さい場合は F' の固有値は全て 1 に近くなる。上のコメントで述べた固定点への収束だが、近傍では $ O(|λ_max|^k) $ で k を十分大きな回数繰り返すことで固定点からの差を任意に小さくできることが示される。つまり固有値の最大値が 1 に小さい場合は繰り返し回数をめちゃくちゃ増やさないといけないわけということである。これは図で見ると直観的に分かりやすい。

yoheikikuta commented 6 years ago

まずこれは F' の固有値の実部と虚部の空間の図である。 一番左は赤丸(G'の固有値)が写像 F によってどのように単位球に移されるか(緑の丸)を描いたものである。固定点の固有値は実部が 1 で虚部が 0 の点であり、そこに収束していく。 真ん中の図は h が小さい場合を描いている。虚部の絶対値が実部の絶対値より大きかったり、実部の絶対値がとても大きい場合である。このような場合は h が小さくなり、全ての固有値は実部 1 で虚部が 0 に近い点に移される。このような状況になってしまうと、固定点まで近いが gradient flow は鈍くなり固定点に収束するまでには非常に時間がかかってしまうということになる。

一番右はじゃあそれをどうやって回避するか、という提案手法である。方法は単純で、実部を負の方向に動かすような modification を考えましょうというものである。実際にそれをやるのが consensus optimization である。

yoheikikuta commented 6 years ago

具体的には generator と discriminator にパラメタの勾配場ベクトルの自乗項を正則化項として加えるというもの( $ L(x) = 1/2 \ |v(x)|^2 $ )である。

こうすると $ F(x) = x + h ( I - γ v'(x)^T ) v(x) $ となり、先程までの議論から γ の項だけ補正が入ることが分かる。直観的に言えば、この γ を大きめに取ることで、 F'(x) の固有値が negative real part を取るように動かして near-zero real part を防ぐことで、先ほどの問題を回避するというものである。

証明は少し複雑になるが、いくつかの性質に過程を置く以外は straightforward だし、メインのアイデアはこれで理解できるのでここでは詳細はいいだろう。

yoheikikuta commented 6 years ago

上の議論が実験的に正しいかを mode collapse でよく出てくる circular mixture Gaussian で試した結果が下図。左が補正無しの simultaneous Gradient Ascent で、右が補正ありの consensus optimization である。確かに zero real part (で non zero imaginary part)を回避できるような固有値の分布が得られていることが分かる。

yoheikikuta commented 6 years ago

学習経過の結果は下図。オレンジ色が consensus optimization でめちゃ安定している。

学習初期からこれだけ安定するのは global にも良い性質を持っていることを示唆しており、これは論文の主張よりも強い結果であるのでもっと深いことが分かるかもというのが著者らの主張である(初期から収束点の近くにいるような感じもするので初期値が良かったのではないかという疑惑は少しあるが)。

yoheikikuta commented 6 years ago

完全に余談だが、この論文を読むついでに ナッシュ均衡の原論文 を読んだりしていた。 これを読むと均衡を証明したのが偉いというより、不動点定理が使えるようなゲーム理論での問題設定を考えたのが偉いという感じがする。

これはこれとしてどっかでまとめてみるのも面白いかもしれない。そんなものは世の中にいくらであるだろうが、自分の理解の助けとして。

yoheikikuta commented 6 years ago

ちょっとサラッと書きすぎて微妙な理解のところを考えなおしてみる。 この論文で言うところの f と g は何か、という問題である。これらは two-player zero-sum game の効用関数で、simultaneous gradient ascent で update してるのでどちらも maximize する対象である。

original GAN の場合 $ \max_D \min_G [ \log(1-D(x)) + \log (1 - D(G(z))) ] $ (ここで x は true distribution で z は random distribution から sample して期待値を取るが、そこは省略)という形で書ける。

f を discriminator の効用関数と考えると、 $ \max_D [ \log(1-D(x)) + \log (1 - D(G(z))) ] $ に対して gradient ascent を実施すればよい。

g を generator の効用関数と考える。何も考えずに $ \min_G [ \log (1 - D(G(z))) ] $ で gradient descent で minimize するということもできるわけだが、two-player zero-sum game と捉える場合、$ g = -f $ (効用関数の総和は常に0)とできるため、符号が flip されることで maximize するものとなり $ \max_G [ \log (1 - D(G(z))) ] $ が効用関数となり、こちらも gradient ascent でアップデートできる。