生成モデル
導入
生成モデル(Generative Model)は、データの生成過程をモデル化することで、新しいデータを生成することができるモデルである。一般的に、ある既存のデータの分布
を近似する確率モデル
を学習することが目的である。 ここで潜在変数
を考えると
と表すことができる。しかし、この計算は一般に難しいため、潜在変数モデルを学習するためのアルゴリズムが必要になる。
オートエンコーダ(AE)
そもそもオートエンコーダ(Autoencoder; AE)は、入力データを低次元の潜在表現に符号化し、そこから元の入力を再構成するニューラルネットワークである。入力を潜在変数
へ写像するEncoderと、潜在変数
から入力データを再構成するDecoderから構成される。オートエンコーダは次元圧縮や特徴抽出に広く用いられる。 標準的なオートエンコーダは潜在変数に明示的な確率モデルを置かないため、そのまま新しいデータをサンプリングする生成モデルとしては扱いにくい。
変分オートエンコーダ(VAE)
一方で、変分オートエンコーダ(Variational Autoencoder; VAE)は、潜在変数モデルと変分推論を組み合わせた生成モデルである。データ
が潜在変数
から生成される確率モデルを考えることで、新しいデータをサンプリングできるようにする。多くの実装ではEncoderは平均
と対数分散
(あるいは標準偏差
に相当する量)を出力し、潜在変数
は
という対角ガウス分布からサンプリングされる。Decoderはこの潜在変数
を入力として、データ
を生成する。
あるデータ に対してそれが生成できるようになるとは、その尤度 を最大化することである。しかし、潜在変数を用いれば
と表せるが、これを直接計算することは難しい。
事後確率 を計算しようとも
と表せるが、分母の尤度
を計算することが難しい。そのため、
を近似するような
を用意し、この二つの分布の差を最小化するように学習する。分布の差は通常、カルバック・ライブラー(Kullback-Leibler; KL)ダイバージェンスで測られる。 すなわち、
が成り立つ。私たちが知りたい尤度の対数をとった対数尤度 は、
で下から評価できる。右辺は、変分下界(Evidence Lower Bound; ELBO)と呼ばれ、
そのものではなくELBOを最大化することが学習の目的となる。深層学習では、ELBOに負の符号を付けた目的関数を最小化する。
一般的に は標準正規分布 であると仮定されることが多い。すると、 が対角ガウス分布であるとき、KL penalty項は解析的に計算できる。
ただし、
と
は
と
の要素である。また、再構成誤差(Reconstruction error)項も計算できる。
は
の各要素が独立であると仮定すると
なので、
さて、デコーダーは を入力として が であるような確率 を出力するようなモデルであるとする。これはすなわち、 がベルヌーイ分布であると仮定することになる。すると、
と表せる。これを用いると、
さて、本来ではこれを計算するには について期待値を取る必要があるが、これを実際にはモンテカルロ法でサンプリングした について、
と近似する。また、勾配法を用いて学習する際にはこのELBOの計算自体を何回も繰り返すことになるので としても十分であることが多い。 結果として、ある1サンプル についてのELBOは、
と計算できる。VAEをニューラルネットワークで実装する際には
という形でサンプリングを行う。これを再パラメータ化トリック(Reparameterization Trick)と呼ぶ。これにより、
と
を通じて
が微分可能な関数として表されるため、誤差逆伝播法を用いて学習することができるようになる。
敵対的生成ネットワーク(GAN)
敵対的生成ネットワーク(Generative Adversarial Network; GAN)は、生成モデルの一種であり、生成器と識別器という二つのニューラルネットワークが互いに競い合うことで学習するモデルである。 生成器
は、潜在変数
を入力としてデータ
を生成するモデルである。一方で、識別器
は、入力されたデータが実際のデータ分布からのサンプルであるか、生成器によって生成されたものであるかを識別するモデルである。
をデータセットの分布とする。
がデータセットに属しているかを表すラベル
は、
で定義される。すると は、入力されたデータが実際のデータセットからのサンプルである確率であると解釈できる。
これを用いると、
と表せる。 の対数尤度は、
とかける。ここで、 の集合全体でデータセットと生成されたデータの大きさが同じ 個であるとする。 を潜在変数の分布とすると、 は実際のデータセットからのサンプルであり、 は潜在変数の分布からのサンプルであるとする。すると、全体をmで割ると
これが の対数尤度である。 はこれを最大化するべきである。一方で、 は、 が生成されたデータを実際のデータと識別できないようにすることが目的であるため、 はこれを最小化するべきである。よって学習の目的は
である。しかし、
にのみ注目すると学習の目的は
であるが、学習初期の勾配飽和を避けるため、
を目的関数として使用することも多い。これを非飽和損失(Non-saturating Loss)と呼ぶ。 まとめると、それぞれの目的関数は以下のようになる。
拡散モデル
拡散モデル(Diffusion Model)は、データ生成のための確率的な生成モデルである。データ分布からノイズを段階的に加えることでデータを破壊する前向き過程(forward process)と、ノイズからデータを段階的に復元する逆過程(reverse process)から構成される。 forward processは、データ
に対して、段階
でノイズを加えることで
を生成する。通常、ガウスノイズが用いられる。段階
から
への遷移は、以下のような条件付き確率分布で表される。
ここで、 は段階 のノイズの強さを制御するスケジュールである。これはマルコフ過程であり、段階 の分布は初期データ分布からノイズを加えることで直接表される。
この条件下で、 から を復元する逆過程 は、Feller (1949) および Anderson (1982) による逆時間過程の理論に動機づけられ、Sohl-Dickstein et al. (2015) や Ho et al. (2020) では、 が十分小さいときガウス分布でパラメータ化される。正確には、逆向き過程でも同じ関数形になることが理論的背景であり、 自体は機械学習モデルとして導入される。
ここで、 は逆過程のパラメータであり、 と は、段階 のノイズの強さやデータの構造に応じて、 から を復元するための平均と共分散を出力するモデルであり、 によってパラメータ化される。実際には、これらを直接学習するわけではない。すると、尤度は
である。ここでは、 のような添え字を と表す。これの最大化が学習の目的となる。対数尤度の変分下限 を考えると
となる。ここで、前向き過程 はマルコフ過程であるので、 で となり、
である。これを代入すると
となる。 の部分は
と計算できるので
と求まる。 はガウス分布であり、
は分母が によらない定数であり、分子はどちらもガウス分布であるので はガウス分布である。つまり、 は二つのガウス分布のKLダイバージェンスである。 は を標準正規分布に固定すれば に依らない定数であり、 は復元項とよばれる。Ho et al. (2020) では、最終的に厳密な変分下界そのものではなく、簡略化したノイズ予測損失を用いて学習している。ここで、 を、 に対して を生成する前向き過程のノイズ を予測するモデルとすると、実際の損失関数 は そのものではなく
とできる。