Science

敵対的生成ネットワーク(GAN)の理論を解説

敵対的生成ネットワーク(GAN)の理論を解説

 

本記事では、生成モデルとして一躍有名になった『敵対的生成ネットワーク(Generative adversarial network ; GAN)』の理論的な内容をまとめていきます。

 

本記事を読むメリット

  1. GANの目的関数の意味がわかる

 

 

GANのネットワークと学習モデル

 

本章では、敵対的生成ネットワーク(Generative adversarial network ; GAN)の定式化を行います。

下記の記事では、生成モデルと学習モデルの間のKLダイバージェンスを最小化することで学習モデルの学習を行いましたがGAN(Vanila GAN)は異なるダイバージェンスの最小化として定式化されます。

 

GANで使用するネットワークを定義

 

GANでは、以下のGeneratorとDiscriminatorという二つのネットワークを使用します。

まずは、GeneratorとDisiriminatorを定義します。

定義: GeneratorとDiscriminator

  • Generator : \( G : \mathcal{Z} \to \mathcal{X} \) 
  • Discriminator : \( D : \mathcal{X} \to \mathbb{R} \)  

ここで、\( \mathcal{X} \)は、データ\( \mathbf{x} \in \mathcal{X} \)の空間とし、\( \mathcal{Z} \)は、私たちが設定する適当な空間(潜在空間)とします。

具体的に、上記のネットワークは以下のような役割をします。

  • Generator : ある潜在空間からデータのフェイク\(\mathbf{x}_{\text{fake}}\)を生成
  • Discriminator : 本物のデータとGeneratorによるフェイクのデータを識別

この二つのネットワークが敵対し、『切磋琢磨』しながら学習を行います。

切磋琢磨することで、成功すればデータにそっくりな『フェイク』をGeneratorが生成することができます。

Discriminatorの出力\(D(\mathbf{x})\)は\(\mathbf{x}\)が本物と思う確信度を表します。

今回は、パラメータ\(\theta_{D}\)によって特徴づけられ、直接的に確率と対応する以下のケースを考えます。

$$D(\mathbf{x};\theta_{D}) \in (0, 1)$$

 

GANの学習モデル

 

GANの学習モデルを定義するため、潜在空間\(\mathcal{Z}\)上の確率分布\(p_{z}(z)\)を定義します。

その確率分布\(p_{z}(z)\)は、サンプリングが容易な確率分布ならば特に問題はありません(一様分布やガウス分布等に設定することが多いです)

このとき学習モデルは、\(P_{z} (z)\)を使って以下のように定義することができます。

定義: GANの学習モデル

$$Q_{\theta_{G}}(\mathbf{x} \mid \mathbf{z}) \equiv \int d\mathbf{z} p_{z}(z)  \delta \left( \mathbf{x} – G(\mathbf{z};\theta_{G}) \right) $$

ここで、\(\theta_{G}\)は学習モデルのパラえ

この学習モデルを用いて、データの背後にある確率分布を近似し、統計的に類似した偽物データ\(\mathbf{x}_{\text{fake}}\)を生成することを目指します。

$$\mathbf{x}_{\text{fake}} \sim Q_{\theta_{G}}(\mathbf{x})$$

 

GANのネットワークの可視化

 

これまで定義した二つのネットワークを使って以下のようなネットワークを構成します。

GANのネットワークGANのネットワーク

 

上図の説明を簡単に行います。

まず、Generatorは\(p(\mathbf{z})\)によって生成される\(\mathbf{z}\)を入力として、\(\mathbf{x}_{\text{fake}}\)を出力します。

その後、Discriminatorは、実際のデータ\(\mathbf{x}_{\text{real}}\)とGeneratorによって生成されるフェイクデータ\(\mathbf{x}_{\text{fake}}\)を入力とし、入力が実際のデータである確率\(D(\mathbf{x};\theta_{D})\)を出力します。

上述で説明した『切磋琢磨』とはGeneratorは\(D(\mathbf{x}_{\text{fake}};\theta_{D}) = 1\)となることを目指し、Discriminatorは\(D(\mathbf{x}_{\text{fake}} = 0;\theta_{D})\)かつ\(D(\mathbf{x}_{\text{real}} = 1;\theta_{D})\)を目指すという意味です。

このような学習を行うための目的関数の構築方法をこの後説明します。

 

