Deep Generative Models

生成モデルは教師なし学習を使用してあらゆる種類のデータ分布を学習する強力な方法であり、わずか数年で大きな成功を収めた。 生成モデルのすべての種類は、いくつかのバリエーションを持つ新しいデータ点を生成するように、訓練セットの真のデータ分布を学習することを目的としています。 しかし、暗黙的にせよ明示的にせよ、データの正確な分布を学習できるとは限らない。そこで、真のデータ分布にできるだけ近い分布をモデル化しようとする。 このため、ニューラルネットワークの力を利用して、モデルの分布を真の分布に近似させることができる関数を学習することができる。

最もよく使われ効率的なアプローチとして、変分オートエンコーダ(VAE)と生成逆行ネットワーク(GAN)の2つがある。 VAEはデータの対数尤度の下限を最大化することを目的とし、GANは生成器と識別器の間の均衡を達成することを目的としています。 このブログ記事では、VAE と GAN の動作とその背後にある直感を説明します。

バリエーション オートエンコーダ

読者はすでにバニラ オートエンコーダの動作に慣れていると仮定しています。 オートエンコーダを使って、入力画像を、入力データ分布に関する潜在的な情報を格納できる、より小さな次元の表現に符号化できることは知っています。 しかし、バニラオートエンコーダでは、エンコードされたベクトルはデコーダを使って対応する入力にマッピングされるだけである。 これを達成するために、モデルは学習データの確率分布を学習する必要がある。 VAEは、ニューラルネットワークを用いて画像のような複雑なデータ分布を教師なし方式で学習する最もポピュラーなアプローチの一つである。 これはベイズ推定に基づく確率的グラフィカルモデルであり、学習データの基礎となる確率分布を学習し、その分布から新しいデータを容易にサンプリングできるようにすることを目的としている。 そのアイデアは、潜在変数(直接観測されないが、数学的モデルによって推測される変数)と呼ばれる訓練データの低次元潜在表現を学習することであり、実際の訓練データを生成したと想定している。 これらの潜在変数は、モデルが生成する必要のある出力の種類に関する有用な情報を格納することができる。 潜在変数zの確率分布をP(z)と表記する。 推論時に新しいデータ点を簡単にサンプリングできるように、分布P(z)を学習する事前分布としてガウス分布が選択される。

さて、主目的は学習データXの尤度を最大化するいくつかのパラメータでデータをモデル化することである。 つまり、低次元の潜在ベクトルがデータxを生成したと仮定し(x∈X)、この潜在ベクトルを、評価すべきθをパラメータとする決定論的関数f(z;θ)を用いてデータxに写像する(図1参照)。 この生成過程の下で、我々の目的は、Xの各データの確率を最大化することであり、それは、

Pө(X) = ∫Pө(X, z)dz = ∫Pө(X|z)Pө(z)dz (1)

ここに、f(z;θ)は分布Pө(X|z)に置き換えられている。

Fig.1. パラメータө

を用いてデータ分布にマッピングされた潜在ベクトル この最尤推定の直感は、もしモデルがこれらの潜在変数から学習サンプルを生成できるならば、いくつかのバリエーションを持った類似サンプルも生成できることである。 言い換えれば、P(z)から多数の潜在変数をサンプリングし、これらの変数からxを生成すれば、生成されたxはデータ分布Pdata(x)に一致するはずである。 ここで、我々は2つの質問に答える必要がある。 潜在変数の分布をどのように捕えるか、そして、式1をzのすべての次元にわたってどのように積分するか。

明らかに、出力画像を生成するために潜在ベクトルにエンコードしたい関連情報を手動で指定するのは退屈な作業である。 むしろ我々は、推論時に簡単にサンプリングできるように、この潜在ベクトルが正規分布としてうまく近似できることを仮定して、zを計算するためにニューラルネットワークに依存する。 n次元空間におけるzの正規分布があれば、十分に複雑な関数を用いて任意の種類の分布を生成することが常に可能であり、この関数の逆数を用いて潜在変数自体を学習することができる。

式1において、積分はzのすべての次元にわたって行われるので実行不可能である。 しかし、モンテカルロ積分の方法を使えば計算できるが、これは実装が容易でない。 そこで、式1のPө(X)を近似的に最大化する別の方法をとる。 VAEの考え方は、我々が知らないP(z|X)を使ってP(z)を推論することである。 P(z|X)は変分推論と呼ばれる方法で推論しますが、これは基本的にベイズ統計学の最適化問題です。 まず、P(z|X)を見つけやすい単純な分布Q(z|X)を使ってモデル化し、KL-divergence metric approachを使ってP(z|X)とQ(z|X)の差を最小にし、我々の仮説が真の分布に近くなるよう試みます。 これには多くの数学的方程式が続きますが、ここでは説明せず、原著論文でご覧ください。 しかし、VAEの背後にある直感を得れば、これらの方程式はそれほど難しくないと言わざるを得ません。

