このQiitaの記事やこのブログを参考に書いた。
ELBOという重要な概念についてはここを参考 📄
ELBOとEM Algorithmについて
ELBOについて
ELBOとは、以下のようなもの。
ELBO=Eq(z∣x)[logp(x,z)−logq(z∣x)]=Eq(z∣x)[logp(x∣z)]+Eq(z∣x)[logp(z)−logq(z∣x)] 対数尤度
基本的には尤度は非常に大きい、小さい値を扱うことを考えて、計算精度の問題上、対数で扱う。
データ X の背後にあるパラメタ θ を学習したい。しかし、隠れパラメタがある都合上上手くこのままでは難しい。
ここで、隠れパラメタ Zだとする。以下のように周辺確率に分解でき、対数を取る事ができる。
p(X∣θ)=∫p(X,Z∣θ)dZlogp(X∣θ)=log∫p(X,Z∣θ)dZ 実際には、隠れ変数Zは明示的に設計者が決めなければならない。なぜならば、以降のEステップもMステップも明確にZについての条件付確率、条件付期待値を求めるためである。
しかし、 log ∫は扱いづらい!(以下の参考資料では log Σとなっている)。ここで、いい感じの関数 q(Z)を導入することで、以下のように式変形できる。なお、 qが何であるかは明示的に決める必要はない。以下のEステップで自明に決まるからである。
∫q(Z)q(Z)p(X,Z∣θ)dZ=Eq(Z)[q(Z)p(X,Z∣θ)] このように、 q(Z)についての期待値に変形できる。
そして、 log が上に凸の関数であるので、イェンゼンの不等式を用いると以下のように変形できる。汎関数 Lという変分下限を得ることができる。
logE[X]≤E[logX]log∫q(Z)q(Z)p(X,Z∣θ)dZ=logEq(Z)[q(Z)p(X,Z∣θ)]≥Eq(Z)[logq(Z)p(X,Z∣θ)]=∫q(Z)logq(Z)p(X,Z∣θ)dZ=L(q,θ) ELBOとの関係について
ELBOは、以下のように定義されている。
ELBO=Eq(z∣x)[logp(x,z)−logq(z∣x)]=Eq(z∣x)[logp(x∣z)]+Eq(z∣x)[logp(z)−logq(z∣x)] 上の得られた変分下限は、以下のようになる。
Eq(Z)[logq(Z)p(X,Z∣θ)]=Eq(Z)[logp(X,Z∣θ)−logq(Z)] ここでは、本来のELBOと違うのは、q(z∣x)→q(Z)である。
- ELBOでは、変分推論で使われているq(z∣x)は、本来わからないp(z∣x)の代替となるような分布を人が選んでそのパラメタをいじって学習させている。
- EM Algorithmでは、q(Z)はただの関数であり、特にp(Z)やp(Z∣X,θ)を近似するために選んだわけではない。
差分について
ELBOと似た形である以上、以下のように差分はKLダイバージェンスKL[q(Z)∣p(Z∣X, θ)]になる。下図参照。
log p(X∣θ) = L(q, θ) + KL[q(Z)∣p(Z∣X, θ)] KLダイバージェンスは非負なので、 log p(X∣θ)ではなく、 L(q, θ)の最大化を代わりに行うことで結果的に p(X∣θ)の最大化をしよう!(下限を大きくするので必ず最善というわけではないが)というのがEM Algorithm。
EステップとMステップ
というわけで、目標は以下のELBOを最大化すること。
Eq(Z)[logq(Z)p(X,Z∣θ)]=Eq(Z)[logp(X,Z∣θ)−logq(Z)] これを、q,θを交互に動かすことで最大化をしていく。
- EステップはExpectation。p(X,Z∣θ)のパラメタたるθを固定して、 qを動かして最大化をする。
- MステップはMaximaization。qを固定して、 θを動かして最大化をする。
E->M->E->M…と行い、収束したら終了。
Eステップ: qを動かす
log p(X∣θ) = L(q, θ) + KL[q(Z)∣p(Z∣X, θ)] この式において、 θを固定しているので、左辺は定数となる。この時、 qを動かして L(q, θ)を最大化するということは、 KL[q(Z)∣p(Z∣X, θ)]の最小化と同じ意味である。
KLダイバージェンスが0ということは、解は q(Z) = p(Z∣X, θ)である。
なので、明示的にqについて定める必要はなく、既知のp(Z∣X)がq(Z)であればいい。
Mステップ: θを動かす
q(Z) = p(Z∣X, θold)を代入して解く。ここで、θoldは今までの θであり、パラメタ θの最適化を行う際には定数として固定するものである。このように一方を固定してもう一方を最適化するのはよくある手法。
L(q,θ)=∫q(Z)logq(Z)p(X,Z∣θ)dZ=∫p(Z∣X,θold)logp(Z∣X,θold)p(X,Z∣θ)dZ=∫p(Z∣X,θold)logp(X,Z∣θ)dZ−∫p(Z∣X,θold)−logp(Z∣X,θold)dZ=∫p(Z∣X,θold)logp(X,Z∣θ)dZ−const このように、前半だけ θで最小化できればよい。つまり、以下の対数尤度の条件付期待値がθにおいて最適化できるということであれば、EMアルゴリズムを用いて最終的に最適解へ収束できる。
∫p(Z∣X, θold)log p(X, Z∣θ)dZ = EZ∣X, θold[log p(X, Z∣θ)] 解析的に解ける場合
例えば、指数分布族やガウス分布なら解析的に解ける。
ガウス分布の例を時間会ったらここに乗せる。
解析的に解けない場合
積分を近似的に解いてから、勾配を計算し、勾配上昇法やニュートン法でやるしかない。