VAEの理解に必要なベイズ学習について

自己符号化器、初めて知った当初は中間層にて入力の次元数より少ない次元数で表現し、出力層(入力と同じ次元数)で復元を行うすごいやつといったイメージがあった。入力にあえてノイズを加えて出力としてノイズを除去したものを得るデノイジング自己符号化器といったものもあった。

これらを知った時、復元できんの!!!!!!!すげえじゃん!!!!!!と感動した思い出がある。そして近頃VAEなるものを知った。(出たのは2015年頃で今更感はあるけども)

人からVAEの話を聞いた限りでは、VAEは入力されるモノがパラメータ(μ,σ)に従う正規分布によって生成されていると仮定して、そのμとσを推定できれば、入力と似たものを出力として得られる、という認識をもった。
やっぱり正規分布は便利なんだなと思いつつ、自己符号化器は復元だけではなく、入力と似たものの生成もできるのかとワクワクした。
個人的に興味を持ったので、VAEの論文を読んでみた。([1312.6114] Auto-Encoding Variational Bayes)


が・・・・駄目っ・・・・・!

自分が読んだ限り


  • 有向確率モデルとやらで事後分布を持つ潜在変数またはパラメータの近似的な推論と学習を効率的に行いたいということ

  • そのアプローチとして、変分ベイズ(variational Bayesian)を使う。これは事後分布の近似を最適化を含んでいて、その最適化に確率勾配法を用いることでより簡単に最適化が可能ということ。

  • それにより、MCMCといった計算に時間のかかる反復推論スキームを必要としないでシンプルなサンプリングからモデルのパラメータを効率よく学習、そして推論もできるようにしたということ


あとはメソッドあたりのセクションで最適化と思われる手法の数式やその説明とかがビャーっと書いてあった。わかんなかった

この論文を読んだときに、初めて変分ベイズなるものを知った。メソッドの説明に

  • 連続または離散値の変数(入力) x が連続確率変数 z を含む何らかのプロセスで生成されているとする。すなわち入力 x はある条件付き分布{ \displaystyle P_\theta{\ast} (x|z) }から生成されるということ。

  • zとパラメータ{ \displaystyle \theta }観測できない。そのためパラメータ{ \displaystyle \theta }に対する近似最大尤度または最大事後の推定を行う

生成に必要なパラメータが観測できないから、近似及び推定でパラメータを決定するということだな。そしてパラメータ{ \displaystyle \theta }をいい感じに推定できれば、それを用いて実際のデータxに似た人工データを生成できるというのが人から聞いた時の話に繋がるのかな。変数 z を正規分布に見たてるとかか?

大体読んで、変分ベイズとか全くわからん・・・何で事後分布の推定とかが出てくるんだ?と頭を抱えたがこんなことでめげる自分ではない

変分ベイズについて理解を深めればこの論文をより充実して読めるはずと思い、調べることにした。どうやらベイズ学習とはなんぞやというとこから理解をする必要があるっぽい。以下勉強中なので振り返り用のメモ

ベイズ学習という名前からベイズの定理のあの式が出てくる

{ \displaystyle p(\omega | D)p(D) = p(D,\omega ) = p(D|\omega )p(\omega) }

観測データ{ \displaystyle D }を生成するための確率的な法則、確率モデルと呼びこれを考える。確率モデルを作るのに必要なものは観測データ{ \displaystyle D }が何らかのプロセスに従って生成されるとしてその条件付き確率

{ \displaystyle p(D|\omega )}

と、そのプロセスに相当するパラメータ{ \displaystyle \omega }事前分布

{ \displaystyle p(\omega )}

この2つの組{{ \displaystyle p(D|\omega ),p(\omega) }}が必要。言い換えれば観測データはあるプロセスに依存しているとも言える。
等確率のサイコロで言えば、観測データがサイコロを降って出た目で、プロセスの部分は各サイコロの目がでる確率と考えていいかな。

問題はパラメータ{ \displaystyle \omega }観測できない状況のとき。観測できるのは上で言えばサイコロを降って出た目だけ。
ある6面のサイコロをN回降って、出た結果(観測データ)からそのサイコロの各面がでる確率を求めることができるだろうか。

これは確率で言えば、観測データが与えられたもとでのパラメータ{ \displaystyle \omega }の確率

{ \displaystyle p(\omega |D)}

に相当すると解釈できる。事後確率ともいう。これはベイズの定理を使えば
{ \displaystyle p(\omega |D) = \frac{p(D|\omega )p(\omega)}{p(D)}}

右辺を計算すれば事後確率を計算できそうだ

サイコロの各面が出る確率を求めたいのに右辺にはパラメータ{ \displaystyle \omega }に関するものが出てきている。どうするんだというと

自分で指定する

ええ・・・。例えば「多分6面サイコロだし、等確率で考えるのが無難なはず・・・」と仮説を立ててパラメータ{ \displaystyle \omega = \frac{1}{6}}と固定値を与える。
ベイズ学習ではこのようにパラメータに関する仮説、もとい事前分布{ \displaystyle p(\omega )}を自分で与えて観測データを元にその仮説を更新、尤もらしいものにしていく。観測できないパラメータを観測できるデータを元に明らかにするという認識で合っているのだろうか。

事前分布{ \displaystyle p(\omega )}については固定値を与えてあげる他に、正規分布やベータ分布などの確率分布を与えることもできる。VAEでは生成データに必要なパラメータを正規分布で与えるといった文章があった。正規分布に必要な分散パラメータはウィシャート分布から与えるといったこともできるし複雑そう

VAEで生成は画像だけと拘ってしまっていたが、二項分布またはカテゴリ分布を用いればインチキな裏表のコインや6面サイコロなど色々作れそうだ。

長くなったので多分続く