深層生成モデル (Deep Generative Models)

1+

[改訂履歴]:

  • 2020/8/19 : 1.概要と2.GANの微調整を行った.ロス関数について2つに分解した記述は削除し,GANの記事へ移行した.

1.概要

画像認識やパターン認識界隈において,(微分可能な)生成モデルとしてDeep Neural Networksを学習するものを,総じて深層生成モデル(Deep Generative Model)と呼ぶ.その代表的なものとして,画像認識分野では特に,GAN(Generative Adversarial Networks)とVAE(Variational Auto Encoder)が現在よく研究されている.

また,RealNVPや音響生成モデルWaveNetなどの自己回帰モデル(Autoregressive Model)や,フロー正規化モデル(Normalizing Flow Model)も深層生成モデルであるが,現時点ではGANとVAEのみにフォーカスしてた記事構成としている(※基本的な記事を書き終えてサイトとして充実してきたのちに.これら2つについての記事も追加したい).

以降,1.1節にて,まず最初に導入のための概要として,深層生成モデルの特徴を述べる.2節以降は各節で基本となる2つのモデルである,GAN(2節),VAE(3節)について,元論文[1], [2]を中心に概要を述べたい.

1.1 深層生成モデルの特徴

以前の生成モデルと比べた際に,深層生成学習モデルには以下のような代表的な特徴がある:

  • 画像データや音響データなどの「複雑なデータ分布を持つ,高次元の実データ群」から生成モデルを学習することで,生成モデルから任意の本物らしく高精細な(疑似)データを生成することが可能.
  • Encoder-Decoderモデルも同時に使用すると,その中で真ん中に低次元の中間表現(bottleneck)を同時に学習できる(VAEやVAE-GANなど)
  • Deep Neural Networks(特に画像の場合CNN)を用いて実現しているので,潜在表現を学習する際にもつれほどき(disentanglement)を行いやすい (infoGANや$\beta$-VAEなど).
  • 高いモジュール性を持つNeural Networksとして実現しているのが深層生成モデルである.よって,他の識別モデルと結合したり,複数タスクや複数モーダルの同時学習を行ったり,複数の処理をステージ化したうえでEnd-to-End学習も行いやすい.
  • 2モーダル間でモーダル変換や同時埋め込み(joint embedding)を学習したい際に,それらのあいだで順方向の変換ネットワークと逆方向の変換を同時に相互学習するなかで,GANを応用した自己教師表現学習(Self-supervised Representation Learning)が実現できる(Cycle GANなど).

2.敵対的生成ネットーワーク(GAN)

2.1 概要

メイン記事: Generative Adversarial Network

Goodfellowら[1]は, 生成ネットワークとその学習を助けるTrue/False識別ネットワークの2つから構成される「Generative Adversarial Networks(GAN)」を,「敵対的学習(Adversarial Training)」と名付けたmin-maxゲームを用いて学習する方法を提案した.

GANは生成器(Generator)識別器(Discriminator)の2つのネットワークから構成され,これらがお互い凌ぎを削りながら敵対関係として相互学習することから「敵対的学習」と呼ぶ:

  • 生成器(Generator)のネットワーク$G$:潜在表現に相当するランダムな低次元ノイズベクトル$\bm{z}$から,画像などの実データらしきデータを生成する.敵対学習で手に入れたいものが,この生成モデル$G$である.
  • 識別器(Discriminator)ネットワーク$D$:学習時に$G$から生成したサンプルのTrue/False判定をバイナリ識別(1/0)で行うことで,$G$を学習する時の補助役を担当する.

敵対学習では,これら2つの$G$と$D$のうち,片方を固定してもう片方をSGDで学習することを相互に繰り返すことで,双方の最適化を行う.

GANの学習で最終的に欲しいものは,生成モデル$G$である.この意味で,$D$はテスト時には使用しないので,あくまで学習中に生成サンプルのリアルさを増していくための補助役である.

