らんだむな記憶

blogというものを体験してみようか!的なー

ベイズ的な機械学習?メモ

Variational Auto-Encoder などに見られるベイズ的なもの?がよく分からないのでメモ。

変分 (Variation)

まずこれがよく分からない。パッと思いつくものを列挙しよう:

変分原理 (Variational principle)

解析力学などの見られる変分原理では与えられた函数 $L$ に対する経路 $\gamma: [0,1] \to \R^d$ を変化させて

\begin{align}
I = \int_\gamma L(x(t), \dot{x}(t), t) dt
\end{align}

なる作用積分を最小にするような経路を求めるというものだろう。 $\delta: [0,1] \to \R^d$ なる微小な経路で $\delta(0) =\delta(1) = 0$ となるものをとって、経路 $\gamma^\prime = \gamma + \delta$ に沿った経路積分との差分をとると、最小値を与えるような経路 $\gamma$ に対しては差分は 0 となる・・・とできる・・・としといて計算すると

\begin{align}
0 = \delta I &= \int_{\gamma^\prime} L(x(t), \dot{x}(t), t) dt - \int_\gamma L(x(t), \dot{x}(t), t) dt \\
& = \int_\gamma \left( L(x(t)+ \delta(t), \dot{x}(t) + \dot{\delta}(t), t) - L(x(t), \dot{x}(t), t) \right) dt \\
& = \int_\gamma \left( \frac{\del L}{\del x} \delta(t) + \frac{\del L}{\del \dot{x}} \dot{\delta}(t) \right) dt \\
& = \int_\gamma \left( \frac{\del L}{\del x} \delta(t) - \frac{d}{dt} \frac{\del L}{\del \dot{x}} \delta(t) \right) dt = \int_\gamma \left( \frac{\del L}{\del x} - \frac{d}{dt} \frac{\del L}{\del \dot{x}} \right) \delta(t) dt
\end{align}

となるが、 $\delta(\cdot)$ の任意性により Euler-Lagrange 方程式
\begin{align}
\frac{d}{dt} \frac{\del L}{\del \dot{x}} = \frac{\del L}{\del x}
\end{align}

が停留点として求まる、というものであったと思う。経路積分の変分を考えることで停留点での情報を引き出す手法だと思う。

変分自己符号化器 (Variational Auto-Encoder; VAE)

これはどう考えても解析力学の変分原理のようなものではなく、入力がある確率分布 $p(\theta)$ によって生成されると考える時、その生成器 (generator) を復号器 (decoder) と見立てる場合に、具体的なサンプルを対応する符号化器 (encoder) に通して、その確率分布を推定しましょうという問題に見える。符号化器 $\mathrm{Enc}$ と半ばその逆写像としての復号器 $\mathrm{Dec}$ がある場合に、大量のサンプル $x_j$ と 推定結果 $\hat{x}_j = \mathrm{Dec}\left(\mathrm{Enc}(x_j)\right)$ を考えた場合に、十分な精度で $\hat{x}_j \approx x_j$ であるとすれば、 $\mathrm{Enc}(x_j)$ は確率分布の推定を与えているのではないでしょうか?と。
特に、 $\mathrm{Enc}(\cdot)$ の出力について、encoder の特徴量抽出力によって取り出された「求めたい確率分布のパラメータの推定値」だとしてしまって、さらに大胆にもそれは何らかの正規分布 $\mathcal{N}(\mu, \sigma^2)$ で近似できるものとして、出力値の解釈を平均値 $\hat{\mu}$ と分散 $\hat{\sigma}^2$ とするのがよくある VAE の実装ではないだろうか。記号的には $p(\hat{\theta}) = \mathcal{N}(\hat{\mu},\hat{\sigma}^2) \sim p(\theta)$ だと考えたい的な。
こういう構造になって欲しいので、encoder が正規分布のパラメータを吐くように学習させる目的で標準正規分布との“擬距離”を計るために Kullback-Leibler 情報量を用いているのかと。(なんか全部がどんぶり勘定の集合体に見えるが、それでも結果が出るのがすごい・・・)

https://www.kspub.co.jp/download/978-4-06-153832-0.pdfによると「分布 $p(x)$ からサンプルを得ることを $x \sim p(x)$ と表記します.」とあったので適当に真似てみた。

や或いは PRML などが一番近い参考書になるだろうか。前者はベイズ推論や変分推論 (Variational Inference) の参考書でもあるらしい。

これとかも良さそうかな?
この辺の方面ではJensenの不等式 - らんだむな記憶で触れたような Jensen の不等式を用いて得られる「変分下限」という量がこの辺の理論で重要そうだ。

変分原理を支える変分法 (Calculus of Variations) は汎函数の最大化・最小化を扱う分野であり、PRML の Appendix D でも扱われている。この意味で前述の両者は恐らく根っこのほうで繋がっているものなのであろう。

深層学習 | 書籍情報 | 株式会社 講談社サイエンティフィクの「第 8 章 ボルツマンマシン」についても VAE に似たような雰囲気を感じるが(c.f. VAEの実装 - らんだむな記憶)、これについてはManning | GANs in Actionが参考になった。Generative Adversarial Networks (GANs)の p.12 を見ると VAE とボルツマンマシンは方針的にわりと近いところに見られる。

変分ベイズ法からVAEへもざっくりと書いてあって参考になりそう。