変分オートエンコーダー

出典: フリー百科事典『ウィキペディア(Wikipedia)』
データサイエンス > 機械学習 > 教師なし学習 > 生成モデル > 変分オートエンコーダー

変分オートエンコーダー(Variational Auto-Encoder: VAE)とは、ニューラルネットワークを使った生成モデルのひとつである。 原論文ではまず、確率分布に対するパラメーター最適化アルゴリズムであるオートエンコーディング変分ベイズアルゴリズム(Auto-Encoding Variational Bayes (AEVB) algorithm)を導入し、その応用例として変分オートエンコーダーを導入しているので、本項でもこれにならい、まずはオートエンコーディング変分ベイズアルゴリズムから説明する。

オートエンコーディング変分ベイズアルゴリズムの概要[編集]

セッティング[編集]

今、データ集合が各i=1,...,Nに対し、以下のように生成されていると仮定する#原論文:2.1節

  • まず潜在変数z(i)が何らかの確率密度関数に従って選ばれ、
  • x(i)z(i)に依存した何らかの確率密度関数に従って選ばれる。

ここでθは何らかのパラメーターであり、θの真の値θ*は未知である。またに従って値を選ぶのは計算量的に容易であるものとする。

一方、潜在変数の事後分布の確率密度関数は容易には計算できず、(容易に計算できる)確率密度関数により、近似する事を考える#原論文:2.1節。ここではパラメーターである。

我々は、をどの程度よく近似しているかを測る尺度として、以下の関数(変分下界と呼ばれる)を考える#原論文:2.2節

ここでKLはカルバック・ライブラー情報量である。カルバック・ライブラー情報量は常に非負である(ギブスの不等式)ので、は自己情報量下界になっており、を(カルバック・ライブラー情報量の意味で)よく近似しているほどに近づく。

目標[編集]

我々の目標は、与えられたデータ集合に対し、下界が可能な限り大きくなるパラメーターの組を見つける事である。

これができれば特に以下の事ができるようになる:

  • 見つけたθを使う事でに従う確率変数zxを生成する生成モデルを作成
  • によりを推定

後述する生成モデルである変分オートエンコーダーは、xの生成モデルが作れるという上述の事実をニューラルネットワークに適用する事で得られる。

アルゴリズム[編集]

しかし前述した変分下界は一般には計算が簡単ではない。そこで我々は、が適切な仮定を満たすという条件下、SGVB推定量(Stochastic Gradient Variational Bayes estimator、確率的勾配変分ベイズ推定量)という、変分下界の推定量を導入する#原論文:2.3節

オートエンコーディング変分ベイズアルゴリズム(Auto-Encoding VB (AEVB) algorithm)は与えられたデータ集合に対し、確率勾配法を用いてSGVB推定量を極大化するものである#原論文:2.3節

他の推論アルゴリズムとの比較[編集]

本章で想定しているセッティングにおいて、既知の手法の有用性は限定的である#原論文:2.1節

  • 最尤法は本章のセッティングではが容易に計算できるケースでないと使えない。
  • EMアルゴリズムの計算が容易であるケースでないと使えない。
  • 変分ベイズ法平均場近似できる場合にしか使えない。
  • モンテカルロEMアルゴリズムは実行速度が遅い為大きなデータ集合に対しては使えない。

例えばがニューラルネットワークにより定義されているケースでは、上述した既知の手法は使えないが、本手法であれば適用できる。後述する変分オートエンコーダーはまさにこのケースであり、をニューラルネットワークにより定義している。

変分オートエンコーダーの概要[編集]