GANの目的関数

ここからは、GANを学習するための目的関数を説明していきます。

ゴールは、GANの目的関数のお気持ちがわかるようになることです。

 

GANの目的関数

 

GANの学習は、データを生成する確率分布\(p_{\text{real}}\)と学習モデル\(Q_{\theta_{G}}\)の間のKLダイバージェンス最小化の代わりに以下のような関数を用いて学習が行われます。

GANの目的関数

$$V(G, D;\theta_{G}, \theta_{D}) = \underset{\mathbf{x} \sim p_{\text{real}}}{\mathbb{E}} \left[\log D(\mathbf{x};\theta_{D})  \right] + \underset{\mathbf{z} \sim p_{z}}{\mathbb{E}} \left[\log \left( 1 – D(G(\mathbf{z};\theta_{G});\theta_{D}) \right)  \right]$$

上述で説明した学習モデル\( Q_{\theta_{G}} \)を用いると以下のように表せます。

\begin{align} V(G, D;\theta_{G}, \theta_{D}) &= \underset{\mathbf{x} \sim p_{\text{real}}}{\mathbb{E}} \left[\log D(\mathbf{x};\theta_{D})  \right] + \underset{\mathbf{x} \sim Q_{\theta_{G}}}{\mathbb{E}} \left[\log \left( 1 – D(\mathbf{x};\theta_{D}) \right)  \right]\\ &= \int d\mathbf{x} p_{\text{real}}~(\mathbf{x}) \log D(\mathbf{x};\theta_{D}) + \int d\mathbf{x} Q_{\theta_{G}}(\mathbf{x}) \log \left( 1 – D(\mathbf{x};\theta_{D}) \right) \\ &= \int d\mathbf{x}\left\{ p_{\text{real}}~(\mathbf{x}) \log D(\mathbf{x};\theta_{D}) +  Q_{\theta_{G}}(\mathbf{x}) \log \left( 1 – D(\mathbf{x}\theta_{D}) \right) \right\} \end{align}

 

目的関数が大きくなるときは、Discriminatorは本物のデータとフェイクのデータを正しく識別することができます。

逆に、目的関数が小さくなるときは、Discriminatorがフェイクのデータに騙されている状態です。

この性質を使うとGANの学習は、目的関数\(V(G, D; \theta_{G}, \theta_{D})\)を用いて以下のように定式化できます。

各ネットワークの目的関数

  • Generatorの目的関数

$$V_{G}(G, D;\theta_{G}, \theta_{D}) \equiv  V(G, D;\theta_{G}, \theta_{D})$$

  • Discriminatorの目的関数

$$V_{D}(G, D;\theta_{G}, \theta_{D}) \equiv~ – V(G, D;\theta_{G}, \theta_{D})$$

 

\( V(G, D;\theta_{G}, \theta_{D}) \)の定義から、このように目的関数が定義されるのは直感的に理解できますね。

 

GANの目的関数の最小化

 

目的関数が定義されたため、通常の学習と同様に、目的関数最小化問題を実行すれば学習は完了です。

一般には、深層学習でお馴染みの勾配降下法が使用されます。

GANの勾配降下法

  • Generatorの最適化
$$\theta_{G}^{(t+1)} \leftarrow \theta_{G}^{(t)}~ – \epsilon \nabla_{\theta_{G}} V_{G}(G, D;\theta_{G}, \theta_{D})  $$

 

  • Discriminatorの最適化
$$\theta_{D}^{(t+1)} \leftarrow \theta_{D}^{(t)}~ – \epsilon \nabla_{\theta_{D}} V_{D}(G, D;\theta_{G}, \theta_{D})  $$

 

ここで、\(\epsilon \in \mathbb{R}_{+} \)は学習率を表す。

 

この最適化問題の定常解は、以下の条件を満たします(Nash均衡解と呼ばれることもあります)

命題: 最適化の定常解

上記の最適化問題の定常解\(G^{\ast}\), \(D^{\ast}\)は以下を満たす。 

$$ V(G^{\ast}, D^{\ast}) =  \underset{\theta_{G}}{\min}  \underset{\theta_{D}}{\max} V(G, D; \theta_{G}, \theta_{D}) $$

 

最終的には、GANの最適化問題を\(\underset{\theta_{G}}{\min}  \underset{\theta_{D}}{\max} V(G, D; \theta_{G}, \theta_{D})  \)まで帰着することができました。

