読者です 読者をやめる 読者になる 読者になる

作って遊ぶ機械学習。

~基礎的な確率モデルから最新の機械学習技術まで~

変分近似(Variational Approximation)の基本(1)

初回の記事で変分近似はけっこう重たいのですが、今後ここで頻繁に使っていこうと考えているのでとりあえずご紹介です。

変分近似(variational approximation)とは、確率分布を近似的に求める方法のひとつです*1。一般的には確率分布を求めるには正規化(積分して1になるようにする)しなければならないのですが、複雑な分布(例えば潜在変数モデルの事後分布)になってくると、どうしても解析的に積分ができなくなってしまいます。変分近似ではこのような複雑すぎて正規化できないような確率分布を、もっとシンプルな確率分布たちの積に分解する(=独立性を仮定する)ことにより近似します。分解を仮定することによって変数の依存関係を簡略化し、数値最適化でいうところの偏微分を使った勾配法と似たようなことが確率分布の推論に対しても行えるようになります。

これが使えるようになると、様々なデータサイエンスの課題に合わせて確率モデルを作り*2、自分で自由に分布推定ができるようになります。実際に、画像や音声、金融データ、生命情報、自然言語、各種センサーデータなど、現在まででほぼすべての機械学習の問題に適用されてきています。

 

[必要な知識]

下記をさらっとだけ確認しておくといいです。

  • 確率の加法定理(sum rule)と乗法定理(product rule)、ベイズの定理(Bayes' theorem)
  • KL divergence 

 

今、次のような確率モデルを考えたいと思います。

\[ p(x,z) \]

$x$は観測データで、$z$は推定したい未知の変数(欠損値やパラメータ、未来の予測値など)で、ともに多次元ベクトルってことにしておいてください。今回は連続値を取る変数を仮定しますが、離散値でもまったく同じ議論になります。

機械学習の目的はzの事後分布$p(z|x)$を下記のようにベイズの定理を用いて推定することです。

\[ p(z|x) = \frac{p(x|z)p(z)}{p(x)} = \frac{p(x|z)p(z)}{\int p(x,z) dz} \tag{1} \]

例えば普通に$x$と$z$がともにガウス分布に従うようなモデルでは、式(1)の分母の積分が公式を使えば簡単に行えるので、事後分布は普通に手計算で一発で解けます。これを解析的に解けるとか、closed formで解けるとかって言います。

ただし、今回はこれがどうしてもできないと仮定します。つまり式(1)の積分計算がめちゃくちゃ複雑で、解析解が得られない状態にあるとします。

 

こういうときに登場するのが変分近似のような近似推論法です。事後分布を次のような別の関数形で近似します。

\[ p(z|x) \approx q(z) \]

$q(z)$の具体的な関数(ガウス分布だとか)は仮定していないことに注意してください。

今やりたいことは、$q(z)$が$p(z|x)$と、なるべく「似る」ようにしたいということです。

2つの確率分布がどれだけ「似ていないか」を表す指標の1つとして、KL divergenceがあります。例えば、混乱を避けるために確率変数$w$を一時的に使うと、確率分布$p(w)$と$q(w)$の間の(q(w)から見た*3)KL divergenceは

\[ KL(q(w)||p(w)) = - \int q(w) \ln \frac{p(w)}{q(w)} dw \]

のように定義されます。$q(w)=p(w)$が成り立つときこの式は0になります。

今回は二つの確率分布$p(z|x)$と$q(z)$をなるべく「似せ」たいので、この2つの確率分布の間のKL divergenceを最小化することにより目的を達成したいと思います。つまり、

\[ KL(q(z)||p(z|x)) = - \int q(z) \ln \frac{p(z|x)}{q(z)} dz \]

を最小にするような$q(z)$を求めることが目標になります。

 

しかしここで疑問が残ります。

$p(z|x)$は、積分こそできないものの、確かに何らかの形状が存在するような確率分布です。しかし最初の仮定の通り、この分布は直接手計算をして求めることはできない。直接計算できない分布と、近似分布$q(z)$の間の距離を、いったいどうやって縮めるのか?

 

ちょっと長くなったのでここでいったん切ります。

[続き・関連]

変分近似(Variational Approximation)の基本(2) - 作って遊ぶ機械学習。

*1:他にも、変分推論(variational inference)とかただ単に変分法(variational method)とかって呼んだりもします。ベイズモデルであることを強調する場合には、変分ベイズ(variational Bayes)と呼ぶこともあります。

*2:確率モデルの作り方に関してはグラフィカルモデルの記事をご参考ください。

http://machine-learning.hatenablog.com/entry/2016/02/10/184755

*3:一般に$KL(q||p)$と$KL(p||q)$は一致しません。