変分オートエンコーダーとは、オートエンコーディング変分ベイズアルゴリズムを使って学習するニューラルネットワーク(原論文では1層もしくは2層のパーセプトロン#原論文:Appendix C)ベースの生成モデルである。

セッティング[編集]

変分オートエンコーダーでは、潜在変数zが従う確率密度関数が標準正規分布

...(D1)

に従っており#原論文:Appendix Bxの従う条件つき確率密度関数

、ここで ...(D2)

という形であるものとする#原論文:Appendix C.2。上ではパラメーターθを持つニューラルネットワークである。

さらに事後分布を近似する条件つき確率密度関数として

、ここで  …(E1)

という形のものを考える#原論文:Appendix C.2。上ではパラメーターを持つニューラルネットワークである。

zの次元はxの次元より短く取る。これはを用いる事で、データxをもっと短いデータzに「圧縮」し、を用いる事でzからxを「復元」できる事を意味する(ただし実際にはの後に正規乱数を取る操作があるので、「圧縮」したデータを「復元」しても元に戻らない)。このため 符号理論との類推から、エンコーダーデコーダーと呼ぶ。

アルゴリズム[編集]

変分オートエンコーダーの学習アルゴリズムは与えられたデータ集合に対し、以上のような状況下でオートエンコーディング変分ベイズアルゴリズムを用いる事で、2つのニューラルネットワークのパラメーターθを決定するものである。

一方、変分オートエンコーダーの生成アルゴリズムでは、まずは(D1)式のように標準正規分布に従いzを生成し、生成したzと学習済みのθを使って(D2)式のようにxを生成する。

オートエンコーディング変分ベイズアルゴリズムの詳細[編集]

以下、概要の章で定義した記号は説明なく用いる。

SGVB推定量[編集]

概要の章で述べたように、オートエンコーディング変分ベイズアルゴリズムで考えている変分下界

は一般には計算が簡単ではない為、SGVB推定量という、変分下界の推定量を導入する必要があった#原論文:2.3節。本節ではSGVB推定量の詳細を述べる。

仮定[編集]

SGVB推定量を導入する為、何らかの(容易に計算可能な)可微分関数と(容易にサンプルを抽出できる)確率分布を用いて

、ここで   ...(P1)

とする事で確率密度関数に従ったサンプルを抽出できる事を仮定する#原論文:2.3節

なお変分オートエンコーダーの場合は(E1)より

   ...(P2)

とすればこの仮定が満たされる事がわかる。ここで「」は成分毎の積である。

後でSGVB推定量を定義する際に仮定(P1)を使う事で、本来は確率分布で定義する部分を可微分で確定的な関数gに置き換える事でSGVB推定量の可微分性を保証する。これによりSGVB推定量を微分して勾配法によりの最適解を求める事ができるようになる。原論文ではこのように確率分布を可微分な確定的関数に置き換えるテクニックをreparameterization trickと呼んでいる#原論文:2.4節

推論量[編集]

簡単な計算により変分下界は

と書き換えられる事が示せる(ここでは期待値である)ので、仮定(P1)を用いる事での値を推定するSGVB推定量

   ...(L1)

により定義する#原論文:2.3節。ここで)は から独立に抽出した乱数であり、Lはハイパーパラメーターである。

SGVB推定量を計算するにはカルバック・ライブラー情報量を計算できる必要がある。原論文ではこの値が計算できないときの為の推定量も提案しているが#原論文:2.3節、本項では割愛する。

アルゴリズム[編集]

オートエンコーディング変分ベイズアルゴリズムは確率的勾配法によりSGVB推定量を極大化するθを求めるものである#原論文:2.3節 Algorithm 1。以下でLMはハイパーパラメーターである。

  • データ集合を入力として受け取る。
  • θを初期化する。
  • θが事前に定められた収束条件を満たすまで以下を繰り返す
    • XのサイズMの部分集合X'をランダムに選ぶ
    • に対しに従って選ぶ。
    • を使ってθを更新
  • θを出力

変分オートエンコーダーの詳細[編集]

すでに述べたように、変分オートエンコーダーの学習アルゴリズムは、からのサンプリングが(D1)、(D2)、(E1)に従ってできるケースにおいてオートエンコーディング変分ベイズアルゴリズムを実行するというものである。

従って変分オートエンコーダーの学習アルゴリズムを書きくだす上で必要となる作業は、(D1)、(D2)、(E1)に従っているケースにおいてオートエンコーディング変分ベイズアルゴリズムにおけるSGVB推定量が具体的にどのような形になるのかを調べるだけである。

SGVB推定量の具体的な形[編集]

本節では変分オートエンコーダーのケースにおいてSGVB推定量

   ...(L1、再掲)

の具体的な形を求める。

(P2)、(E1)、(D2)より、

とすると、 が正規分布の確率密度関数であることから、

  

である。ここでKxのデータ長であり、xkμ(l)D,kσ(l)D,kはそれぞれxμ(l)Dσ(l)Dの第k成分である。

一方、(L1)の第2項を具体的に計算すると以下のようになる#原論文:Appendix D

ここでJzのデータ長であり、μE,jσE,jはそれぞれμEσEの第j成分である。


まとめると、

   ...(L2)

ここで、

アルゴリズム[編集]

以上の結果から、変分オートエンコーダーは以下のようになる:

学習:

  • オートエンコーディング変分ベイズアルゴリズムを実行。ただしとし、は(L2)のものを使う。

生成:

  • 学習済みのを入力として受けとる
  • に従ってzを選ぶ
  • を計算する。
  • に従ってxを選び、xを出力する。

参考文献[編集]

関連項目[編集]