変分近似アルゴリズム
//
変分近似アルゴリズムは,ベイズモデルの事後分布を近似的に求める手段の一つです.今回の記事では,変分近似アルゴリズムの導出についてまとめ,また実際に線形回帰モデルに適用してみたいと思います.
目次
変分近似アルゴリズム
をハイパーパラメーターにもつ確率モデルを考える.[tex :x]に従うサンプルに対する同時事後分布を求めたい.同時事後分布の確率密度関数は「Kullback-Leibler情報量
を最小化する分布」と特徴づけられます.そこで,Kullback-Leibler情報量をなるべく小さくするを見つける方法の一つに変分近似アルゴリズムがあります.以下その導出を行います.
まず,として次の形で書けるものを考えます.
このテクニックは,平均場近似と呼ばれるものです.このような形で書けるのうちでを最小化するを見つけるため変分法を利用します.
を考えます(はLagrangeの未定係数).に関する変分をとるため,次のように書き直す;
,
ただし
Euler-Lagrange方程式より,
整理して,
となる(はに無関係な定数).
よって次のことがわかります.
方程式eq2が解析的に解けない場合,反復アルゴリズムにより,近似的にを求める.例えば,のときでは次のようになる
(変分近似アルゴリズム)
Step1.分布を適当に設定する.
以下Step2,Step3を十分に繰り返して(の推移などで判断),適当なところで打ち切る.
Step2.以下の式によりを更新する.
(ここでは正規化定数とする.)
Step3.以下の式によりを更新する.
(ここでは正規化定数とする.)
2.線形回帰モデルの場合
このセクションでは,線形回帰モデルを例に変分近似アルゴリズムを導出し,実際にその威力を見てみましょう.考えたいモデルは次のモデルです
ここで,をそれぞれ応答変数,および説明変数,または平均,分散の正規分布とします.さらに,パラメータについて次の事前分布を仮定します
ただしここで,はガンマ分布,つまり次で確率密度が与えられる上の分布です
をモデルeq7に従う独立なサンプルとして,変分近似アルゴリズムを導出します.
アルゴリズムの導出
記号:
とおく.また,確率変数に対して
は,期待値を表す.
更新後のの分布を,とすれば,
となる.ただしと無関係な定数を無視して計算している.ここで,との分布が次で与えられるとしよう.
.
するとの更新後の分布は次のように表すことができる
,ただし.
更新後のの分布をとすれば,
となる.ここで,と無関係な定数を無視して計算している.ここで,との分布が次で与えられるとしよう.
.
するとの更新後の分布は次のように表すことができる
,ただし.
更新後のの分布を,とすれば,
となる.ただし,と無関係な定数を無視して計算している.ここでおよびの分布が次で与えられるとしよう.
,
.
するとの更新後の分布は次のように表すことができる
以上で線形回帰モデルの変分近似アルゴリズムが求まった.
Pythonで実装
実装しました.
実際に走らせてみる.
線形モデル
から20個のサンプルを生成し(test_data.csv),10回反復を行った場合の結果,の事後平均値が次である.
また,事後分布のプロットは次のようになった.
参考文献
次の本を参考にしています.