#TokyoWebmining

      Infer.NET でグラフィカルモデルを計算する
   C. M. Bishop: “Pattern Recognition and Machine Learning”, Springer (2006)
  “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)”, Microsoft
                                   の内容紹介


                               Twitter: @wk77




#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                         p. 1
なぜグラフィカルモデルを計算するのか
 • 現代的な手法によって機械学習を実現するには、
   現実の現象を確率を用いて表現することが有用である
    -   観測データから、それを生成する真の確率分布を推論する
    -   分類、予測、回帰といったどのような複雑なタスクでも、
        確率モデルによって表現されている限り、確率の計算、
        すなわち和と積の適用の繰返しで計算できる
 • 確率的グラフィカルモデルによる表現
    -   学習のタスクや観測データの確率モデルを、図で表現する
    -   シンプルな記述なので、確率変数間の関係が理解しやすく
        新しい確率モデルの設計も容易となる
    -   変分近似(後述)でも役立つ、条件つき独立性という性質を、
        グラフの構造自体を精査するだけで得ることができる

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 2
ある同時分布を様々なグラフにより表現する

  A             B     A           B     A            B   A             B



          C                 C                 C               C



  D             E     D           E     D            E   D             E

      有向グラフ               無向グラフ             因子グラフ         ハイパグラフ
      -   有向グラフ:条件つき分布の積による表現を意識し、対応関係を矢印で表す
           • p(A, B, C, D, E) = p(A) p(B) p(C|A, B) p(D|C) p(E|C)
      -   無向グラフ:独立でない確率変数同士をエッジで結合したもの
           • p(A, B, C, D, E) = p(A, B, C) p(C, D) p(C, E)
      -   因子グラフ:因子(■で記述)への分解を表現する。様々な分解がありうる
           • p(A, B, C, D, E) = f(A) f(B) f(A, B, C) f(C, D) f(C, E)
      -   ハイパグラフ:結合分布部分をハイパエッジで表現する。確率伝搬法で有用
           • p(A, B, C, D, E) = f(A, B, C) f(C, D) f(C, E)

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                     p. 3
ベイズの定理と推論
 • 事前分布 p(A) と条件つき分布 p(B|A) が既知のとき
   観測データ B=b' から事後分布 p(A|B=b') を推論する
     -   p(A)を、教授が御機嫌(A=1)か不機嫌(A=0)かの事前分布とする
     -   p(B|A) を、教授の機嫌が決定した(条件づけ)ときの、
         秘書が御機嫌(B=1)か不機嫌(B=0)かの条件つき分布とする
          • 同時分布 p(A,B) = p(B|A)p(A) や
            周辺分布 p(B) = p(A=1,B) + p(A=0,B) も既知となる
     -   秘書の機嫌を観測することで (B=b')、
         教授の機嫌の事後分布 p(A|B=b') を推論できる
          • 秘書が御機嫌と観測されたとき、教授が御機嫌な確率は
            p(A=1|B=1) = p(B=1|A=1)p(A=1) / p(B=1)
     -   B が特定の値 b' でなく分布 p(B) であれば p(A|B) が求まる
          • p(A|B) = p(B|A)p(A) / p(B) (p(A)とp(A|B)は別物!)
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 4
ベイズの定理とグラフィカルモデル
   A            B    p(A, B)=p(A)p(B|A) と分解可能である
       -   A, B は確率変数で、p(A), p(B|A), p(A, B) の存在を表現する
       -   p(A) と p(B|A) は任意の関数であり、未知でも良いが、
           事前分布 p(A) と尤度関数 p(B|A) を与えれば p(A, B) も求まる
       -   p(A, B) が周辺化できれば p(A) や p(B) も求まる
   A            B    p(A)p(B|A) で A が観測される
       -   A=a' と観測 → p(A=a', B)=p(A=a')p(B|A=a')
       -   A による条件づけ p(A=a', B)/p(A=a')=p(B|A=a') を表現する
   A            B    p(A)p(B|A) で B が観測される
       -   B=b' と観測 → p(A), p(B|A) が既知なら、ベイズの定理で
           事後分布 p(A|B=b') を推論でき、矢印反転して次のグラフになる
   A            B    p(A|B)p(B) で B が観測される
       -   B=b' と観測 → p(A, B=b')/p(B=b')=p(A|B=b') で整合性がある

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77     p. 5
ベイズ多項式回帰をグラフで表現する(1)
 • 目的変数 t を多項式 y(x, w) = ∑j wj xj で回帰する
       -   p(t, w) = p(w) Πn p(tn|y(xn, w)) w:パラメータ x:入力変数
                                            w
                                                                tn                w

                               t1                          tN         N
           PRML本 fig 1.3                                        プレートによる表現

       -   ハイパパラメータ α, β と入力変数 xn を追記する

                      xn            α
                                                -   p(t, w|x, α, β) =
                                                       p(w|α) Πn p(tn|w, xn, β)
                                                -   p(w|α) = N(w|0, α-1I)
                 tn                     w
   β                                            -   p(tn|w, xn, β) =
                           N                          N(tn|y(xn, w), β-1)
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                                    p. 6
ベイズ多項式回帰をグラフで表現する(2)
 • 事後分布 p(w|t) を推論し、最大確率となる w を決定する
       -   最大事後確率推定(MAP 推定)と呼ぶ

  tn             w
                     事前分布 p(w) と尤度関数 Πn p(tn|w) は既知
                      p(t, w) = p(w) Πn p(tn|w)
           N


  tn             w
                     tn で条件づけると事後分布 p(w|t) が求まる
                      p(w|t) ∝ p(w) Πn p(tn|w)
           N

       -   入力 xn は固定。最も尤もらしく t を表す w を最適化計算
       -   対数尤度関数 ln Πn p(tn|w) = Σn ln N(tn|y(xn, w), β-1)
            • w で微分すれば w が求まる
            • w を固定して β で微分すれば β の点推定となる
       -   事前分布 p(w|α) の対数を加え最適化すれば正則化も可能
           α は固定。データ数 n が増えると ln p(w|α) は相対的に小さくなる
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77            p. 7
予測分布を表現するグラフィカルモデル(1)
 • 学習が完了して w と β を推定したところで、
   新たな入力 x が与えられたときに、
   その未知の目標値 t を分布 p(t) として予測したい
    -   p(t|w, x, β) は p(t|w, x, β) と同じ分布なので、
        予測分布のグラフィカルモデルは左下図となる
    -   α, β 固定で単純化し、ベイズの定理を反映したのが右下図
                 xn       α                  xn



        tn                    w         tn            w


                      N                           N


                                  x                       x
             β                t                       t
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77            p. 8
予測分布を表現するグラフィカルモデル(2)
 • 前ページの右下図と同じグラフ
                  tn               w          t
          xn                                         x
                        N

    -   p(t|x, w)p(w|x, t) となっていることがわかる
 • 求めたい予測分布は、上記で w を周辺化したもの
        p(t|x, x, t) = ∫ p(t|x, w) p(w|x, t) dw
 • 先に述べた結果から、ベイズの定理によって
        p(t, w|x) = p(w) Πn p(tn|w, xn)
        ∴ p(w|x, t) ∝ p(w) Πn p(tn|w, xn)
 • したがって予測分布は、次の式で与えられる
        p(t|x, x, t) ∝ ∫ p(t|x, w) p(w) Πn p(tn|w, xn) dw

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77          p. 9
ナイーブベイズによる分類
 • ナイーブベイズは、クラス分類のための一手法である
    -   観測変数は D 次元ベクトルで、観測値 x を
        K 個のクラスのうちの一つに対応させるとする
    -   クラスに関する複数の項目が、独立に得られると仮定する
          p(x1, x2|Ck) = p(x1|Ck)p(x2|Ck)
    -   x1 は離散変数、x2 は連続変数というように、
        p(x1|Ck) と p(x2|Ck) のモデルが異なる種類のものでも良い
    -   x1 と x2 の両方のデータが得られたときの事後確率は
         xi
                              p(Ck|x1, x2) ∝ p(x1, x2|Ck)p(Ck)
                          z
                                  ∝ p(x1|Ck)p(x2|Ck)p(Ck)
                D                 ∝ p(Ck|x1)p(Ck|x2) / p(Ck)
    -   事前確率 p(Ck) は、各クラスに含まれる
        データ点の個数から容易に推定可能
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77               p. 10
条件つき独立性
 • 3変数 a, b, c についての条件つき独立性
    -   c で条件づけられた a が、b と独立であると仮定する
           p(a|b,c) = p(a|c)
    -   このとき、c で条件づけられた a と b の同時分布は、
           p(a, b|c) = p(a|b, c)p(b|c) = p(a|c)p(b|c)
        となり、a の周辺分布と b の周辺分布の積に分解できる
    -   このことを a || b | c と表す
    -   c がどのような値でも、a と b が独立となることが重要
 • 「条件つき独立性の概念は重要である」(PRML 8.2)
    -   パターン認識に用いる確率モデルを簡略化したり、
        推論や学習に必要な計算を効率化する際に重要
    -   変分ベイズ法や期待値伝搬法における近似の根拠
    -   条件つき独立性がグラフの形から判定できることが利点
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77      p. 11
3つのグラフについて条件つき独立性を考える
 • c が未観測: p(a,b)=Σc p(a,b,c)=p(a)p(b) なら独立
 • c が観測: p(a,b|c)=p(a|c)p(b|c) なら条件つき独立
 • tail-to-tail          a
                                 c
                                          b      a
                                                     c
                                                         b

    -   p(a,b)= Σc p(a|c)p(b|c)p(c)≠p(a)p(b) 独立でない
    -   p(a,b|c)=p(a,b,c)/p(c)=p(a|c)p(b|c) 条件つき独立
 • head-to-tail          a       c        b      a   c   b

    -   p(a,b)=p(a) Σc p(c|a)p(b|c)=p(a)p(b|a) 独立でない
    -   p(a,b|c)=p(a)p(c|a)p(b|c)/p(c)=p(a|c)p(b|c) 条件つき独立

 • head-to-head          a
                                 c
                                          b      a
                                                     c
                                                         b

    -   p(a,b)= Σc p(a)p(b)p(c|a,b)=p(a)p(b) 独立
    -   p(a,b|c)=p(a)p(b)p(c|a,b)/p(c)≠p(a|c)p(b|c) 条件つき独立でない
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77           p. 12
有向分離性(d-separation)
 • tail-to-tail や head-to-tail となるノード c について
   未観測時は独立でなく、観測時は条件つき独立となる
    -   c の観測により、a と b を結ぶ経路が遮断されると言う
 • head-to-head であるノード c か                           a       b
                                                         c
   c の子孫のノードが観測されると、
   a と b は独立ではなくなる                                       d

    -   左図の例では p(a,b|d) ≠ p(a|d)p(b|d) となる
    -   観測により、a と b の遮断が解かれると言う
 • 重複しない、ノードの部分集合 A, B, C について、
   A と B を結ぶ全ての経路が C で遮断 → A || B | C
    -   パラメータや訓練データ入力値など、小さな円のノードは
        観測済みノードと同様の振る舞いをし、影響を与えない
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77               p. 13
有向分離性の性質
 • 1変数ガウス分布で平均の事後分布を求める
     μ              • μ が与えられたとき、観測値は独立
                     -   p(D|μ) = Πn p(xn|μ)
                     -   xi→μ→xj(≠i) の経路は tail-to-tail
     xn             • μ を潜在変数とみなし周辺化→観測値は非独立
           N
                     -   p(D) = ∫p(D|μ)p(μ)dμ ≠ Πn p(xn)
 • ベイズ線形回帰の予測分布について考える
                         tn           w          t
               xn                                    x
                              N

    -     w の観測で t と t を結ぶ全経路は遮断 → t || t | w
    -     すなわち学習によって w を決定(=観測)した後では
          t と t が独立なので、 t の分布の計算に t は必要ない
    -     学習の過程と、予測分布を求める過程とを分離できる
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77         p. 14
(参考)無向グラフと周辺化(確率伝搬法…)
 • 確率変数同士に何らかの関係が存在する、
   すなわち独立ではないとき、エッジで結んで表現する
    -   A が a 個、B が b 個の状態をとり、表で表せる分布とする
    -   A と B が独立ではない場合
            A          B     p(A, B) ≠ p(A)p(B)
        • p(A, B) を表すのに必要なパラメータ数は a × b
    -   A と B が独立な場合
            A          B     p(A, B) = p(A)p(B)
        •   p(A, B) を表すのに必要なパラメータ数は a + b
 • ある変数についての周辺化を、次のように表す
            A          B     p(A) = ∑B p(A, B)
            A          B     p(B) = ∑A p(A, B)
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 15
変分ベイズ法の更新則を求める(変分MP…)
 • 混合ガウス分布の変分ベイズ法の更新則を求める
    -   グラフィカルモデルの構成要素から、下限の式を得る
    -   下限の式を最適化すると、変分ベイズ法の更新則が求まる
 • 混合ガウス分布の変分ベイズ法での、下限を求める




    -   1 行目は変分ベイズ法での下限の定義
         • 離散変数 Z は和をとり、連続変数 π, μ, Λ は積分する
    -   3 行目は混合ガウス分布のモデルと q の近似に基づく分解
    -   分布 q の上付き添字 * と、期待値 E の下付き添字は省略
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 16
混合ガウス分布:変分下限の各項(1)
 • 変分下限の各項を展開する
    -   D は x の次元。C(α) は (B.23)、B(W, ν) は (B.79) で定義




#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 17
混合ガウス分布:変分下限の各項(2)
 • 変分下限の各項を展開する




    -   H[q(Λk)] はウィシャート分布のエントロピー
    -   分布 q の対数の期待値を含む項は、
        -∫q(Z) ln q(Z) dZ という形をしており
        単にそれらの分布の負のエントロピーを表す
    -   理解を容易にするよう別々の項として記述されており、
        足し合わせてこれらの項を簡単にしたりまとめたりできる

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 18
変分下限の各項を展開する準備(1)
 • 前述の混合ガウス分布の式から p を分解




    -   パラメータの事前分布に共役事前分布を用いることで、
        事後分布の関数形が既知になり、計算が容易になる
    -   混合比 π の事前分布にはディリクレ分布を用いる



    -   混合要素の事前分布にはガウス-ウィシャート分布を用いる




#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 19
変分下限の各項を展開する準備(2)
 • 変分近似の式 (10.42) と計算の結果から q を分解
    -   混合ガウス分布の変分ベイズ法において、
        実際に計算可能な解を得る上で必要な唯一の仮定 (10.42)


    -   さらなる分解 (10.55)



        は、(10.9) を用いて実際に式を展開して、式 (10.54)




        を導くか、後述するグラフィカルなテストで確認できる

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 20
§ 10.2.5 導出された分解
 • 混合ガウス分布の変分ベイズ法の更新式を導く過程で
   変分事後分布を q(Z)q(π, μ, Λ) に分解できると仮定
 • しかし実際には、各因子の最適解はさらに分解される



    -   各観測値 (の添字) n について znk の和が 1 になるので、
        k についてこれ以上は分解できないことに注意する
 • 「導出された分解」(induced factorization)
    -   変分事後分布を分解する仮定と、
        真の同時分布のもつ条件つき独立性の、
        相互作用から導出されるので、こう呼ぶ
    -   図 10.5 の有向グラフが、真の分布の条件つき独立性を表す
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 21
導出された分解を考慮する理由
 • 変分ベイズ法の数値解を求める実装を行う際には、
   こうした導出された分解を考慮することが重要である
 • ガウス分布の精度行列(共分散の逆行列)を例に考える
    -   求める最適な分布の精度行列が常に対角行列ならば、
        各確率変数は独立であり、各変数について分解できる
    -   この場合、精度行列を完全な形で保っておくことは、
        対角成分だけを保存しておくことに比べて、
        メモリの使用量も計算量も、極めて非効率的である




#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 22
導出された分解を有向分離により見つける (1)
 • 導出された分解は、有向分離 (§ 8.2.2, pp.90-91)
   に基づくグラフィカルなテストで簡単に見つけられる
    -   潜在変数を 3 つの別々なグループ A, B ,C に分け、
        C と残りの項が分解されると仮定する


    -   一般的な結果


        および確率の乗法定理を用いると、q(A, B)の最適解は




        •   EC[ln p(X,C)] は A, B に依存せず正規化定数に含まれる
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 23
導出された分解を有向分離により見つける (2)
 • 前項の解が A と B に分解できるか、言い換えれば
   q*(A, B) = q*(A)q*(B) となるかどうかを確かめる
 • ln p(A,B|X,C) = ln p(A|X,C) + ln p(B|X,C)
   となる場合だけ、つまり条件つき独立の関係



   が満たされる時だけ、上記の分解が成立する
 • この関係が本当に成り立っているかを確認するには、
   A と B の全ての要素について、
   グラフィカルモデル上で有向分離基準を適用する



#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 24
ベイズ混合ガウス分布モデルについて確認する
 • パラメータの変分事後分布 q(π, μ, Λ) が、
   さらに q(π) と q(μ, Λ) に分けられることを
   混合ガウス分布のグラフィカルモデルで確認する
                           -   C={zn}, A={π}, B={μ, Λ} として、
                               A と B をつなぎうる全ての経路が
                               遮断されているかどうかを確認する
                           -   経路の各構成要素(3ノード)を見ていく
                           -   π→zn→xn の経路(全ての n)を見れば
                               C について head-to-tail であるという
                               p.91 の条件 (a) を zn が満たすので、
                               経路が遮断されていることがわかる

 • したがって、                               が成立する
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77       p. 25
演習 10.16 (10.71)(10.72) を確かめる (1)
 • 実際に下限の項を求める
    -   (10.38) 式


        の対数をとって、期待値を計算する




#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 26
演習 10.16 (10.71)(10.72) を確かめる (2)
 • 期待値



   の各項の計算は (10.64)(10.65) (演習10.14)




 • 結果として次の式が得られる



#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 27
演習 10.16 (10.71)(10.72) を確かめる (3)
 • 混合要素の変分事後分布と、
   そのパラメータの定義を求める 演習 10.13 の結果に、
   観測データの負担率から計算できる統計量を代入する




#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 28
演習 10.16 (10.71)(10.72) を確かめる (4)
 • p(Z|π) に対応する変分下限の項について




    -   式 (10.37) の対数の期待値をとる
    -   ディリクレ分布の標準的な性質(付録B)から
        式 (10.66) から得られるので、ここでもそれを使えばよい
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 29
混合ガウス分布の変分ベイズの再推定式
 • 変分下限を用いることで、10.2.1 節で得られた
   変分ベイズ法の再推定式を、別の方法で求められる
    -   モデルが共役事前分布を持っているため、
        変分事後分布の関数形は既知である
    -   Z は離散分布、π はディリクレ分布、
        (μk, Λk) はガウス-ウィシャート分布
        であることを利用する
 • 変分下限をパラメータの関数として求め、式を微分し
   最大化することで、変分ベイズの更新則を求める
 • 手計算でもよいが、Infer.NET を使えば
   この面倒な過程を意識せず、自動で計算してくれる!


#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 30
Infer.NET の概要(Infer.chm より)(1)
 • Infer.NET は、グラフィカルモデルにおいて
   ベイズ推論を行うためのフレームワークである
    -   最新のメッセージパッシングアルゴリズムと、
        様々なアプリ内での推論に必要な統計ルーチンを提供する
 • 強力なグラフィカルモデリング言語
    -   連続と離散両方の、単変量変数と多変量変数をサポート
    -   算術演算子、線形代数、範囲変数と許容解の制約表現、
        ブール演算、ディリクレ離散、ガウス過程、他多数の因子
 • 複数のベイズ推論アルゴリズム
    -   期待値伝搬法(Expectation Propagation。以下 EP と略)
    -   確率伝搬法(Belief Propagation。BP と略)
    -   変分メッセージパッシング(VMP。EM 法や変分ベイズ法)
    -   ギブスサンプリング(MCMC の一手法)
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 31
Infer.NET の概要(Infer.chm より)(2)
 • 大規模な推論のために設計されている
    -   Infer.NET は高速な推論を実現するために、モデル記述を
        コンパイルして、推論を行うC#のソースコードを生成する
    -   必要に応じて変更を加え、素直にビルド&デバッグできる
    -   アプリ実行中に、モデルからの動的コード生成も可能
    -   全ての条件つき分布が共役事前分布の構造を持つ
        指数型分布族の形で書けるモデルで書ける場合(中略)、
        変分ベイズ法の更新式は局所的な
        メッセージパッシングとして表せる(PRML本下巻 p.207)
 • ユーザーによる拡張可能性
    -   確率分布、因子、メッセージ操作、推論アルゴリズムを、
        必要に応じてユーザーが追加しやすく設計されている
    -   C#, VB, F#, IronPython, Mono などから利用可能
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 32
Infer.NET 2.4β のダウンロードとインストール
 • Infer.NET の公式サイトから、msi パッケージの
   ファイルをダウンロード&実行し、インストールする
    -   My DocumentsInfer.NET 2.4
        以下に、一部のバイナリとサンプルプログラムが格納
    -   Program FilesMicrosoft ResearchInfer.NET 2.4 Beta
        以下に、全てのバイナリ、ヘルプ文書、一部のソース
 • バイナリは Infer.Compiler.dll, Infer.Runtime.dll, 他
 • スタートメニューからヘルプ文書を参照できる
    -   “User Guide and Code Documentation” (Infer.chm)
 • サンプルプログラムのソリューションファイルを
   Visual Studio で開いて実行する
    -   無料で使える Visual C# 2010 Express Edition で実行可
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77        p. 33
Infer.NET 2.4β サンプルプログラム一覧
 • Tutorials
    -   2枚のコイン、切断されたガウシアン、
        ガウシアン分布を学習する、ベイズポイントマシン、
        クリニカルトライアル(医薬品の効果)、混合ガウス分布
 • Examples
    -   潜在的ディリクレ配分法 (LDA)。標準LDA。共通変数LDA
    -   多クラス分類。(疎な)ベイズポイントマシン
    -   ガウス過程による分類
    -   クリックスルーモデル(実際的なモデルの利用)
    -   クリックモデル
    -   BUGS(MCMC 計算アプリ)の Rats example
    -   画像分類タスク
    -   モンティ・ホール問題
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 34
Infer.NET のコンポーネントとアーキテクチャ




   “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載



#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                   p. 35
Infer.NET の動作




   “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載
     -   ユーザがモデルと推論クエリを与える
          • モデルやクエリを得る API を利用する
          • C# などによる、内部 DSL 相当の記述となる
     -   モデルコンパイラが、推論の計算を行う C# ソースを生成
     -   C# コンパイラが、その C# ソースをコンパイルする
     -   推論エンジンのパラメータや、観測データを与える
     -   推論クエリにもとづき、値や分布が返される
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                   p. 36
Infer.NET で扱える分布の因子(1)
 • 離散変数に関する分布




   “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                   p. 37
Infer.NET で扱える分布の因子(2)
 • 連続変数に関する分布




 • 多変量分布




   “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載
#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                   p. 38
Infer.NET のファーストサンプルプログラム




 • 実際の問題にどう適用できるかはこのあとで!
   @tsubosaka 先生お願いします!><




#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 39
参考文献
 • C. M. Bishop: "Pattern Recognition and Machine Learning", Springer
   (2006)
 • C. M. ビショップ, 元田浩, 栗田多喜夫, 樋口知之, 松本裕治, 村田昇: "パター
   ン認識と機械学習 上 / 下 - ベイズ理論による統計的予測", シュプリンガー・ジャ
   パン (2007-2008)
 • "Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)",
   Microsoft
 • S. S. J. Wang and M. P. Wand: "Using Infer.NET for Statistical
   Analyses", Working Paper at Centre for Statistical and Survey
   Methodology, 06-10 (2010)
 • 田中和之: "ベイジアンネットワークの統計的推論の数理", コロナ社 (2009)
 • 伊庭幸人: "ベイズ統計と統計物理", 岩波書店 (2003)
 • 汪金芳, 手塚集, 上田修功, 田栗正章, 樺島祥介: "計算統計Ⅰ", 岩波書店
   (2003)
 • 竹村彰通, 谷口正信: "統計学の基礎Ⅰ", 岩波書店 (2003)

#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77                  p. 40
TODO:
 • 結局自分がグラフについてもっと理解したいだけ…
    -   確率伝搬法(BP)による周辺分布の計算
    -   周辺分布と事後分布の使い分け
    -   回帰・予測・分類などのタスクの分類とグラフ構造の差異
    -   EM, GEM, VB を統一的に説明(計算統計Ⅰ)
    -   局所的変分メッセージパッシングのイメージ
    -   EP 法の丁寧な解説。BP との対応
    -   MCMC(計算統計Ⅱ)と、VB などの最適化手法の比較
    -   実際のアプリでどんな推論クエリが必要になるか
 • もっと Infer.NET についてコードを増やして説明
    -   LDA、クリックスルー、多クラス画像分類のサンプル解説



#TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77   p. 41

Infer net wk77_110613-1523

  • 1.
    #TokyoWebmining Infer.NET でグラフィカルモデルを計算する C. M. Bishop: “Pattern Recognition and Machine Learning”, Springer (2006) “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)”, Microsoft の内容紹介 Twitter: @wk77 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 1
  • 2.
    なぜグラフィカルモデルを計算するのか • 現代的な手法によって機械学習を実現するには、 現実の現象を確率を用いて表現することが有用である - 観測データから、それを生成する真の確率分布を推論する - 分類、予測、回帰といったどのような複雑なタスクでも、 確率モデルによって表現されている限り、確率の計算、 すなわち和と積の適用の繰返しで計算できる • 確率的グラフィカルモデルによる表現 - 学習のタスクや観測データの確率モデルを、図で表現する - シンプルな記述なので、確率変数間の関係が理解しやすく 新しい確率モデルの設計も容易となる - 変分近似(後述)でも役立つ、条件つき独立性という性質を、 グラフの構造自体を精査するだけで得ることができる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 2
  • 3.
    ある同時分布を様々なグラフにより表現する A B A B A B A B C C C C D E D E D E D E 有向グラフ 無向グラフ 因子グラフ ハイパグラフ - 有向グラフ:条件つき分布の積による表現を意識し、対応関係を矢印で表す • p(A, B, C, D, E) = p(A) p(B) p(C|A, B) p(D|C) p(E|C) - 無向グラフ:独立でない確率変数同士をエッジで結合したもの • p(A, B, C, D, E) = p(A, B, C) p(C, D) p(C, E) - 因子グラフ:因子(■で記述)への分解を表現する。様々な分解がありうる • p(A, B, C, D, E) = f(A) f(B) f(A, B, C) f(C, D) f(C, E) - ハイパグラフ:結合分布部分をハイパエッジで表現する。確率伝搬法で有用 • p(A, B, C, D, E) = f(A, B, C) f(C, D) f(C, E) #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 3
  • 4.
    ベイズの定理と推論 • 事前分布p(A) と条件つき分布 p(B|A) が既知のとき 観測データ B=b' から事後分布 p(A|B=b') を推論する - p(A)を、教授が御機嫌(A=1)か不機嫌(A=0)かの事前分布とする - p(B|A) を、教授の機嫌が決定した(条件づけ)ときの、 秘書が御機嫌(B=1)か不機嫌(B=0)かの条件つき分布とする • 同時分布 p(A,B) = p(B|A)p(A) や 周辺分布 p(B) = p(A=1,B) + p(A=0,B) も既知となる - 秘書の機嫌を観測することで (B=b')、 教授の機嫌の事後分布 p(A|B=b') を推論できる • 秘書が御機嫌と観測されたとき、教授が御機嫌な確率は p(A=1|B=1) = p(B=1|A=1)p(A=1) / p(B=1) - B が特定の値 b' でなく分布 p(B) であれば p(A|B) が求まる • p(A|B) = p(B|A)p(A) / p(B) (p(A)とp(A|B)は別物!) #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 4
  • 5.
    ベイズの定理とグラフィカルモデル A B p(A, B)=p(A)p(B|A) と分解可能である - A, B は確率変数で、p(A), p(B|A), p(A, B) の存在を表現する - p(A) と p(B|A) は任意の関数であり、未知でも良いが、 事前分布 p(A) と尤度関数 p(B|A) を与えれば p(A, B) も求まる - p(A, B) が周辺化できれば p(A) や p(B) も求まる A B p(A)p(B|A) で A が観測される - A=a' と観測 → p(A=a', B)=p(A=a')p(B|A=a') - A による条件づけ p(A=a', B)/p(A=a')=p(B|A=a') を表現する A B p(A)p(B|A) で B が観測される - B=b' と観測 → p(A), p(B|A) が既知なら、ベイズの定理で 事後分布 p(A|B=b') を推論でき、矢印反転して次のグラフになる A B p(A|B)p(B) で B が観測される - B=b' と観測 → p(A, B=b')/p(B=b')=p(A|B=b') で整合性がある #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 5
  • 6.
    ベイズ多項式回帰をグラフで表現する(1) • 目的変数t を多項式 y(x, w) = ∑j wj xj で回帰する - p(t, w) = p(w) Πn p(tn|y(xn, w)) w:パラメータ x:入力変数 w tn w t1 tN N PRML本 fig 1.3 プレートによる表現 - ハイパパラメータ α, β と入力変数 xn を追記する xn α - p(t, w|x, α, β) = p(w|α) Πn p(tn|w, xn, β) - p(w|α) = N(w|0, α-1I) tn w β - p(tn|w, xn, β) = N N(tn|y(xn, w), β-1) #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 6
  • 7.
    ベイズ多項式回帰をグラフで表現する(2) • 事後分布p(w|t) を推論し、最大確率となる w を決定する - 最大事後確率推定(MAP 推定)と呼ぶ tn w 事前分布 p(w) と尤度関数 Πn p(tn|w) は既知 p(t, w) = p(w) Πn p(tn|w) N tn w tn で条件づけると事後分布 p(w|t) が求まる p(w|t) ∝ p(w) Πn p(tn|w) N - 入力 xn は固定。最も尤もらしく t を表す w を最適化計算 - 対数尤度関数 ln Πn p(tn|w) = Σn ln N(tn|y(xn, w), β-1) • w で微分すれば w が求まる • w を固定して β で微分すれば β の点推定となる - 事前分布 p(w|α) の対数を加え最適化すれば正則化も可能 α は固定。データ数 n が増えると ln p(w|α) は相対的に小さくなる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 7
  • 8.
    予測分布を表現するグラフィカルモデル(1) • 学習が完了してw と β を推定したところで、 新たな入力 x が与えられたときに、 その未知の目標値 t を分布 p(t) として予測したい - p(t|w, x, β) は p(t|w, x, β) と同じ分布なので、 予測分布のグラフィカルモデルは左下図となる - α, β 固定で単純化し、ベイズの定理を反映したのが右下図 xn α xn tn w tn w N N x x β t t #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 8
  • 9.
    予測分布を表現するグラフィカルモデル(2) • 前ページの右下図と同じグラフ tn w t xn x N - p(t|x, w)p(w|x, t) となっていることがわかる • 求めたい予測分布は、上記で w を周辺化したもの p(t|x, x, t) = ∫ p(t|x, w) p(w|x, t) dw • 先に述べた結果から、ベイズの定理によって p(t, w|x) = p(w) Πn p(tn|w, xn) ∴ p(w|x, t) ∝ p(w) Πn p(tn|w, xn) • したがって予測分布は、次の式で与えられる p(t|x, x, t) ∝ ∫ p(t|x, w) p(w) Πn p(tn|w, xn) dw #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 9
  • 10.
    ナイーブベイズによる分類 • ナイーブベイズは、クラス分類のための一手法である - 観測変数は D 次元ベクトルで、観測値 x を K 個のクラスのうちの一つに対応させるとする - クラスに関する複数の項目が、独立に得られると仮定する p(x1, x2|Ck) = p(x1|Ck)p(x2|Ck) - x1 は離散変数、x2 は連続変数というように、 p(x1|Ck) と p(x2|Ck) のモデルが異なる種類のものでも良い - x1 と x2 の両方のデータが得られたときの事後確率は xi p(Ck|x1, x2) ∝ p(x1, x2|Ck)p(Ck) z ∝ p(x1|Ck)p(x2|Ck)p(Ck) D ∝ p(Ck|x1)p(Ck|x2) / p(Ck) - 事前確率 p(Ck) は、各クラスに含まれる データ点の個数から容易に推定可能 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 10
  • 11.
    条件つき独立性 • 3変数a, b, c についての条件つき独立性 - c で条件づけられた a が、b と独立であると仮定する p(a|b,c) = p(a|c) - このとき、c で条件づけられた a と b の同時分布は、 p(a, b|c) = p(a|b, c)p(b|c) = p(a|c)p(b|c) となり、a の周辺分布と b の周辺分布の積に分解できる - このことを a || b | c と表す - c がどのような値でも、a と b が独立となることが重要 • 「条件つき独立性の概念は重要である」(PRML 8.2) - パターン認識に用いる確率モデルを簡略化したり、 推論や学習に必要な計算を効率化する際に重要 - 変分ベイズ法や期待値伝搬法における近似の根拠 - 条件つき独立性がグラフの形から判定できることが利点 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 11
  • 12.
    3つのグラフについて条件つき独立性を考える • cが未観測: p(a,b)=Σc p(a,b,c)=p(a)p(b) なら独立 • c が観測: p(a,b|c)=p(a|c)p(b|c) なら条件つき独立 • tail-to-tail a c b a c b - p(a,b)= Σc p(a|c)p(b|c)p(c)≠p(a)p(b) 独立でない - p(a,b|c)=p(a,b,c)/p(c)=p(a|c)p(b|c) 条件つき独立 • head-to-tail a c b a c b - p(a,b)=p(a) Σc p(c|a)p(b|c)=p(a)p(b|a) 独立でない - p(a,b|c)=p(a)p(c|a)p(b|c)/p(c)=p(a|c)p(b|c) 条件つき独立 • head-to-head a c b a c b - p(a,b)= Σc p(a)p(b)p(c|a,b)=p(a)p(b) 独立 - p(a,b|c)=p(a)p(b)p(c|a,b)/p(c)≠p(a|c)p(b|c) 条件つき独立でない #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 12
  • 13.
    有向分離性(d-separation) • tail-to-tailや head-to-tail となるノード c について 未観測時は独立でなく、観測時は条件つき独立となる - c の観測により、a と b を結ぶ経路が遮断されると言う • head-to-head であるノード c か a b c c の子孫のノードが観測されると、 a と b は独立ではなくなる d - 左図の例では p(a,b|d) ≠ p(a|d)p(b|d) となる - 観測により、a と b の遮断が解かれると言う • 重複しない、ノードの部分集合 A, B, C について、 A と B を結ぶ全ての経路が C で遮断 → A || B | C - パラメータや訓練データ入力値など、小さな円のノードは 観測済みノードと同様の振る舞いをし、影響を与えない #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 13
  • 14.
    有向分離性の性質 • 1変数ガウス分布で平均の事後分布を求める μ • μ が与えられたとき、観測値は独立 - p(D|μ) = Πn p(xn|μ) - xi→μ→xj(≠i) の経路は tail-to-tail xn • μ を潜在変数とみなし周辺化→観測値は非独立 N - p(D) = ∫p(D|μ)p(μ)dμ ≠ Πn p(xn) • ベイズ線形回帰の予測分布について考える tn w t xn x N - w の観測で t と t を結ぶ全経路は遮断 → t || t | w - すなわち学習によって w を決定(=観測)した後では t と t が独立なので、 t の分布の計算に t は必要ない - 学習の過程と、予測分布を求める過程とを分離できる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 14
  • 15.
    (参考)無向グラフと周辺化(確率伝搬法…) • 確率変数同士に何らかの関係が存在する、 すなわち独立ではないとき、エッジで結んで表現する - A が a 個、B が b 個の状態をとり、表で表せる分布とする - A と B が独立ではない場合 A B p(A, B) ≠ p(A)p(B) • p(A, B) を表すのに必要なパラメータ数は a × b - A と B が独立な場合 A B p(A, B) = p(A)p(B) • p(A, B) を表すのに必要なパラメータ数は a + b • ある変数についての周辺化を、次のように表す A B p(A) = ∑B p(A, B) A B p(B) = ∑A p(A, B) #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 15
  • 16.
    変分ベイズ法の更新則を求める(変分MP…) • 混合ガウス分布の変分ベイズ法の更新則を求める - グラフィカルモデルの構成要素から、下限の式を得る - 下限の式を最適化すると、変分ベイズ法の更新則が求まる • 混合ガウス分布の変分ベイズ法での、下限を求める - 1 行目は変分ベイズ法での下限の定義 • 離散変数 Z は和をとり、連続変数 π, μ, Λ は積分する - 3 行目は混合ガウス分布のモデルと q の近似に基づく分解 - 分布 q の上付き添字 * と、期待値 E の下付き添字は省略 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 16
  • 17.
    混合ガウス分布:変分下限の各項(1) • 変分下限の各項を展開する - D は x の次元。C(α) は (B.23)、B(W, ν) は (B.79) で定義 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 17
  • 18.
    混合ガウス分布:変分下限の各項(2) • 変分下限の各項を展開する - H[q(Λk)] はウィシャート分布のエントロピー - 分布 q の対数の期待値を含む項は、 -∫q(Z) ln q(Z) dZ という形をしており 単にそれらの分布の負のエントロピーを表す - 理解を容易にするよう別々の項として記述されており、 足し合わせてこれらの項を簡単にしたりまとめたりできる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 18
  • 19.
    変分下限の各項を展開する準備(1) • 前述の混合ガウス分布の式からp を分解 - パラメータの事前分布に共役事前分布を用いることで、 事後分布の関数形が既知になり、計算が容易になる - 混合比 π の事前分布にはディリクレ分布を用いる - 混合要素の事前分布にはガウス-ウィシャート分布を用いる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 19
  • 20.
    変分下限の各項を展開する準備(2) • 変分近似の式(10.42) と計算の結果から q を分解 - 混合ガウス分布の変分ベイズ法において、 実際に計算可能な解を得る上で必要な唯一の仮定 (10.42) - さらなる分解 (10.55) は、(10.9) を用いて実際に式を展開して、式 (10.54) を導くか、後述するグラフィカルなテストで確認できる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 20
  • 21.
    § 10.2.5 導出された分解 •混合ガウス分布の変分ベイズ法の更新式を導く過程で 変分事後分布を q(Z)q(π, μ, Λ) に分解できると仮定 • しかし実際には、各因子の最適解はさらに分解される - 各観測値 (の添字) n について znk の和が 1 になるので、 k についてこれ以上は分解できないことに注意する • 「導出された分解」(induced factorization) - 変分事後分布を分解する仮定と、 真の同時分布のもつ条件つき独立性の、 相互作用から導出されるので、こう呼ぶ - 図 10.5 の有向グラフが、真の分布の条件つき独立性を表す #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 21
  • 22.
    導出された分解を考慮する理由 • 変分ベイズ法の数値解を求める実装を行う際には、 こうした導出された分解を考慮することが重要である • ガウス分布の精度行列(共分散の逆行列)を例に考える - 求める最適な分布の精度行列が常に対角行列ならば、 各確率変数は独立であり、各変数について分解できる - この場合、精度行列を完全な形で保っておくことは、 対角成分だけを保存しておくことに比べて、 メモリの使用量も計算量も、極めて非効率的である #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 22
  • 23.
    導出された分解を有向分離により見つける (1) •導出された分解は、有向分離 (§ 8.2.2, pp.90-91) に基づくグラフィカルなテストで簡単に見つけられる - 潜在変数を 3 つの別々なグループ A, B ,C に分け、 C と残りの項が分解されると仮定する - 一般的な結果 および確率の乗法定理を用いると、q(A, B)の最適解は • EC[ln p(X,C)] は A, B に依存せず正規化定数に含まれる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 23
  • 24.
    導出された分解を有向分離により見つける (2) •前項の解が A と B に分解できるか、言い換えれば q*(A, B) = q*(A)q*(B) となるかどうかを確かめる • ln p(A,B|X,C) = ln p(A|X,C) + ln p(B|X,C) となる場合だけ、つまり条件つき独立の関係 が満たされる時だけ、上記の分解が成立する • この関係が本当に成り立っているかを確認するには、 A と B の全ての要素について、 グラフィカルモデル上で有向分離基準を適用する #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 24
  • 25.
    ベイズ混合ガウス分布モデルについて確認する • パラメータの変分事後分布q(π, μ, Λ) が、 さらに q(π) と q(μ, Λ) に分けられることを 混合ガウス分布のグラフィカルモデルで確認する - C={zn}, A={π}, B={μ, Λ} として、 A と B をつなぎうる全ての経路が 遮断されているかどうかを確認する - 経路の各構成要素(3ノード)を見ていく - π→zn→xn の経路(全ての n)を見れば C について head-to-tail であるという p.91 の条件 (a) を zn が満たすので、 経路が遮断されていることがわかる • したがって、 が成立する #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 25
  • 26.
    演習 10.16 (10.71)(10.72) を確かめる(1) • 実際に下限の項を求める - (10.38) 式 の対数をとって、期待値を計算する #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 26
  • 27.
    演習 10.16 (10.71)(10.72) を確かめる(2) • 期待値 の各項の計算は (10.64)(10.65) (演習10.14) • 結果として次の式が得られる #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 27
  • 28.
    演習 10.16 (10.71)(10.72) を確かめる(3) • 混合要素の変分事後分布と、 そのパラメータの定義を求める 演習 10.13 の結果に、 観測データの負担率から計算できる統計量を代入する #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 28
  • 29.
    演習 10.16 (10.71)(10.72) を確かめる(4) • p(Z|π) に対応する変分下限の項について - 式 (10.37) の対数の期待値をとる - ディリクレ分布の標準的な性質(付録B)から 式 (10.66) から得られるので、ここでもそれを使えばよい #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 29
  • 30.
    混合ガウス分布の変分ベイズの再推定式 • 変分下限を用いることで、10.2.1節で得られた 変分ベイズ法の再推定式を、別の方法で求められる - モデルが共役事前分布を持っているため、 変分事後分布の関数形は既知である - Z は離散分布、π はディリクレ分布、 (μk, Λk) はガウス-ウィシャート分布 であることを利用する • 変分下限をパラメータの関数として求め、式を微分し 最大化することで、変分ベイズの更新則を求める • 手計算でもよいが、Infer.NET を使えば この面倒な過程を意識せず、自動で計算してくれる! #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 30
  • 31.
    Infer.NET の概要(Infer.chm より)(1) • Infer.NET は、グラフィカルモデルにおいて ベイズ推論を行うためのフレームワークである - 最新のメッセージパッシングアルゴリズムと、 様々なアプリ内での推論に必要な統計ルーチンを提供する • 強力なグラフィカルモデリング言語 - 連続と離散両方の、単変量変数と多変量変数をサポート - 算術演算子、線形代数、範囲変数と許容解の制約表現、 ブール演算、ディリクレ離散、ガウス過程、他多数の因子 • 複数のベイズ推論アルゴリズム - 期待値伝搬法(Expectation Propagation。以下 EP と略) - 確率伝搬法(Belief Propagation。BP と略) - 変分メッセージパッシング(VMP。EM 法や変分ベイズ法) - ギブスサンプリング(MCMC の一手法) #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 31
  • 32.
    Infer.NET の概要(Infer.chm より)(2) • 大規模な推論のために設計されている - Infer.NET は高速な推論を実現するために、モデル記述を コンパイルして、推論を行うC#のソースコードを生成する - 必要に応じて変更を加え、素直にビルド&デバッグできる - アプリ実行中に、モデルからの動的コード生成も可能 - 全ての条件つき分布が共役事前分布の構造を持つ 指数型分布族の形で書けるモデルで書ける場合(中略)、 変分ベイズ法の更新式は局所的な メッセージパッシングとして表せる(PRML本下巻 p.207) • ユーザーによる拡張可能性 - 確率分布、因子、メッセージ操作、推論アルゴリズムを、 必要に応じてユーザーが追加しやすく設計されている - C#, VB, F#, IronPython, Mono などから利用可能 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 32
  • 33.
    Infer.NET 2.4β のダウンロードとインストール • Infer.NET の公式サイトから、msi パッケージの ファイルをダウンロード&実行し、インストールする - My DocumentsInfer.NET 2.4 以下に、一部のバイナリとサンプルプログラムが格納 - Program FilesMicrosoft ResearchInfer.NET 2.4 Beta 以下に、全てのバイナリ、ヘルプ文書、一部のソース • バイナリは Infer.Compiler.dll, Infer.Runtime.dll, 他 • スタートメニューからヘルプ文書を参照できる - “User Guide and Code Documentation” (Infer.chm) • サンプルプログラムのソリューションファイルを Visual Studio で開いて実行する - 無料で使える Visual C# 2010 Express Edition で実行可 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 33
  • 34.
    Infer.NET 2.4β サンプルプログラム一覧 • Tutorials - 2枚のコイン、切断されたガウシアン、 ガウシアン分布を学習する、ベイズポイントマシン、 クリニカルトライアル(医薬品の効果)、混合ガウス分布 • Examples - 潜在的ディリクレ配分法 (LDA)。標準LDA。共通変数LDA - 多クラス分類。(疎な)ベイズポイントマシン - ガウス過程による分類 - クリックスルーモデル(実際的なモデルの利用) - クリックモデル - BUGS(MCMC 計算アプリ)の Rats example - 画像分類タスク - モンティ・ホール問題 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 34
  • 35.
    Infer.NET のコンポーネントとアーキテクチャ “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 35
  • 36.
    Infer.NET の動作 “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載 - ユーザがモデルと推論クエリを与える • モデルやクエリを得る API を利用する • C# などによる、内部 DSL 相当の記述となる - モデルコンパイラが、推論の計算を行う C# ソースを生成 - C# コンパイラが、その C# ソースをコンパイルする - 推論エンジンのパラメータや、観測データを与える - 推論クエリにもとづき、値や分布が返される #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 36
  • 37.
    Infer.NET で扱える分布の因子(1) •離散変数に関する分布 “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 37
  • 38.
    Infer.NET で扱える分布の因子(2) •連続変数に関する分布 • 多変量分布 “Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)” から転載 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 38
  • 39.
    Infer.NET のファーストサンプルプログラム •実際の問題にどう適用できるかはこのあとで! @tsubosaka 先生お願いします!>< #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 39
  • 40.
    参考文献 • C.M. Bishop: "Pattern Recognition and Machine Learning", Springer (2006) • C. M. ビショップ, 元田浩, 栗田多喜夫, 樋口知之, 松本裕治, 村田昇: "パター ン認識と機械学習 上 / 下 - ベイズ理論による統計的予測", シュプリンガー・ジャ パン (2007-2008) • "Infer.NET 2.4β User Guide and Code Documentation (Infer.chm)", Microsoft • S. S. J. Wang and M. P. Wand: "Using Infer.NET for Statistical Analyses", Working Paper at Centre for Statistical and Survey Methodology, 06-10 (2010) • 田中和之: "ベイジアンネットワークの統計的推論の数理", コロナ社 (2009) • 伊庭幸人: "ベイズ統計と統計物理", 岩波書店 (2003) • 汪金芳, 手塚集, 上田修功, 田栗正章, 樺島祥介: "計算統計Ⅰ", 岩波書店 (2003) • 竹村彰通, 谷口正信: "統計学の基礎Ⅰ", 岩波書店 (2003) #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 40
  • 41.
    TODO: • 結局自分がグラフについてもっと理解したいだけ… - 確率伝搬法(BP)による周辺分布の計算 - 周辺分布と事後分布の使い分け - 回帰・予測・分類などのタスクの分類とグラフ構造の差異 - EM, GEM, VB を統一的に説明(計算統計Ⅰ) - 局所的変分メッセージパッシングのイメージ - EP 法の丁寧な解説。BP との対応 - MCMC(計算統計Ⅱ)と、VB などの最適化手法の比較 - 実際のアプリでどんな推論クエリが必要になるか • もっと Infer.NET についてコードを増やして説明 - LDA、クリックスルー、多クラス画像分類のサンプル解説 #TokyoWebmining Infer.NET でグラフィカルモデルを計算する by @wk77 p. 41