1章 生成モデル
生成モデルとは
- 生成モデルの問題設定:
- 分布 $p$ からサンプリングされた入力データ $D$ を使って $p$ に近い分布 $q_\theta$を予測する問題
- p: 未知, D: 入力, q_\theta : 求めたい
- $q_\theta$のモデル:
- 統計力学のエネルギーベースモデルを考える、エネルギー関数 $f_\theta$ と分配関数 $Z(\theta)$によって $q_\theta = \frac{f_\theta}{Z(\theta)}$と表す
- 分布の近さって?
- Kullback-Leibler divergence $D_{KL}(p||q)$ とか Jensen-Shannon divergence $D_{JS}(p||q)$ とか
- 本ではそれぞれのデメリットを言及してる(モード崩壊起こすとか)
実際に求めるには?
- 学習方法
- 尤度ベース : 尤度を最大にする $\theta$ を求める
- ex) VAE
- この本で考えるのはこっち
- 本では、エネルギーベースモデルのMLEなどを求めたりしてる
- $D_{KL}$ 使う
- 暗黙的生成ベース : サンプリング過程で確率分布を暗黙的に表現するモデル
- プロセスで良い感じにして確率分布っぽく見てみるって感じ
- ex) GAN
- $D_{JS}$ 使う
- 計算の難しさの観点: これに戦っていく
- 分配関数の計算マジでむずい、積分とかどうすんの?
- 生成する対象の次元がデカい(画像とか音声とかテキストとか)
- 計算量
- 下手すると過学習起こす
- 真の分布複雑すぎる (多峰性 とか)
- 多様体仮説
- なあ、分配関数の計算まともにやったらめちゃむずくない? → 求めたい分布から疑似的にサンプリングする仕組みを考える(サンプリング法)
- MCMC(Markov Chain Monte Carlo) 法
- ランジュバン・モンテカルロ(Langevin Monte Carlo) 法
- ランジュバン拡散 $dX_i = -\nabla E(X_i)dt + \sqrt{2}dW_t$ を離散化したもの
- $x_k$ ← $x_{k-1}+\alpha \nabla \log p(x_{k-1}) + \sqrt{2\alpha} u_k$ というプロセスを繰り返す
- $u_k \sim N(0,1)$, $\alpha$ : ステップ幅
- $\nabla \log_p(x_{k-1})$ を使って確率が高い箇所を効率的に探せる
- $\nabla \log p(x_{k-1})$ を スコア といい $s(x)$ で表す
- スコアが分かればランジュバンモンテカルロで効率的に $p$ のサンプリングを求められる
スコアマッチング
- スコアマッチング : じゃあ、スコア求めようぜって考え
- $s(x) \approx s_\theta(x)$ となるような $s_\theta = \nabla \log q_\theta$ によってスコアを求める問題を考える
- 明示的スコアマッチング(Explicit Score Matching):
- 真のスコアとモデル $s_\theta$ の二乗誤差(目的関数)を最小化すればいいだろう、この目的関数を明示的スコアマッチングという
- $J_{ESM}(\theta) = \frac{1}{2} E_{p}[\| \nabla \log p(x) - s_\theta(x) \|^2]$
- 暗黙的スコアマッチング(Implicit …) : $p$ は未知なので $s_\theta$ のみ使ったマッチングを考えるぜ
- $J_{ISM}(\theta) = E_p[\frac{1}{2}\|s_\theta(x)\|+tr(\nabla s_\theta (x))]$
- $tr(\nabla s_\theta)$ は $q_\theta$ のヘッセ行列のトレース
- これで上手くいく理論保障: $J_{ESM} = J_{ISM} + C$ (Cは定数)
- 期待値は積分で計算はむずいので、実際に最適化する式は
- $\frac{1}{N} \sum^N_{i=1} [\frac{1}{2}\|s_\theta(x^{(i)})\|+tr(\nabla s_\theta (x^{(i)}))]$
- デメリット
- 計算量デカい: ニューラルネットワークを使ってs_\thetaを求めた場合、逆誤差伝搬がO(d)かかるなら, O(d^2)
- 過学習が起きやすい: 上の式を最適化すると、各データで反応するディラックのデルタ関数が最適になる
- デノイジングスコアマッチ(Denoising …) : ISMに摂動を加えて過学習起きにくく、計算しやすくする
- 問題設定
- ノイズ $\epsilon \sim N(0, \sigma^2 I)$をデータ $x$ に加えた $\tilde{x} = x+\epsilon$ を考える
- スコアマッチングを考える際に、 摂動後分布 $p_\sigma(\tilde{x}) = \int_x p_\sigma(\tilde{x}|x)p(x) dx$ を考える
- $p_\sigma(\tilde{x}|x)$ is p.d.f of $N(x,\sigma^2 I)$