Variational Inference with Normalizing Flowsを読んだのでメモ
はじめに
Variational Inference with Normalizing Flowsを読んだのでメモ.OpenAIからでたGlowという生成モデルの論文が話題になっていて面白そうだったので関連知識を一から勉強してみる.まず手始めにnormalizing flowを使った変分推論について.
Variational Inference
この論文で問題としているのは生成モデルにおいて変分推定を適用するときに,近似事後分布の表現力が低いというもの.より良い近似を使えば強い生成モデルが作れるはずなのでその方法としてNormalizing Flowを使った変分推定を提案しますとのこと.
変分推定は以下のようにJensenの不等式を使って変分下限(または変分下界)を求め,それを最大化しようというもの.
ここでは観測値では潜在変数.はモデルのパラメータを表し,は近似事後分布を表す.近似事後分布は因子分解可能であることなどを仮定して解析的に扱いやすくしているため,元の分布を完全に表現することは不可能である.一応,近似事後分布にすることでの表現力の低下以外の問題として第2項目の勾配の計算コストが高いことも問題としてあげられる(VAEのreparameterizationはそこをうまく扱ったもの).
Deep Latent Gaussian Models(DLGM)
Deep Neural Networksにおいて各層が潜在変数を出力するとする.ここでは番目の層に対応する潜在変数.このとき各々の潜在変数は自分の上位の層以外とは独立と仮定している.層の数をとするとDLGMにおける同時分布は各潜在変数の独立性より
と表される.各々の潜在変数は事前分布として標準ガウス分布が仮定されている.DLGMはDeepな分表現力は高いが,結局は分散が対角成分しかないような単純化されたガウス分布を用いるため真の分布を表現するには無理がある.
Normalizing flow
Normalizing flowは近似事後分布の作り方の一つで表現力の高い近似事後分布を与えることができる.イメージとしては確率分布の変数変換を繰り返し用いることで単純な分布を複雑な分布へと変換できるというもの.
まず,確率変数の変数変換として基本的な規則について.逆変換を持つ連続な写像を考える.分布を持つ確率変数に対し変換を行った確率変数を考える.このとき,に対する確率密度をとすると
と与えられる.詳しいことは「確率密度 変数変換」などでググるとたくさん出てくるので割愛.一応こちらのブログはnormalizing flowの内容含めわかりやすい.
ここで関数がのように個の関数の合成関数になっていると考える.すると上記の変数変換を繰り返し用いれば,
となる.最後の等式は逆関数定理から成り立つ.さらにこれの対数をとると
となる.ただし関数の引数を省略したことに注意.また論文ではではなくとなっていたが,本質的には変わらないはずなのでここではを使って表現する. ここで注目すべきはを計算するのにしか必要がないこと.これによって適当な関数のに関する期待値の計算ものように行うことが可能.
初期の分布は従来通りindependent Gaussianなど使っても,DLGMと違い各潜在変数は何か分布を仮定しているわけではないので表現力が高く,かつを使って計算できるため解析的に扱いやすいという利点がある.
上記では有限のフローを扱ったが,有限があれば無限も考えたくなるのが性というもの.ただし,以下の内容は前提知識が足りず理解しきれていないのでほぼ論文の和訳メモになっていることに注意.
まずLangevin Flow(ランジュバンフロー)について.Langevin Flowでは以下のランジュバン方程式(Langevin stochastic differential equation)によって確率変数が記述される.
ここでは,で与えられるWiener過程,はドリフトベクトルでは拡散行列を表す.ここで初期の分布がである確率変数が上記の方程式により変化していく場合,密度分布の変化の規則はFokker-Planck方程式で与えられる.すなわち,
として変化を記述できる.機械学習の文脈では,としたLangevin flowを用いる.ただし,は正規化されていないモデルの対数密度関数. 重要なこととして,定常状態における解はボルツマン分布になることが知られている.つまり,適当な分布を持つ確率変数をLangevin flowで変換していくと最終的にはとなる. ボルツマンマシンが任意の分布を近似可能だったことを思い出せばnormalizing flowも任意の分布を近似可能と言える(のかな?).
Inference with Normalizing Flows
ここでは有限のnormalizing flowを用いた推定について考える.基本的には変数変換における関数は逆変換可能なものかつヤコビアンンが効率的に計算できるものでなければならない.そこで以下のような変換を考える.
ここで,は学習パラメータで,はsmoothでelement-wiseな非線形関数.上記の変換はヤコビアンの項を時間で計算ができる.具体的には非線形関数の導関数をとすると,右辺第二項目のに関する微分は
とかけるので,行列式は
と計算可能.よって計算コストのオーダーがになる.
上記で定義された変換を,元の有限なnormalizing flowの式に当てはめれば,
が導かれる.このflowはで与えられる超平面に垂直な方向での収縮と拡大を与えており,それにより初期密度を変化させると考えられる.そのためこれをplanar flowと定義する.
また別なアプローチとして,初期密度を確率変数周りで変化させるような変換群を考える.そのような変換群は
として考えられる.ただし,,とし,パラメータとして.この群による変換もまた線形時間で行列式を計算可能である.このflowは放射状の(radial)収縮と拡大を与えるのでradial flowと定義する.planer flowとradial flowで球面ガウス分布を変換した例が論文のFigure 1.より複雑な分布になっていることがわかる.
ここで注意としてplaner flow,radial flowの全てが逆変換可能な関数になっているわけではなく,一定の条件下のみで逆変換可能となる.詳細なことはAppendixに.
ここで変分推定における目的関数にnormalizing flowを適用すると,
となる.4行目はnormalizing flowではの期待値がの期待値でかけることを利用しており,最後の行はplaner flowを代入した.
この論文ではVAEと同様にニューラルネットを使ったモデルを使っている.encoderとdecoderの間で関数を適用していて,の数を変えて実験を行なっている.NICEと比較した結果の可視化が論文のFigure 3(a)(b)(c).提案手法の方が真の分布をうまく表現できていることが分かる.
ちなみに学習に関して最終的な変分下限の式にはという式が現れているが,目的関数としてはで分かれるはず.はtable 1の分布を使ったと書いてあって,どちらも勾配は元のVAEと同様モンテカルロ推定で計算する.あと目的関数の項には温度パラメータを係数としてかけてとしてアニーリングしていくらしい.
まとめ
Normalizing flow非常に賢いなという思い.とりあえずGLOWの元になっていてこの論文でも比較に使われていたNICEを次は読む.