確率的主成分分析とEMアルゴリズム(その1)

SternGerlach

確率的主成分分析とEMアルゴリズム(その1)

確率的主成分分析で、各パラメータを期待値最大化法(EMアルゴリズム)により求める式の導出の仕方を備忘録として書いてみる。確率的主成分分析では、観測値xが、潜在変数zによって、確率的に生成されたと考えるらしい。μxの平均値を表している(z=0のときにμに移る)。観測値xM次元、潜在変数zm次元とする。zの事前分布p(z)は、取り敢えず正規分布としておく。p(x|z)のパラメータW,μ,σ2を、観測データD={x1,,xN}から求めるのが目標となる。

p(x|z)=N(x|Wz+μ,σ2IM) p(z)=N(z|0,Im)

平均ベクトルμは簡単に求められる。多変数正規分布のベイズの定理を用いると、p(x)は次のようになる。

p(x)=N(x|μ,C)(C=WWT+σ2IM)

最尤推定を行うために対数尤度関数L(μ,W,σ2|D)を求める。

L(μ,W,σ2|D)=lni=1Np(xi)=lni=1NN(xi|μ,C)=i=1NlnN(xi|μ,C)=i=1Nln((2π)M2|C|12exp(12(xiμ)TC1(xiμ)))=MN2ln(2π)N2ln|C|12i=1N(xiμ)TC1(xiμ)

L(μ,W,σ2|D)μで偏微分して0とおくことによって、μの最尤推定値μ^が得られる。

Lμ=12i=1Nμ(xiμ)TC1(xiμ)=12i=1N((1)(C1+(C1)T)(xiμ))=12i=1N(2C1(xiμ))=C1i=1N(xiμ)=0

i=1Nxi=i=1Nμ=Nμ μ=1Ni=1Nxi

μ^は単なる標本平均となっている。これ以降μは既知として扱うことにして、μ=x¯と書く。パラメータW,σ2を求めるために、対数尤度関数を改めて書き直す。

L(W,σ2|D)=lni=1Np(xi)=i=1Nlnp(xi)=i=1Nlnp(xi|zi)p(zi)dzi

ここでイェンセンの不等式を用いると次のようになる(q(zi)は何らかの確率分布)。

L(W,σ2|xi)=lnp(xi|zi,W,σ2)p(zi)dziq(zi)lnp(xi|zi,W,σ2)p(zi)q(zi)dzi=q(zi)lnp(xi,zi|W,σ2)q(zi)dzi

q(zi)=p(zi|xi,W,σ2)とすると上手くいく。

q(zi)lnp(xi,zi,W,σ2)q(zi)dzi=p(zi|xi,W,σ2)lnp(xi,zi|W,σ2)p(zi|xi,W,σ2)dzi=p(zi|xi,W,σ2)lnp(xi,zi|W,σ2)p(xi|zi,W,σ2)p(zi)p(xi)dzi=p(zi|xi,W,σ2)lnp(xi,zi|W,σ2)p(xi,zi|W,σ2)p(xi)dzi=p(zi|xi,W,σ2)ln(p(xi))dzi=ln(p(xi))p(zi|xi,W,σ2)dzi(lnzi,)=ln(p(xi|zi,W,σ2)p(zi)dzi)p(zi|xi,W,σ2)dzi(p(xi))=lnp(xi|zi,W,σ2)p(zi)dzi(p(zi|xi))=L(W,σ2|xi)

上式のように、対数関数の中身が積分変数(上の場合はzi)に関係なくなるときに、イェンセンの不等式による近似の精度が最も良くなる(元々の対数尤度と等しくなっている)。q(zi)は、多変数正規分布のベイズの定理から次のようになる。

q(zi)=p(zi|xi,W,σ2)=N(zi|M1WT(xx¯),σ2M1) M=WTW+σ2Im

q(zi)は上式に、パラメータW,σ2を代入すれば求められる。代入されるパラメータは、q(zi)を求める前に既に用意してあった仮のものであるため、これらをW,σ2と表記する(q(zi)=p(zi|xi,W,σ2))。さて、最大化しようとしている対数尤度L(W,σ2|D,Z)は次のようになる(Z={z1,,zN})。なぜこの式の期待値を最大化すればよいかについてはまた後で考える。