以下の合成ロス関数が,$G$と$D$敵対学習の目的関数である:

$\min_{G}\max_{D}V(D,G) = E_{x \sim p_{data(\bm{x})}}[log(D(\bm{x}))]+E_{z \sim p_z(\bm{z})}[1-log(D(G(\bm{z})))]$

これらの最大化と最小化を,片方がのネットワークパラメータを固定しながら交互に行うことで,$D$と$G$の学習が進んでいき,敵対的学習が達成される.(学習の詳細はGANの記事を参照).

2.2 敵対的学習の拡張

この節では,GAN登場後,2017年ごろまでの初期の拡張について述べたい.(より詳しくはGANの記事で述べる)

2.1節で述べた最初のGANの提案の実験では,MNISTデータセットの白黒文字画像群からの生成モデル学習が行われており,畳み込み層は用いられておらず小さい簡単な対象からしかまだ生成モデルを学習できない基礎的なものであった.そこに,DCGAN[3]で$D$も$G$もCNNとして学習するが初提案されて以降,GANでもCNNを用いることが一般的となった.CNN導入のおかげで,対象物体やシーンが複雑であったも敵対学習を適用することが可能になり始める.

オリジナルのGAN[1]では,Endoderは無くDecoder(=Generator)しか使用せず,ランダム変数ベクトル$\bm{z}$から画像を生成していた.このGANに,VAEのような「明示的な潜在変数空間」や「Autoencodingの仕組み」などが加わると便利なので,「GANにもそれのVAEの良い点を追加して拡張しよう」という「VAEとGANのハイブリッド化したモデル」の研究が当時数多く行われた.条件変数を補助入力として使用できるConditional GANや,VAEとの素直な合成であるVAE-GAN,ならびに相互学習のGANであるBi-GAN/ALI/AGEなどの各種拡張提案が続いた.これに伴い,使用できるタスクの幅が広がっていくこととなる.

一方,Isolaらの提案したpix2pix[4]の登場により,異なる画像のドメイン間で画像を画素単位で個別に変換することができる画像変換(Image Translation)ネットワークとよばれる技術がGANを応用するかたちで登場した.pix2pixでは変換前後の位置合わせがされていないとならない制限があり,変換画像ペアの準備に苦労する側面があったが,CycleGAN[5]の提案により,変換前後の画素位置合わせがペア間の位置合わせ無し(Unpaired)に,変換前後の画像ペア群をただ用意するだけでも画像変換が学習できるようになった.(※ CycleGANと同時期に,実質同じ提案であるDiscoGAN/DualGANが提案されている).

3. Variational Autoencoders (VAE)

メイン記事:Variational Autoencoders

Variational AutoEncoders(VAE)は,Neural Networkで実現される潜在変数付きの確率的グラフィカルモデル形式の生成モデルである.

VAEでは,Autoencoderの中間部分にランダム潜在変数$\mathbf{z}$を用意し,$x$がその潜在変数zから生成されると仮定する.(学習データとして)観測変数$x$が与えられた際に,VAEはデータの尤度$p(x)$をデコーダ$p(x|z)$(※学習時に求まる)から生成されるとし,学習時にはその逆方向である観測データからの$p(z)$の推論を,ベイズの式から代替できる事前分布$p(z|x)$により行う.

ただ,事後分布$p(z|x)$の計算は非常に難しいので,計算可能になる近似分布$q(z|x)$をエンコーダとして用意し,変分ベイズ推論(variational Bayes inference)により$z$を推論するエンコーダ$q(\bm{z}|\bm{x})$を学習する.VAE[2]では(古典的な潜在変数グラフィカルモデルのように)潜在変数$\bm{z}$のPriorとして対角化された球状の正規分布を仮定する.

VAEの学習は,以下の目的関数をもちいて,Encoderのパラメータ($\phi$)とデコーダのパラメータ($\theta$)の同時最適化を行う:

