指数型分布族とは
確率変数 x∈Rm を規定する密度関数がパラメータ θ∈Rd を用いて以下の形に表現できるとき、この分布を指数型分布族といいます。
p(x∣θ)=Z(θ)1h(x)eθ⊤ϕ(x)
ただし Z(θ) は正規化項なので以下の積分で与えられます。
Z(θ)=∫Rmh(x)eθ⊤ϕ(x)dx
θ を標準パラメータ (canonical parameter) と言い、この密度関数の形を標準形と言います。
正規分布や二項分布、ポアソン分布など、よく出てくる分布は指数型分布族です。
普通の正規分布と指数型分布族としての正規分布の関係
普段正規分布を扱うときは、以下のように平均パラメータと分散パラメータ (両者をあわせてモーメントパラメータといいます) を使って表記することが多いかと思います。
N(x∣μ,σ2)
指数型分布族の標準形ではパラメータのとり方が異なります。これを以下のように表すことにしましょう。
Nc(x∣ξ,λ)
ξ,λ 2つあわせたものが標準パラメータです。
これらのパラメータの変換則を1次元と多次元に分けて紹介していきます。
1次元
1次元正規分布におけるパラメータの変換則は次のようになります。
N(x∣μ,σ2)=Nc(xσ2μ, σ21)Nc(x∣ξ,λ)=N(xλξ, λ1)
次に、密度関数の数式としてはどのような違いがあるのかを見てみましょう。ただし指数の部分だけを取り出して比べてみます。
N(x∣μ,σ2):−σ2(x−μ)2Nc(x∣ξ,λ):−2λx2+ξx
とくにベイズ推論では密度関数の全体を計算する必要がないことが多いので、上記の形だけ覚えておけば十分です。
多次元
多次元正規分布におけるパラメータの変換則は次のようになります。
N(μ,Σ)=Nc(Σ−1μ, Σ−1)Nc(ξ,Λ)=N(Λ−1ξ, Λ−1)
こちらも密度関数の指数部分を比べてみます。
N(x∣μ,Σ):−21(x−μ)⊤Σ−1(x−μ)Nc(x∣ξ,Λ):−21x⊤Λx+x⊤ξ
標準形のメリット
ベイズ推論で正規分布を扱う場合, 事後分布は標準形で表したほうがシンプルになることがあります。
しかも Julia の Distributions パッケージでは NormalCanon
や MvNormalCanon
という型を用意してくれているため, コードもきれいに保てます。
計算公式
ベイズ推論では複数の密度関数の積を計算することがよくありますが、2つの正規分布の積は次のように簡単に計算できます。ただし本記事において ≃ は定数倍を除いて等しいことを表すことにします。
Nc(x∣ξ0,Λ0)Nc(x∣ξ1,Λ1)≃Nc(x∣ξ0+ξ1,Λ0+Λ1)
ベイズ推論における例
ユーザー u のアイテム i に対する評価値が Xu,i であるような行列 X を生成するモデルを考えます。各評価値 Xu,i は user factor vector Wu と item factor vector Hi の内積 Wu⊤Hi を平均とする正規分布から生成されていると仮定します。各 Wu,Hi の事前分布にも正規分布を設定します。まとめると、以下のようなモデルを考えているということです。
X∈RU×IWu∈RD(u=1,…,U)Hi∈RD(i=1,…,I)p(Xu,i∣Wu,Hi)=N(Xu,i∣Wu⊤Hi,λ−1)p(Wu)=N(WuμuW,(ΛuW)−1)p(Hi)=N(HiμiH,(ΛiH)−1)
モデル設計時には平均などの意味を考えるため、モーメントパラメータのほうが適していますね。
さて、このモデルを学習するためにギブスサンプリングのアルゴリズムを導出してみましょう。
まずは Wu をサンプルすることを考えます。答えを先に言ってしまうと、Wu の条件付き分布は正規分布になります。しかも (記事の流れから当然ですが) 標準形で表したほうがシンプルになります。
p(Xu,i∣Wu,Hi) の指数部分を取り出すと、以下のように変形できます。ただし本記事において ∼ は Wu に関係ない定数部分を除いて等しいことを表します。
−2λ(Xu,i−Wu⊤Hi)2∼−2λ(Wu⊤Hi)2+λXu,i⋅Wu⊤Hi=−21Wu⊤(λHiHi⊤)Wu+Wu⊤(λXu,iHi)
これは Nc(Wu∣λXu,iHi, λHiHi⊤) の指数部分と同じです。
さて、今は u を固定して Wu について考えていましたから、計算すべきは ∏ip(Xu,i∣Wu,Hi) です。事前分布とまとめることで、Wu の条件付き分布は以下のように求まります。
i∏Nc(Wu∣λXu,iHi, λHiHi⊤)N(Wu∣μuW, (ΛuW)−1)≃Nc(Wuλi∑Xu,iHi, λi∑HiHi⊤)Nc(Wu∣ΛuWμuW, ΛuW)≃Nc(WuΛuWμuW+λi∑Xu,iHi,ΛuW+λi∑HiHi⊤)
Hi の条件付き分布も同様です。
Nc(HiΛiHμiH+λu∑Xu,iWu,ΛiH+λu∑WuWu⊤)
パラメータの足し算だけで計算できるので楽ちんですね!