上記の方程式は非常に良い解釈を持っています。 Q(z|X) という項は基本的に私たちのエンコーダー ネットであり、z はデータ x(x∈X) のエンコードされた表現、そして P(X|z) は私たちのデコーダー ネットになります。 つまり、上式では、D_KLで与えられる誤差の下でデータ分布の対数尤度を最大化することが目標になります。 P(z|X)は扱いにくいですが、KL-divergence項は>=0なので、VAEはlog(P(X))の下限を最小化しようとしていることが容易に分かります。これはEの最大化およびD_KLの最小化と同じことです。 Eの最大化は最尤推定であり、デコーダネットを用いてモデル化されることが分かっています。 先ほど潜在表現がガウスに近いと言いましたが、それゆえP(z)をN(0,1)と仮定します。 この仮定に従うと、Q(z|X)もこの分布に近くなるはずである。 これをパラメータμ(X)とƩ(X)を持つガウス分布とすると、この2つの分布の違いによる誤差、すなわち。 P(z)とQ(z|X)の差による誤差はKL-divergenceによって与えられ、以下の閉形式解となる。

下限変分界を最適化していることから、最適化関数が :

log(P(X|z)) – D_KL、2番目の解は上に示されている。

したがって、私たちの損失関数は2つの項を含むことになる。 一つは入力から出力への再構成損失で、もう一つはKL-発散項である。 これで、バックプロパゲーションアルゴリズムを用いたネットワークの学習が可能になりました。 しかし、問題がある。それは、第一項はPのパラメータだけでなく、Qのパラメータにも依存するが、この依存関係は上の式には現れないということである。 そこで、分布 Q(z|X) または N からランダムに z をサンプリングしている層で、P がデコードできるようにバックプロパゲートするにはどうすればよいのでしょう。 勾配はランダムなノードを流れることができません。 そこで、再パラメータ化のトリック(図参照)を用いて、ネットワークを微分可能にする。 N(μ(X), Σ(X)) からまずε N(0, I) をサンプリングし、z=μ(X) + Σ1/2(X)∗ε を計算するのです。 . なお、フィードフォワードのステップはどちらも同じ(左&右)だが、勾配は右のネットワークでしかバックプロパゲートできない。

Fig.2. Reparameterization trick used to backpropagate through random nodes

Inference time, we can simply sample z from N(0, 1) and feed it to decoder net to generate new data point.推論時に、N(0, 1)からzをサンプリングして、デコーダネットに送り、新しいデータ点を生成する。 下変分境界を最適化しているので、生成された画像の品質はGenerative Adversarial Networksのような最先端の技術と比べてやや劣る。

VAEの最も優れた点は、生成モデルと推論モデルの両方を学習することである。 VAEもGANも教師なし学習を使って基礎的なデータ分布を学習する非常にエキサイティングなアプローチですが、GANはVAEに比べてより良い結果をもたらします。 VAEでは変分下限を最適化するのに対し、GANではそのような仮定がない。 実際、GANは明示的な確率密度推定を扱わない。 VAEがシャープな画像を生成できないのは、モデルが真の事後分布を学習できていないことを意味する。 VAEとGANは、主に学習方法が異なる。 Generative Adversarial Networks

Generative Adversarial Networks

Yann LeCunは、敵対的学習はスライスしたパン以来最もクールなものだと言っています。 Generative Adversarial Networks の人気と、それが生み出す結果の質の高さを見れば、ほとんどの人が彼の意見に同意するのではないでしょうか。 敵対的トレーニングは、ニューラルネットワークに特定のタスクを教える方法を完全に変えてしまったのです。 Generative Adversarial Networksは、Variational Autoencodersのように明示的な密度推定を行うわけではありません。 その代わり、ゲーム理論のアプローチに基づき、GeneratorとDiscriminatorの2つのネットワーク間でナッシュ均衡を見つけることを目的としている。 このアイデアは、ガウス分布のような単純な分布からサンプリングし、このノイズをニューラルネットワークのような普遍関数近似器を使ってデータ分布に変換することを学習することである。 生成器モデルGはデータ分布を捕らえることを学習し、識別器モデルDはサンプルがモデル分布ではなくデータ分布から来た確率を推定する。 基本的にジェネレータのタスクは自然に見える画像を生成することであり、識別器のタスクはその画像が偽物か本物かを判断することである。 これはミニマックス2人ゲームと考えることができ、両者のネットワークの性能は時間とともに向上する。 このゲームでは、生成器はできるだけ本物の画像を生成して識別器を欺こうとし、生成器は識別能力を向上させて識別器に欺かれないようにしようとする。 下図はGANの基本アーキテクチャである。

Fig.3. Generative Adversarial Networkの構成要素

入力ノイズ変数P(z)に対して事前分布を定義し、生成器はこれをパラメータөgの複素微分可能関数でデータ分布に写像する。 これに加えて、入力xを取り込み、パラメータөdを持つ別の微分可能な関数を使用して、xが真のデータ分布Pdata(x)から来る確率を示す単一のスカラー値を出力するDiscriminatorという別のネットワークを持っています。 GANの目的関数は、

