論文の重要なアイデア

重要だと思った論文のアイデアを書き溜めていきます.

GAN

Generative Adversarial Networks (GAN)[1] では,次のようなBinary Cross-Entropy誤差を最大化することで,識別器Dを学習します.

J(D;G) = \mathbb{E}_{x \sim p(x)} [\log D(x)] + \mathbb{E}_{y \sim p(y)}[\log(1-D(y))]

Dは単に入力が分布p(x)から生成されたものか,分布p(y)から生成されたものかを見分けているだけです. この目的関数に現れる期待値をデータセットを用いてモンテカルロ近似すると,識別器Dのパラメータについての勾配が求められます.

次に,この識別器Dを騙すような生成器Gの学習を考えます.もしyがy=G(・)のような形で出力されるなら

 \nabla_{G} = \frac{\partial J(D;G)}{\partial y} \frac{\partial y}{\partial G}

のように,生成器G(のパラメータ)に対する勾配も直接計算できます. この勾配を用いて,識別器Dと生成器Gを交互に学習することで,p(y)がp(x)を近似する,というのがGANのアイデアです.

GAIfO

ここで, \frac{\partial y}{\partial G} を計算できない場合を考えてみます. つまり,生成器Gは確かにp(y)に何らかの形で影響を及ぼしていますが,その関係が微分できないような状況です.

具体的な例がGAIfO[2]で取り上げられています.

J(D;G) = \mathbb{E}_{z \sim p(z)}[\log D(T(G(z)))] + \mathbb{E}_{x \sim p(x)} [\log(1-D(x))]

今まで通り,識別器Dは直接勾配を計算することで上式を最大化します. 一方で,識別器は模倣したい分布p(x)からの元らしさではなく,偽物の分布p(G(・))らしさを学習しています. この式では,第二項の期待値がp(z)の分布に変わっていますが,確率変数zは生成器Gを通って変換されるので,結局p(G(z))の分布をp(x)に一致させることが目標になります.しかし,ここではさらにGの出力は関数Tに入力されています.この関数Tが微分不可能な場合,\frac{\partial J(D;G)}{\partial G}を計算できません.

GAIfOでは,このような場合に,次のような目的関数を定義します.

-\mathbb{E}_{z \sim p(z)}[\log D(T(G(z)))]

つまり,-\log D(T(G(z)))は,「T(G(z))のp(x)らしさ」を表現しており,この期待値を最大化するようにGを学習します. Gの学習には,PPOのような強化学習アルゴリズムを用います. 実際には,zを状態・G(z)を行動,-\log D(T(G(z)))を即時報酬と考えて強化学習を実施することができます.

参考文献

[1] [1406.2661] Generative Adversarial Networks
[2] [1807.06158] Generative Adversarial Imitation from Observation