あとは、この最適化問題を一般的な機械学習と同様に、数値的に解けば良いですね…

しかし、本当にこの最適化は生成モデルを近似するのに相応しいのでしょうか?

通常の生成モデルの場合、KLダイバージェンスの最小化は\( p_{\text{real}} = Q_{\theta_{G}} \)となるように設計されているので納得はいきますが、今回の場合はどうでしょう…

この後、この点を詳しく解説していきます。

 

GANの最適解

今回は、上述で導出した最適化問題の解が、学習モデルとして相応しいのかを考えていきます。

つまり、最適解\(G^{\ast}\)が以下の等式を満たすのかを確認していきます。

$$Q_{\theta_{G}} = p_{\text{real}} $$

また、後半ではKLダイバージェンス最小化による学習手法と比較して相違点を説明します。

以降、\(Q_{\theta_{G}}(\mathbf{x})\)と\(D(\mathbf{x};\theta_{D})\)の関数空間が十分広いことを明示的に表すために\(Q(\mathbf{x})\)と\(D(\mathbf{x})\)と表すことにします。

Discriminatorの最適化

 

まずは、Discriminatorの最適化を考えます。

まず、目的関数が以下のように表せることを思い出しましょう。

$$V(G, D) =\int d\mathbf{x}\left\{ p_{\text{real}}~(\mathbf{x}) \log D(\mathbf{x}) +  Q(\mathbf{x}) \log \left( 1 – D(\mathbf{x}) \right) \right\}$$

この形式の変分法では以下のような便利な公式が使用できます。

変分法の公式

汎関数(関数の関数)

$$\mathcal{L}[f] = \int L(x, f(x)) dx$$

の停留関数\(f(x)\)は以下の方程式を満たす。

$$\frac{dL(x, f(x))}{df(x)} = 0$$

 

汎関数\(V(G, D) \)は\(D\)に関して微分可能なので、上記の公式を使うと\(D\)の停留条件は以下のように計算できます。

\begin{align}\frac{d V(G, D)}{dD} &= \frac{d}{dD}p_{\text{real}}~(\mathbf{x}) \log D(\mathbf{x}) +  Q(\mathbf{x}) \log \left( 1 – D(\mathbf{x}) \right) \\&= \frac{p_{\text{real}}(\mathbf{x})}{D(\mathbf{x})}  – \frac{ Q(\mathbf{x}) }{\left( 1 – D(\mathbf{x}) \right)} \\ &= 0 \end{align}

この方程式を解くと最適なDiscriminatorは以下の条件を満たすことがわかります。

$$D^{\ast}(\mathbf{x}) = \frac{p_{\text{real}}(\mathbf{x})}{p_{\text{real}}(\mathbf{x}) + Q(\mathbf{x}) }$$ 

 

次に、Generatorの最適解を考えていきます。

 

Generatorの最適化

 

次にGeneratorの最適化を考えていきます。

まずは、前節で導出した\(D^{\ast}\)を\(V(G, D) \)に代入し、以下のように変形します。

\begin{align}V(G, D^{\ast}) &= \int d\mathbf{x}\left\{ p_{\text{real}}(\mathbf{x}) \log \frac{p_{\text{real}}(\mathbf{x})}{p_{\text{real}}(\mathbf{x}) + Q(\mathbf{x})} +  Q(\mathbf{x}) \log \frac{Q(\mathbf{x})}{p_{\text{real}}(\mathbf{x}) + Q(\mathbf{x})} \right\} \\ &= \text{D}_{\text{KL}}\left(p_{\text{real}} \Bigg\| \frac{Q + p_{\text{real}}}{2} \right) + \text{D}_{\text{KL}}\left(Q \Bigg\| \frac{Q + p_{\text{real}}}{2} \right) – \log{4}  \end{align}

 

この\(V(G, D^{\ast})\)を最小する\(Q\)は、最後の式のKLダイバージェンスが両方とも0になれば良いので、以下のような条件が導かれます。

$$p_{\text{real}} = \frac{Q + p_{\text{real}}}{2} = Q$$

ゆえに、\(p_{\text{real}} = Q\)となることが示されました。

これで、最適化の解が学習モデルのパラメータとして相応しいことが確認できました。