上式において、識別器への入力が真のデータ分布から来る場合、D(x)は上記目的関数を最大化するように1を出力すべきであるw.r.h.。後者は基本的にGがDを欺くことができるような現実的な画像を生成することを意味する。この関数をGradient Ascentを用いてDiscriminatorのパラメータで最大化し、Gradient Descentを用いて同じパラメータで最小化する。 しかし、Generatorの目的を最適化する際に問題がある。 Generatorが何も学習していないゲーム開始時には、通常、勾配は非常に小さく、非常にうまくいっているときには勾配は非常に大きくなる(Fig.4参照)。 しかし、我々は逆の振る舞いをしたい。 したがって、我々はE

Fig.4 を最小化するよりEを最大化させる。 Generatorのコストは生成画像に対するDiscriminatorの応答の関数として

学習過程はDiscriminatorとGeneratorに対して同時にStochastic Gradient Descentを適用することからなる。 学習中は、ミニバッチに対して、Dを最適化するkステップとGを最適化する1ステップを交互に繰り返す。 D(x, өd) = ½またはρg = ρdataのとき、学習は停止する。

GAN の初期のモデルの一つは、DCGAN で、これは Deep Convolutional Generative Adversarial Networks の頭文字である。 このネットワークは、一様分布から抽出した100個の乱数を入力とし、所望の形状の画像を出力する。 このネットワークは、多くの畳み込み層、脱畳み込み層、完全連結層から構成されている。 このネットワークは多くのデコンボリューショナルレイヤーを用いて、入力ノイズを目的の出力画像にマッピングする。 バッチ正規化はネットワークの学習を安定させるために用いられる。 ReLU活性化は、tanh層を使用する出力層を除く全ての層のジェネレータに使用され、Leaky ReLUはDiscriminatorの全ての層に使用されている。 このネットワークはミニバッチ確率的勾配降下法を用いて学習され、ハイパーパラメータを調整して学習を加速するためにAdam optimizerが使用された。 この論文の結果は非常に興味深いものであった。 6162>

Fig.5.1 のように、生成器は興味深いベクトルの演算特性を持ち、それを使って画像を思い通りに操作できることが示された。 DCGAN

の生成器

Fig.6. DCGANの識別器

GANのバリエーションとして最も広く使われているのが、ノイズベクトルに条件ベクトルを加えるだけで構成される条件付きGANである(図7を参照のこと)。 cGAN以前は、ノイズzのランダムなサンプルからランダムに画像を生成していたが、何か所望の特徴を持った画像を生成したい場合はどうすればよいだろうか。 どのような画像を生成したいのか、このような余分な情報をとにかくモデルに与える方法はないのだろうか。 答えはイエスであり、条件付きGANはそのための方法である。 生成器と識別器の両方に提供される追加情報に基づいてモデルを条件付けることで、データ生成プロセスを指示することが可能になる。 条件付きGANは、テキストから画像生成、画像から画像への翻訳、自動画像タグ付けなど、様々なタスクで利用されている。 両者の統一的な構造を下図に示す。

Fig. yを条件付けベクトルとするcGANの基本例

GANの素晴らしい点の1つは、少ない学習データでも学習できることである。 確かにGANの結果は有望ですが、学習手順は簡単ではなく、特にネットワークのハイパーパラメータを設定することが重要です。 さらに、GANは簡単に収束しないので、最適化が難しい。 もちろん、GANをハックするためのヒントやトリックもありますが、必ずしも役立つとは限りません。 これらのヒントのいくつかは、ここで見つけることができます。 また、生成された画像が知覚的にリアルかどうかをチェックする以外、結果の定量的な評価基準はありません。

結論

深層学習モデルは、教師あり学習では本当に人間レベルのパフォーマンスを達成していますが、教師なし学習では同じことは言えません。 それでも、深層学習科学者は、教師なしモデルのパフォーマンスを向上させるために懸命に取り組んでいます。 今回のブログポストでは、教師なし学習のフレームワークとして最も有名な生成モデルの2つが実際にどのように機能するのかを見てみました。 Variational Autoencodersの問題点と、Adversarial Networkがなぜリアルな画像を生成するのに優れているのかを知ることができた。 しかし、GANには学習の安定化などの問題があり、これはまだ活発な研究分野です。 しかし、GANは実に強力で、現在、高画質画像(動画参照)や動画の生成、テキストと画像の翻訳、画像強調、画像からのオブジェクトの3Dモデルの再構成、音楽生成、抗がん剤発見など、さまざまなタスクで利用されている。 これ以外にも、多くの深層学習研究者が、この2つのモデルを統一し、両者の長所を引き出すための研究を行っています。 ディープラーニングの進歩がますます加速する中、GANは半教師付き学習や強化学習など、人工知能の閉ざされた多くの扉を開くと私は考えています。 今後数年間で、生成モデルはグラフィックデザインや魅力的なユーザーインターフェースのデザインなどに非常に役立つようになるでしょう。 また、Generative Adversarial Networksを使って、自然言語のテキストを生成することも可能になるかもしれない

コメントを残す

メールアドレスが公開されることはありません。