StatModeling Memorandum

StatModeling Memorandum

StanとRとPythonでベイズ統計モデリングします. たまに書評.

変分法をごまかさずに変分ベイズの説明をする

StanでADVIが使えるようになったので、変分ベイズの基礎は抑えておきたいなぁと思って最近学んでいました。自分向けのメモとして残します。

対数周辺尤度・変分下限・KL情報量

目的は事後分布f:id:StatModeling:20201114170400p:plainの最もよい近似となるf:id:StatModeling:20201114170003p:plainを求めることです。f:id:StatModeling:20201114170003p:plainにはあとで因子分解可能f:id:StatModeling:20201114165645p:plainという条件を入れます。

エンセンの不等式を使って、対数周辺尤度f:id:StatModeling:20201114165649p:plainを下から評価すると、

f:id:StatModeling:20201114165653p:plain

f:id:StatModeling:20201114165657p:plain

f:id:StatModeling:20201114165701p:plain

f:id:StatModeling:20201114165704p:plainを変分下限と呼びます。任意の関数f:id:StatModeling:20201114170003p:plainの関数です。対数周辺尤度はevidenceとも呼ばれるため、変分下限はevidence lower bound、略してELBOとも呼ばれます。対数周辺尤度と変分下限の差は、

f:id:StatModeling:20201114165709p:plain

f:id:StatModeling:20201114165712p:plain

f:id:StatModeling:20201114165716p:plain

となります。これはf:id:StatModeling:20201114170003p:plainと事後分布f:id:StatModeling:20201114170400p:plainのKL情報量(Kullback-Leiblerdivergence)です。対数周辺尤度がf:id:StatModeling:20201114165720p:plainにはよらない、データf:id:StatModeling:20201114165724p:plainのみから決まる定数であることを考えると、事後分布の最もよい近似となるf:id:StatModeling:20201114170003p:plainを求めることは、変分下限を最大化することに等価になります。そのため、変分下限の最大化を目指します。ただし、f:id:StatModeling:20201114170003p:plainは分布で積分すると1になる制約条件があるのでラグランジュの未定乗数法を使って、

f:id:StatModeling:20201114165727p:plain (1)

を最大化すればOKです。以降では表記を簡潔にするためf:id:StatModeling:20201114165732p:plainと書きます。

変分法

(1)式に限らず、f:id:StatModeling:20201114170003p:plainで値が決まるある関数f:id:StatModeling:20201114165736p:plainがあって、f:id:StatModeling:20201114165739p:plainf:id:StatModeling:20201114165736p:plainの最大値を与えるとします。f:id:StatModeling:20201114165739p:plainから少しずれたf:id:StatModeling:20201114165744p:plain f:id:StatModeling:20201114165747p:plainの時のf:id:StatModeling:20201114165736p:plainf:id:StatModeling:20201114165752p:plainとすると以下が成り立ちます。

f:id:StatModeling:20201114165756p:plain

これから導かれる必要条件は、

f:id:StatModeling:20201114165801p:plain

と展開した時、

f:id:StatModeling:20201114165805p:plain

となることです。この左辺f:id:StatModeling:20201114165809p:plain汎関数f:id:StatModeling:20201114165814p:plainの変分と呼び、以下で定義します。

f:id:StatModeling:20201114165817p:plain

次に、

f:id:StatModeling:20201114165822p:plain

と表せる時を考えます。簡潔さを重視して以下のように表記します。

f:id:StatModeling:20201114165825p:plain

それでは変分を求めます。

f:id:StatModeling:20201114165829p:plain

であることを考慮すると、

f:id:StatModeling:20201114165833p:plain

f:id:StatModeling:20201114165836p:plain

f:id:StatModeling:20201114165840p:plain

f:id:StatModeling:20201114165843p:plain

となるので、

f:id:StatModeling:20201114165847p:plain

となるためには以下が成り立たなくてはいけません。

f:id:StatModeling:20201114165851p:plain  (2)

 

変分ベイズ(2パラメータの場合)

f:id:StatModeling:20201114165854p:plainと因子分解できるf:id:StatModeling:20201114170003p:plainの中で、(1)式を最大化するf:id:StatModeling:20201114165950p:plainを考えます。いま(1)式は以下です。

f:id:StatModeling:20201114165903p:plain

f:id:StatModeling:20201114165907p:plain

ここで、

f:id:StatModeling:20201114165912p:plain

f:id:StatModeling:20201114165915p:plain

と置くと、

f:id:StatModeling:20201114165822p:plain

の形になるので(2)式を満たさなくてはいけません。

f:id:StatModeling:20201114165920p:plain

f:id:StatModeling:20201114165925p:plain

ここで、f:id:StatModeling:20201114165928p:plainf:id:StatModeling:20201114165932p:plainに依存しないので、定数とみなすと、

f:id:StatModeling:20201114165935p:plain

となります。同様に(2)式の残りの式からは、以下が導かれます。

f:id:StatModeling:20201114165939p:plain

実装においては、f:id:StatModeling:20201114165942p:plainの初期分布を決める→f:id:StatModeling:20201114165945p:plainを求める→f:id:StatModeling:20201114165942p:plainを求める→f:id:StatModeling:20201114165945p:plainを求める→…という具合に変分下限がこれ以上上がらないところまで繰り返します。その結果が知りたかったf:id:StatModeling:20201114165950p:plainになります。うまく共役な分布を使うことができればf:id:StatModeling:20201114165953p:plainf:id:StatModeling:20201114165957p:plainの分布の形が決まるので正規化定数を求める手間がなく、簡潔で高速な実装が可能です。しかし、一般には数値積分をして正規化定数を求める必要があると思います。

2018.4.1追記

上記の式に従ってSymPyで簡単な例題を扱う記事を書きました。 statmodeling.hatenablog.com

参考文献

以下の文献はどれもためになるのですが途中からかなり難解です。[4],[5]では変分法の部分は「変数とみて微分すればよい」という、はしょった書き方になっていてよく分かりませんでした。

2016/4月に発行される予定である、[6]には期待しています。「こんなモデルの場合だとうまくいかない」「データに対してこういう変換を前もってすれば、近似がよくなる」などのノウハウがあるといいなぁと思っています。

  • [1] Ormerod, J.T. and Wand, M.P. (2010) Explaining variational approximations. The American Statistician, 64, 140-153 [pdf]
  • [2] David M. Blei, Alp Kucukelbir, Jon D. McAuliffe (2016) Variational Inference: A Review for Statisticians. arXiv:1601.00670 [stat.CO] [URL]
  • [3] C.M. ビショップ (2012) パターン認識機械学習
  • [4] 佐藤一誠 (2015) トピックモデルによる統計的潜在意味解析
  • [5] 岩田具治 (2015) トピックモデル
  • [6] 中島伸一 (2016) 変分ベイズ学習

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ)

  • 作者:佐藤一誠
  • 発売日: 2015/03/13
  • メディア: 単行本(ソフトカバー)