確率的主成分分析とEMアルゴリズム(その1)
確率的主成分分析で、各パラメータを期待値最大化法(EMアルゴリズム)により求める式の導出の仕方を備忘録として書いてみる。確率的主成分分析では、観測値xが、潜在変数zによって、確率的に生成されたと考えるらしい。μはxの平均値を表している(z=0のときにμに移る)。観測値xをM次元、潜在変数zをm次元とする。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)=lnN∏i=1p(xi)=lnN∏i=1N(xi|μ,C)=N∑i=1lnN(xi|μ,C)=N∑i=1ln((2π)−M2|C|−12exp(−12(xi−μ)TC−1(xi−μ)))=−MN2ln(2π)−N2ln|C|−12N∑i=1(xi−μ)TC−1(xi−μ)
L(μ,W,σ2|D)をμで偏微分して0とおくことによって、μの最尤推定値^μが得られる。
∂L∂μ=−12N∑i=1∂∂μ(xi−μ)TC−1(xi−μ)=−12N∑i=1((−1)(C−1+(C−1)T)(xi−μ))=−12N∑i=1(−2C−1(xi−μ))=C−1N∑i=1(xi−μ)=0
N∑i=1xi=N∑i=1μ=Nμ μ=1NN∑i=1xi
^μは単なる標本平均となっている。これ以降μは既知として扱うことにして、μ=¯xと書く。パラメータW,σ2を求めるために、対数尤度関数を改めて書き直す。
L(W,σ2|D)=lnN∏i=1p(xi)=N∑i=1lnp(xi)=N∑i=1ln∫p(xi|zi)p(zi)dzi
ここでイェンセンの不等式を用いると次のようになる(q(zi)は何らかの確率分布)。
L(W,σ2|xi)=ln∫p(xi|zi,W,σ2)p(zi)dzi≥∫q(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(∵lnの中身がziに依存しないため,係数として積分の外側に括り出す)=ln(∫p(xi|zi,W,σ2)p(zi)dzi)∫p(zi|xi,W,σ2)dzi(∵p(xi)を積分の形で表現する)=ln∫p(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|M−1WT(x−¯x),σ2M−1) 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)=lnN∏i=1p(xi|zi)p(zi)=N∑i=1(lnp(xi|zi)+lnp(zi))
q(zi)=p(zi|xi,W′,σ2′)(潜在変数の事後分布)についての期待値を取ると、上式は次のようになる。
N∑i=1∫q(zi){lnp(xi|zi,W,σ2)+lnp(zi)}dzi=N∑i=1∫q(zi){lnN(xi|Wzi+¯x,σ2IM)+lnN(zi|0,Im)}dzi=N∑i=1∫q(zi)(−M2ln(2π)−12ln|σ2IM|−12(xi−(Wzi+¯x))T(σ2Im)−1(xi−(Wzi+¯x))−m2ln(2π)−12zTizi)dzi=N∑i=1∫q(zi)(−M2ln(2π)−12ln((σ2)M)−12σ2(xi−(Wzi+¯x))T(xi−(Wzi+¯x))−m2ln(2π)−12zTizi)dzi=N∑i=1∫q(zi)(−M2ln(2π)−M2ln(σ2)−12σ2(xi−¯x)T(xi−¯x)+1σ2(xi−¯x)TWzi−12σ2(Wzi)T(Wzi)−m2ln(2π)−12zTizi)dzi=N∑i=1∫q(zi)(−M2ln(2πσ2)−m2ln(2π)−12σ2||xi−¯x||2+1σ2(xi−¯x)TWzi−12σ2Tr((Wzi)T(Wzi))−12Tr(zTizi))dzi=−MN2ln(2πσ2)−mN2ln(2π)−12σ2N∑i=1∫q(zi)(||xi−¯x||2−2(xi−¯x)TWzi+Tr(zTiWTWzi)+σ2Tr(zizTi))dzi=−MN2ln(2πσ2)−mN2ln(2π)−12σ2N∑i=1∫q(zi)(||xi−¯x||2−2(xi−¯x)TWzi+Tr(zizTiWTW)+σ2Tr(zizTi))dzi
q(zi)による期待値を⟨⋅⟩で表すことにすると、上式は次のようになる。
−MN2ln(2πσ2)−mN2ln(2π)−12σ2N∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW)+σ2Tr(⟨zizTi⟩))
ここで⟨zi⟩と、⟨zizTi⟩は、更新前の仮のパラメータW′,σ2′を使って次のように計算できることが分かる。以下の2つの式が期待値ステップで利用される。
⟨zi⟩=M′−1W′T(xi−¯x) ⟨zizTi⟩=σ2′M′−1+⟨zi⟩⟨zi⟩T M′=W′TW′+σ2′Im
最大化ステップで使用する式(パラメータW,σ2の更新式)は、上述の対数尤度の近似式を、W,σ2について微分して0とおくことによって得られる。
∂∂W{−MN2ln(2πσ2)−mN2ln(2π)−12σ2N∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW)+σ2Tr(⟨zizTi⟩))}=−12σ2∂∂WN∑i=1(−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW))=−12σ2∂∂WN∑i=1(−2Tr((xi−¯x)TW⟨zi⟩)+Tr(W⟨zizTi⟩WT))=−12σ2∂∂WN∑i=1(−2Tr(W⟨zi⟩(xi−¯x)T)+Tr(W⟨zizTi⟩WT))=−12σ2N∑i=1(−2(⟨zi⟩(xi−¯x)T)T+W(⟨zizTi⟩+⟨zizTi⟩T))=−12σ2N∑i=1(−2(xi−¯x)⟨zi⟩T+2W⟨zizTi⟩)=0
これよりWの更新式は次のようになる。
∴N∑i=1W⟨zizTi⟩=N∑i=1(xi−¯x)⟨zi⟩TW(N∑i=1⟨zizTi⟩)=N∑i=1(xi−¯x)⟨zi⟩TW={N∑i=1(xi−¯x)⟨zi⟩T}(N∑i=1⟨zizTi⟩)−1
σ2についても同様に行う。
∂∂σ2{−MN2ln(2πσ2)−mN2ln(2π)−12σ2N∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW)+σ2Tr(⟨zizTi⟩))}=∂∂σ2{−MN2ln(2πσ2)−12σ2N∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW))}=−MN22π2πσ2+12σ4N∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW))}=−MN21σ2+12σ4N∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW))}=0
これよりσ2の更新式は次のようになる。
∴MN21σ2=12σ4N∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW))}σ2=1MNN∑i=1(||xi−¯x||2−2(xi−¯x)TW⟨zi⟩+Tr(⟨zizTi⟩WTW))}
従って、W,σ2の初期値を適当に決めてから、両者のパラメータが収束するまで、⟨zi⟩,⟨zizTi⟩の計算と、W,σ2の更新を交互に繰り返していけばよいことが分かる。
あまり理解できていないな…