このことから、GANはKLダイバージェンスではなく、以下で定義されるJensen-Shannonダイバージェンスを最小化する最適化であることがわかりました。

$$ \text{JSD}(p_{\text{real}} \| Q) \equiv \frac{1}{2} \left( \text{D}_{\text{KL}}\left(p_{\text{real}} \Bigg\| \frac{Q + p_{\text{real}}}{2} \right) + \text{D}_{\text{KL}}\left(Q \Bigg\| \frac{Q + p_{\text{real}}}{2} \right) \right) $$

 

Jensen-Shannonダイバージェンスの解説に関しては、下記が参考になります。

Jensen-Shannonダイバージェンスは、Kullback Leibler divergenceを対称化した者になっています。

また、完全に学習が進むと生成器はデータが本物なのか偽物なのかが完全に見分けがつかなくなり識別率は50%となります。

ここまでのまとめ

GANの損失関数最小化は、JSダイバージェンスという量を最小化することに対応する。

さらに、JSダイバージェンスが最小となるとき真の分布と生成器の分布が等しくなる。

 

GANを実装するときの最適化

理論上では、\(V(G, D)\)の期待値を評価する必要がありますが、現実的には評価するのが不可能です。

そのため、実際\(V(G, D)\)を計算するときは、実際にGeneratorから生成された偽物サンプル集合と実際のデータ集合の平均を取ることで近似的に評価します。

実際のライブラリで実装ときは、Binary Cross Entropyによる表現を理解しておくことで様々な教科書の実装例が理解しやすくなります。

ここでは、実装も視野に入れてBinary Cross Entropyを使用する表現も説明します。

 

Binary Cross Entropyによる表現

 

Pytorch等でGANを実装する場合、目的関数\(V(G, D; \theta_{G}, \theta_{D})\)をBinary Cross Entropy(BEC)で表現します。

ここからは、BECによる表現方法を説明していきます。

まずは、ご存知の方も多いかもしれませんが、BECを以下のように定義されます。

Binary Cross Entrpy

\(t \in \{0, 1\}\), \(f(\mathbf{x}) \in [0, 1]\)に対して、BCEを以下で定義される。

$$\mathcal{L}_{\text{BEC}} =~ – \mathbb{E} \left[t \log f(\mathbf{x}) ~- (1 – t) \log (1 – f(\mathbf{x})) \right]$$ 

 

本物サンプルに対して\(t = 1\)を割り当て、偽物のサンプルに対して\(t=0\)を割り当てることを仮定すると以下のように\(V(G, D;\theta_{G}, \theta_{D})\)をBCEを使って表現することができます。

  • 本物のサンプルに対するBEC

$$L_{\text{BCE}:t = 1} = \underset{\mathbf{x} \sim p_{\text{real}}}{\mathbb{E}} \left[\log D(\mathbf{x};\theta_{D})  \right] $$ 

  • 偽物のサンプルに対するBEC

$$L_{\text{BCE}: t=0} = \underset{\mathbf{z} \sim p_{z}}{\mathbb{E}} \left[\log \left( 1 – D(G(\mathbf{z}; \theta_{G});\theta_{D}) \right)  \right] $$ 

 

目的関数の期待値をサンプル平均に置き換える

 

データの分布関数は一般に未知なので期待値を解析的に評価することは不可能です

また、\(Q_{\theta_{G}}(\mathbf{x})\)も一般に複雑な形になるので期待値を解析的に評価することはできません。

そのため期待値を以下のようにサンプリング系列の平均で近似します。

サンプリングによる期待値の近似

仮に\(p(\mathbf{x})\)に従うサンプル点\(\{\mathbf{x}^{(i)}\}_{i=1}^{M}\)が得られたとき、期待値を以下で近似する。

$$\mathbb{E}_{\mathbf{x} \sim p(\mathbf{x})} \simeq \frac{1}{M} \sum_{i=1}^{M} \mathbf{x}^{(i)}$$

このサンプリングによる期待値の近似をGANの目的関数に使用します。

具体的には、\(M\)個の\(\{\mathbf{z}^{(i)} \}_{i=1}^{M}\)から生成される\(M\)個の偽物サンプルと\(M\)個のデータ\(\{\mathbf{x}_{(j)} \}_{i=1}^{M} \)を利用し、\(V(G, D; \theta_{D}, \theta_{G})\)を近似的に以下で評価します。

