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

SternGerlach

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

確率的主成分分析とEMアルゴリズム(その1)の続きで、しっくりこない部分を再度考えてみる。平均ベクトルμは、最尤推定で簡単に求めることができた。対数尤度関数L(μ,W,σ2|D)μについて微分し、0と等値するのみであった。しかし、未知のパラメータW,σ2を最尤推定によって求めるのは難しい。L(W,σ2|D)は以下のように、W,σ2についての複雑な式になるためである。W,σ2が行列C=WWT+σ2IMの中に埋め込まれているので、L(W,σ2|D)W,σ2で微分して0とおき、解を直接求めるのは大変そうである。

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

平均ベクトルμの最尤推定量は、観測値xについての単なる標本平均であるため、μは既知として扱い、μ=x¯と書いている。

L(W,σ2|D)を直接最大化するのは難しい。そこで次のように、潜在変数zについての分布q(z)を導入し、2つの項に分解してみることにする。

L(W,σ2|D)=i=1Nlnp(xi|W,σ2)=i=1N(q(zi)dzi)=1lnp(xi|W,σ2)=i=1Nq(zi)lnp(xi|W,σ2)dzi=i=1Nq(zi)lnp(xi,zi|W,σ2)p(zi|xi,W,σ2)dzi=i=1Nq(zi)lnp(xi,zi|W,σ2)q(zi)q(zi)p(zi|xi,W,σ2)dzi=i=1Nq(zi)(lnp(xi,zi|W,σ2)q(zi)lnp(zi|xi,W,σ2)q(zi))dzi=i=1N{q(zi)lnp(xi,zi|W,σ2)q(zi)dziq(zi)lnp(zi|xi,W,σ2)q(zi)dzi}=i=1N{q(zi)lnp(xi,zi|W,σ2)q(zi)dzi+KL(qi||pi)}=i=1N{L(qi,W,σ2)+KL(qi||pi)}

上式では、qi=q(zi),pi=p(zi|xi,W,σ2)と略した。KL(qi||pi)は、q(zi)と事後分布p(zi|xi,W,σ2)間の、カルバック-ライブラーダイバージェンス(KLダイバージェンス)と呼ばれる量であり、qipiがどれだけ分布として違っているのかを表している。KL(qi||pi)0であり、q(zi)=p(zi|xi,W,σ2)のときに限り等号が成立する。従って、以下の不等式が得られる(前回はイェンセンの不等式から導出した)。

L(W,σ2|D)i=1Nq(zi)lnp(xi,zi|W,σ2)q(zi)dzi=i=1NL(qi,W,σ2)

さて、現在のパラメータがW,σ2であるとする。このとき、q(zi)=p(zi|xi,W,σ2)とすれば、上式において等号が成立することは前回確認した。対数の中身はp(xi|W,σ2)のようになり、積分変数ziに依存しなくなるためだった。KL(qi||pi)=0となることからも、等号の成立が明らかである。これは、W,σ2の2つのパラメータを固定したまま、qi=q(zi)をうまく調整することによって、L(qi,W,σ2)を最大化したことに相当する。

現在のパラメータW,σ2を元に、q(zi)を更新する方法が分かった。あとは、現在のq(zi)=p(zi|xi,W,σ2)を元に、パラメータW,σ2を更新すればよい。これは、qi=q(zi)を固定しつつ、W,σ2についてL(qi,W,σ2)を最大化するだけである。対数尤度L(W,σ2|D)を直接最大化するのが困難であっても、このような2段階のステップによってL(qi,W,σ2)を徐々に大きくしていけば、L(qi,W,σ2)の合計(上の不等式の右辺)がL(W,σ2|D)の最大値(上の不等式の左辺の最大値)に近づいていくので、上手く行きそうである。L(qi,W,σ2)は次のようになる。

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

q(zi)=p(zi|xi,W,σ2)を代入すると以下のようになる。

q(zi)lnp(xi,zi|W,σ2)dziq(zi)lnq(zi)dzi=p(zi|xi,W,σ2)lnp(xi,zi|W,σ2)dzip(zi|xi,W,σ2)lnp(zi|xi,W,σ2)dzi=p(zi|xi,W,σ2)lnp(xi,zi|W,σ2)dzi+Const.=p(zi|xi,W,σ2){lnp(xi|zi,W,σ2)+lnp(zi)}dzi+Const.

上式の第2項は、q(zi)=p(zi|xi,W,σ2)のエントロピーであり、W,σ2には関係しない定数として扱うことができる。上式をW,σ2について最大化するためにW,σ2で微分しても、第2項にはW,σ2が含まれないため単に無視される。結局、W,σ2によって最大化されるのは上式の第1項のみだと分かる。従って、第1項をW,σ2で微分して0と等値すれば、更新後の新たなパラメータW,σ2が求まる。因みに前回の例では、p(xi|zi,W,σ2)N(xi|Wzi+x¯,σ2IM)、またp(zi)N(zi|0,Im)であった。

上式はi番目のL(qi,W,σ2)ついてのみ考えたものだったので、i=1,,Nについて足し合わせて、以下のように変形してみる。定数項を除いた部分が、W,σ2について最大化する対象となる。

i=1NL(qi,W,σ2)=i=1Np(zi|xi,W,σ2)lnp(xi,zi|W,σ2)dzi+Const.=i=1Nq(zi){lnp(zi|xi,W,σ2)+lnp(zi)}dzi+Const.

ここで、

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

であるから、結局W,σ2によって最大化していたのは、対数尤度L(W,σ2|D,Z)の、潜在変数の事後分布q(zi)=p(zi|xi,W,σ2)についての期待値だということが分かった。

これより、対数尤度L(W,σ2|D,Z)を最初に用意し、現在のパラメータW,σ2により計算された潜在変数の事後分布q(zi)=p(zi|xi,W,σ2)における期待値を求めた後に、この期待対数尤度を最大化することによって、新たなパラメータW,σ2が得られることが分かった。

これで前回は曖昧になってしまった部分がやっと分かったので一安心した。