😺

生成モデル:概要

2024/08/11に公開

はじめに

本記事は、最近生成モデルについて勉強している私が、自分の理解をアウトプットする場として作成したものです。せっかく世に公開するからには単なる個人的メモではなく、人が読んでわかるように書きたいと考えています。
具体的には、これから生成モデルについて勉強しようと考えている方が読んで意味のある記事を目指して書いています。
生成モデルに関する解説記事は、既に数多くありますが、私なりの理解の方法が他の誰かの学習の一助となれば幸いです。

本記事の目的

本記事では、生成モデル*へのイントロダクションとして、一般論について簡単に紹介します。
生成モデルには様々なモデルがありますが、ここではメジャーなモデルに(ある程度)共通する考え方を説明します。
後続の記事にて、以下の具体的なモデルの詳細を解説したいと考えており、本記事はその前段にあたります。

  • VAE(Variational AutoEncoder)
  • 拡散モデル
  • Flowベースモデル

*注) 本記事では、ひとまず言語モデルは対象外とします。

生成モデルとは?

生成モデルとは、「あるドメインのデータの分布をうまく表現したモデル(確率分布)で、その分布に従ってデータのサンプリングが容易なもの」と私は理解しています。
様々なモデルが存在しますが、個々のモデルは以下の3要素を意識して整理すると見通しが良くなります。

【生成モデルを理解するための3要素】

  1. 確率分布族p_\thetaの表現方法
    • どの範囲から真の分布に近い分布を探すか?
  2. 学習方法
    • 良い\thetaの定義、およびその求め方
  3. サンプリング方法
    • 最適な\theta=\theta^*において、p_{\theta^*}からデータを生成する方法

本記事の目的でも述べた通り、後続の記事では下記の3モデルの解説を行いたいと考えています。その際には、ここで述べた観点に従って整理を行う予定です。

  • VAE(Variational AutoEncoder)
  • 拡散モデル
  • Flowベースモデル

生成モデルでよく使われる考え方

本項目では、今後紹介予定のモデルに(ある程度)共通する考え方を紹介します。

1. 確率分布族p_\thetaの表現方法

上記3モデルはいずれも、扱いやすい分布(正規分布であることが多い)を何らかの方法で変換することで分布を表現します。この変換に\theta\in\Thetaというパラメータを含ませておくことで、分布族\{p_\theta\}_{\theta\in\Theta}を得ます(下図のイメージ)。
具体的な実現方法は各モデルによって異なるので、「変換」という曖昧な表現を採用ました。
確率分布の表現方法
例えば、確率分布を考える空間上の可逆な写像を考えたり(Flowベースモデル)、確率的な変動を何ステップも加えていく(拡散モデル)などの方法があります。

2. 学習方法

基本的には最尤推定によって\thetaを求めます。つまり、観測データがD=\{x^{(1)},x^{(2)},\cdots,x^{(N)}\}と得られた場合、

\theta^*\equiv\argmax_{\theta\in\Theta}\sum_{n=1}^N\log p_\theta(x^{(n)})

を望ましい値と設定します。ただし、実際には上記の最適解を求めることは困難であり、代替手段を考える必要があります。ここでは対数尤度の代表的な代替物として、ELBOについて触れておきます。
式をシンプルにするため、以下データは1点xのみとします。
また、1つ仮定を設けます。今扱うモデルは潜在変数z\mathbb{R}^Hに値をとるとします)と同時分布p_\theta(x,z)を持ち、

p_\theta(x)=\int_{\mathbb{R}^H}p_\theta(x,z)dz

と表されるとします(VAE、拡散モデルはこのパターンに該当)。一般に、p_\theta(x,z)は解析的に扱いやすい分布に設定します。この仮定の下では、\mathbb{R}^H上の任意の分布q(z)に対して以下が成り立ちます(正確には任意の分布ではなく、zに関して、サポートがp_\theta(x,z)よりも広い必要があります):

\begin{align*} \log p_\theta(x)&=\log\int_{\mathbb{R}^H}p_\theta(x,z)dz \\ &=\log\int_{\mathbb{R}^H}p_\theta(x,z)\frac{q(z)}{q(z)}dz \\ &\ge\int_{\mathbb{R}^H}q(z)\log\frac{p_\theta(x,z)}{q(z)}dz. \end{align*}

最右辺はELBO(Evidence Lower BOund)と呼ばれ、対数尤度の代わりにこの値を最大化するようにモデルを学習させる場合があります(対数尤度は常にELBOよりは大きいので、ELBOを最大にするような\thetaは対数尤度に対してもそう悪くないものであろう、という発想だと思っています)
※ちなみに、最後の式変形ではJensenの不等式を用いました。

Jensenの不等式

Xを、確率分布Pに従う\mathbb{R}^D上の確率変数、f:\mathbb{R}^D\to\mathbb{R}を凸関数とする(すなわち、f(\lambda x+(1-\lambda)y)\le\lambda f(x)+(1-\lambda)f(y) for ^{\forall}\lambda\in[0,1], ^{\forall}x,y\in\mathbb{R}^D)。
この時、

f(\mathbb{E}_P[X])\le\mathbb{E}_P[f(X)]

が成立する(ここで、\mathbb{E}_Pは確率Pに関する期待値)。

3. サンプリング方法

1では確率分布を単純な分布に何らかの変換を施すことによって複雑な分布を表現する方法を紹介しましたが、サンプリングの方法もまさにそのステップ通りです。
元となる分布に従い1つデータx_0を生成します(これは容易)。それに対して、2で求めた最適な\theta^*で定まる変換を施してデータxを得ます(下図のイメージ)。このようにして得られるxは分布p_{\theta^*}に従います。
サンプリングイメージ
※変換はモデルによって決定的であったり、確率的であったりします。

まとめ

本記事では、生成モデルとは何かを概観し、代表的なモデルに共通するアイデアをいくつか紹介しました。今後、具体的なモデルの解説記事も執筆する予定です。

最後に、本記事を作成する際に参考にした資料です。

Discussion