L(W,σ2|D,Z)=lnp(D,Z|W,σ2)=lni=1Np(xi|zi)p(zi)=i=1N(lnp(xi|zi)+lnp(zi))

q(zi)=p(zi|xi,W,σ2)(潜在変数の事後分布)についての期待値を取ると、上式は次のようになる。

i=1Nq(zi){lnp(xi|zi,W,σ2)+lnp(zi)}dzi=i=1Nq(zi){lnN(xi|Wzi+x¯,σ2IM)+lnN(zi|0,Im)}dzi=i=1Nq(zi)(M2ln(2π)12ln|σ2IM|12(xi(Wzi+x¯))T(σ2Im)1(xi(Wzi+x¯))m2ln(2π)12ziTzi)dzi=i=1Nq(zi)(M2ln(2π)12ln((σ2)M)12σ2(xi(Wzi+x¯))T(xi(Wzi+x¯))m2ln(2π)12ziTzi)dzi=i=1Nq(zi)(M2ln(2π)M2ln(σ2)12σ2(xix¯)T(xix¯)+1σ2(xix¯)TWzi12σ2(Wzi)T(Wzi)m2ln(2π)12ziTzi)dzi=i=1Nq(zi)(M2ln(2πσ2)m2ln(2π)12σ2||xix¯||2+1σ2(xix¯)TWzi12σ2Tr((Wzi)T(Wzi))12Tr(ziTzi))dzi=MN2ln(2πσ2)mN2ln(2π)12σ2i=1Nq(zi)(||xix¯||22(xix¯)TWzi+Tr(ziTWTWzi)+σ2Tr(ziziT))dzi=MN2ln(2πσ2)mN2ln(2π)12σ2i=1Nq(zi)(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW)+σ2Tr(ziziT))dzi

q(zi)による期待値をで表すことにすると、上式は次のようになる。

MN2ln(2πσ2)mN2ln(2π)12σ2i=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW)+σ2Tr(ziziT))

ここでziと、ziziTは、更新前の仮のパラメータW,σ2を使って次のように計算できることが分かる。以下の2つの式が期待値ステップで利用される。

zi=M1WT(xix¯) ziziT=σ2M1+ziziT M=WTW+σ2Im

最大化ステップで使用する式(パラメータW,σ2の更新式)は、上述の対数尤度の近似式を、W,σ2について微分して0とおくことによって得られる。

W{MN2ln(2πσ2)mN2ln(2π)12σ2i=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW)+σ2Tr(ziziT))}=12σ2Wi=1N(2(xix¯)TWzi+Tr(ziziTWTW))=12σ2Wi=1N(2Tr((xix¯)TWzi)+Tr(WziziTWT))=12σ2Wi=1N(2Tr(Wzi(xix¯)T)+Tr(WziziTWT))=12σ2i=1N(2(zi(xix¯)T)T+W(ziziT+ziziTT))=12σ2i=1N(2(xix¯)ziT+2WziziT)=0

これよりWの更新式は次のようになる。

i=1NWziziT=i=1N(xix¯)ziTW(i=1NziziT)=i=1N(xix¯)ziTW={i=1N(xix¯)ziT}(i=1NziziT)1

σ2についても同様に行う。

σ2{MN2ln(2πσ2)mN2ln(2π)12σ2i=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW)+σ2Tr(ziziT))}=σ2{MN2ln(2πσ2)12σ2i=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW))}=MN22π2πσ2+12σ4i=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW))}=MN21σ2+12σ4i=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW))}=0

これよりσ2の更新式は次のようになる。

MN21σ2=12σ4i=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW))}σ2=1MNi=1N(||xix¯||22(xix¯)TWzi+Tr(ziziTWTW))}

従って、W,σ2の初期値を適当に決めてから、両者のパラメータが収束するまで、zi,ziziTの計算と、W,σ2の更新を交互に繰り返していけばよいことが分かる。

あまり理解できていないな…