$\mathcal{L}_{VAE}(\theta,\phi,x) = \mathbb{E}_{q_{\phi} (\bm{z}|\bm{x}) } [log p_{\theta}(\bm{x}|\bm{z})] – D_{KL}(q_{\phi}(\bm{z}|\bm{x}) || p_{\theta}(\bm{z}) ) \leq log p_{\theta}(\bm{x}) $

まとめると,VAEは高次元の学習データ分布だけを頼りに,正規分布上に各データを低次元の潜在変数多様体上に埋め込む教師なし学習を行うことができる,ニューラルネットで実現されてSGDで大量データからの学習が可能な.潜在変数グラフィカルモデル形式の生成モデルである.

VAEのGANとの違い

オリジナルのGANでは潜在変数$\bm{z}$は学習時にただランダム生成されるので,学習後の$\bm{z}$に特段の意味がない.一方VAEでは,元の高次元データの類似度が反映された低次元埋め込み空間が出来上がり,エンコーダによりデータ$\bm{x}$から潜在変数$\bm{z}$(対角化された正規分布)を推論できるのが,GANと異なる点である.

VAEは,確率的グラフィカルモデルを採用することにより,潜在変数空間を作成できて,かつ事前分布/事後分布もシンプルな正規分布である.正規分布を用いて$p(\bm{z})$および$p(\bm{z}|\bm{x})$が(ベイズにより)陽にモデル化されているので,モデルの解釈性はGANより高い.一方で,正規分布は単純なので,多峰性のデータ分布にはうまくフィットできずにノイズ混じりのモデルになってしまう.この意味では,VAEより敵対学習の方が有利でケースは「解釈性はさておき,とにかく学習サンプルに近いデータを生成するモデルが欲しく,VAEのような潜在的な分布も必要ない場合」であるとも言える (※ シャープな画像を生成できるGANと比べると,VAEはボヤけた感じのサンプル画像しか生成できない.ただしVQ-VAEの登場により,現在はVAEでもクリアなサンプル画像を生成できる状況に変わっている).

また,[2]でのMNISTから学習したVAEの潜在空間の可視化を見てもわかるように,VAEは均等にクラス間でバランスされたデータセットであるほど,学習サンプル以外のデータも綺麗に生成しやすく,クラス間を補間した中間的なサンプルの生成に優れている側面もある.一方で,クラスラベルで条件付けを行うことができるConditional GAN およびConditionalVAEの場合は,いずれも明示的にクラスラベル情報を使用して学習するので,クラス間の補間データ生成にはあまり差が出ない.

4. まとめ

この記事では深層生成モデルの基本的な2つのモデルであるGANとVAEの概要を述べた.また,元の提案論文[1][2]をベースに,3節では両者の手法を少し比較し,2者の合成するメリットについても述べた.一方でベース手法のみの紹介に留めているので,条件付けGAN/VAEや,近年流行のCycle Consistencyなどの「GAN/VAEの拡張手法」については,紹介に留めて説明までは行っていない.

References

  • [1] I. Goodfellow, J. Pouget-Abadie, M. Mirza, B. Xu, D. Warde-Farley, S. Ozair, A. Courville, and Y. Bengio. Generative adversarial nets. In Advances in Neural Information Processing Systems (NeurIPS), 2014.
  • [2] D. P. Kingma and M. Welling. Auto-encoding variational bayes. in ICLR, 2014.
  • [3] Alec Radford, Luke Metz, and Soumith Chintala. Unsupervised representation learning with deep convolutional generative adversarial networks. In ICLR, 2016.
  • [4] Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, and Alexei A Efros. Image-to-image translation with conditional adversarial networks. In CVPR, 2017.
  • [5] J.-Y.Zhu,T.Park,P.Isola,andA.A.Efros.Unpairedimage- to-image translation using cycle-consistent adversarial net- works. In ICCV, 2017.

外部リンク

1+