サンプルリング平均によるGANの目的関数の評価

$$V(G, D) \simeq \frac{1}{m} \sum_{i=1}^{M} \left[\log D(\mathbf{x}^{(i)}) + \log (1-D(G(\mathbf{z}^{(i)})))  \right] $$

 

 

GANの学習の問題点

 

GANの学習には以下のような問題点があります。

  1. 勾配消失問題
  2. モード崩壊
  3. 目的関数の収束性
  4. 汎化性能の評価

 

(編集中)

参考資料

 

下記に参考文献・参考URLを示します。

 

参考文献

 

参考文献を説明していきます。

 

実践GAN 敵対的生成ネットワークによる深層学習

 

実装のテクニック等も詳しく書いてあります。

 

ディープラーニングと物理学 原理がわかる、応用ができる 

 

物理的な定式化が最高です。

 

参考URL

 

参考URLを解説します。

 

原論文です。普通に読みやすいです。

とてもわかりやすい解説です。他の記事も非常に勉強になります。

 

 

まとめ

 

GANを定式化し、生成モデルとしてどのように学習するべきかを説明しました。

GANは、他の生成モデルのようにKL ダイバージェンス最小化で定式化されていないところが特徴です。

本記事には、誤植や理解の勘違いが含まれている可能性があります。

もし間違いを見つけた場合は、筆者のTwitter(努力のガリレオのTwitterはこちら)や記事のコメント欄にそっとコメントしてください…

本記事が皆様の役に立つことを願います…

 

ABOUT ME
努力のガリレオ
【運営者】 : 東大で理論物理を研究中(経歴)東京大学, TOEIC950点, NASA留学, カナダ滞在経験有り, 最優秀塾講師賞, オンライン英会話講師試験合格, ブログと独自コンテンツで収益6桁達成 【編集者】: イングリッシュアドバイザーとして勤務中(経歴)中学校教諭一種免許取得[英語],カナダ留学経験あり, TOEIC650点
【必見】オンライン英会話を利用しないのは時代遅れ?

 

 

英語学習でオンライン英会話を利用しないのは、時代遅れです…

 

『スピーキングができないから、オンライン英会話はまだまだ後回し…』と思っている方は大間違いです。

 

最近のオンライン英会話は、教材が豊富で、もはや参考書・問題集は不要になりつつあります…

また、多くのオンライン英会話が最新メソッドを導入して、スピーキングのみならず、リーディング・リスニング・ライティングの能力も上がる教材を導入しています。

さらに、効率的な記憶ツールや学習カウンセリングのサービスが提供されることもあります!!

 

特に初心者の方は、下記の記事で紹介しているオンライン英会話をチェックしてみてください。

 

【東大生が厳選】初心者にオススメなオンライン英会話10選実は、最適なオンライン英会話はユーザーによって異なります。本記事では、複数のオンライン英会話を経験した私が、他社と比較しつつ特徴を明確にして本当にオススメできるオンライン英会話を10個厳選しました。...

 

中には、2週間の無料体験期間を提供しているオンライン英会話もあります。

英語学習が滞っている方や英語学習を習慣化できていない方は無料体験期間で良いので挑戦してみてください。

何事も行動することが大切です。

 

また、多くのオンライン英会話がTOEICやTOEFL等の外部英語試験の対策レッスンを提供してきています。

中には、追加料金なしで、本番さながらの対策や面接対策を行うことができるオンライン英会話もあります。

 

特にTOEIC対策に強いオンライン英会話は下記を参考にしてください。

 

【徹底比較】TOEIC対策に強いオンライン英会話5選|東大生が厳選!オンライン英会話はTOEICのスコアを効率的に上げる最強のツールです。本記事では、TOEICにオンライン英会話が効果的な理由とTOEIC対策に強いオンライン英会話を厳選しました。詳しい内容は記事を参考にしてください。...

 

TOEFL対策に強いオンライン英会話に関しては下記を参考にしてください。

 

【徹底比較】TOEFL対策に強いオンライン英会話5選|東大生が厳選!TOEFL対策にオンライン英会話は有効です。事実、私もTOEFL対策のためにオンライン英会話を使用してTOEFL ibtの4技能、TOEFL itpのスコアを爆上げすることができました。この記事では、私が思うTOEFL対策に最適なオンライン英会話を紹介しました。...