8.5 EMアルゴリズム:見えない所属を確率で推定する

最大尤度推定をやりたいだけなのに、「観測対数尤度の中に和がある」だけで、なぜここまで難しくなるのか——その壁を一度はっきり見せ、そこに潜在変数という補助線を引くと、推定が驚くほどシンプルになる構造を一緒に見ていきましょう。

中心となる例は二成分ガウス混合モデルです。各データ点が「どちらの山から生まれたか」という見えない情報(潜在変数)を、現在のパラメータから確率として推定し、その確率を重みに使って再推定する——この「Expectation」と「Maximization」の繰り返しが、EMアルゴリズムの本質です。さらに、このアルゴリズムが実は一つの関数Fの交互最大化であるという、変分推論への扉となる深い視点まで辿り着きます。

なぜ「和」がひとつあるだけで難しくなるのか

ここまで、尤度を最大化することでパラメータを推定してきました。正規分布の平均や分散、線形回帰の係数——どれも、対数尤度を微分してゼロと置けば、閉じた形でパラメータが求まりました。

ところが、現実のデータは「ひとつの単純な分布」から生まれているとは限りません。たとえば、人の身長を性別を区別せずに集めたヒストグラムは、ふたつの山が重なったような形になります。テストの点数も、得意な集団と苦手な集団が混ざると、ふた山になる。こうしたデータをひとつの正規分布で表そうとすると、モデルの平均は2つの山のあいだの空白に落ちてしまい、誰の身長も誰の点数も正しく表せないモデルになります。

ふた山のヒストグラムが2成分のガウス分布に分解される様子
グレーのヒストグラム(ふた山)に、1つの分布を当てはめようとすると失敗する。青と黄の2成分の和(赤)がきれいに一致する

そこで、「2つの正規分布の重ね合わせ」でデータを表現したい。たとえば次の形です。

g(y) = (1-\pi)\, \phi_{\theta_1}(y) + \pi\, \phi_{\theta_2}(y)

ここで \phi_{\theta_k}(y) は平均 \mu_k、分散 \sigma_k^2 の正規分布の密度関数です。意味は単純で、確率 1-\pi で成分1(青)から、確率 \pi で成分2(黄)からデータが生まれると言っています。これが混合モデルの基本的な考え方です。

ところが、N個のデータを集めて観測対数尤度を書き下した瞬間、世界は一気に複雑になります。

\ell(\theta;\,\mathbf{Z}) = \sum_{i=1}^{N} \log\!\Big[(1-\pi)\,\phi_{\theta_1}(y_i) + \pi\,\phi_{\theta_2}(y_i)\Big]

log の中に和がある」——これがすべての原因です。微分しても和の分母が残り続け、パラメータ \mu_1, \mu_2, \sigma_1, \sigma_2, \pi をきれいに分離できません。閉じた形の解は得られず、勾配法でも初期値に敏感で、しばしば意図しない場所に収束します。

このページでは、ここをひっくり返す方法——EMアルゴリズムを学びます。鍵は「見えていない情報」をあえて変数として導入することです。

もし「所属」が見えていたら——完全データの世界

ここで、思考実験をひとつしましょう。

各データ点 y_i について、「どちらの山から生まれたか」を表すラベル \Delta_i \in \{0,1\} があると仮定します。\Delta_i = 0 なら成分1(青)から、\Delta_i = 1 なら成分2(黄)から生まれたとします。これは現実には観測されない潜在変数ですが、今は仮に見えているとしましょう。

観測点に青か黄のラベルが付き、各色ごとにガウス分布が推定される様子
グレーの点に「どちらの山か」のラベルが付くと(青=成分1、黄=成分2)、それぞれの平均と分散が簡単に求まる

ラベルが見えていると、各観測点の同時確率は \Pr(y_i, \Delta_i) = \Pr(\Delta_i)\,\Pr(y_i \mid \Delta_i) と書け、全データで対数を取ると対数尤度は劇的に変わります。

\ell_0(\theta;\,\mathbf{Z},\boldsymbol{\Delta}) = \sum_{i=1}^{N}\Big[(1-\Delta_i)\log\phi_{\theta_1}(y_i) + \Delta_i\log\phi_{\theta_2}(y_i)\Big] + \sum_{i=1}^{N}\Big[(1-\Delta_i)\log(1-\pi) + \Delta_i\log\pi\Big]

注目すべきは、log の中にもう和がないことです。各データ点は \Delta_i によって「青に属するか黄に属するか」が決まるので、その点の貢献は片方のガウスの対数だけで書けます。

こうなれば話は早い。青い点だけを集めて平均と分散を計算すれば \mu_1, \sigma_1^2 が出ます。黄色い点だけ集めれば \mu_2, \sigma_2^2 が出ます。\pi は黄色い点の割合そのものです。教科書的に解ける普通の最尤推定に戻るわけです。

これが完全データ対数尤度(complete-data log-likelihood)と呼ばれる量です。観測データ \mathbf{Z} と潜在データ \boldsymbol{\Delta} をあわせた「完全データ」のもとでの対数尤度です。

問題は——実際には \Delta_i は見えないということに尽きます。だが、EMのアイデアはここで生まれます。「見えないなら、いまのパラメータのもとで期待値を計算してしまえばよい」——これがEMの核心です。

責任度——「青っぽさ」と「黄っぽさ」を確率で表す

\Delta_i は本当は見えません。でも、いまの推定値 \hat\theta のもとで、「y_i がもし生成されているなら、それが成分2から来た確率はどれくらいか?」という事後確率を考えることはできます。

ベイズの定理から直接書けます。

\hat\gamma_i \;=\; \Pr(\Delta_i = 1 \mid y_i,\,\hat\theta) \;=\; \frac{\hat\pi\,\phi_{\hat\theta_2}(y_i)}{(1-\hat\pi)\,\phi_{\hat\theta_1}(y_i) + \hat\pi\,\phi_{\hat\theta_2}(y_i)}

分子は「黄から y_i が生まれる経路の同時確率」、分母は「青と黄の両方の経路を足した周辺密度」です。割り算することで「y_i を観測したという条件のもと、それが黄経由だった事後確率」になります——これがベイズの定理の中身です。この量を責任度(responsibility)と呼びます。「y_i という観測の生成について、成分2がどれだけ責任を持つか」という比喩です。

観測点が責任度に応じて青から黄へのグラデーションに色づく様子
左の点ほど青(成分1から来た確率が高い)、右の点ほど黄(成分2)、中央の点は中間色(どちらとも言えない)。責任度の棒グラフが各点の上に立つ

具体的に見てみましょう。y_i が成分2の山の中心 \mu_2 にとても近い場所にあれば、\phi_{\hat\theta_2}(y_i) は大きく、\phi_{\hat\theta_1}(y_i) はほぼ0。だから \hat\gamma_i は1に近く、「ほぼ確実に黄」となります。逆に成分1の山にいれば \hat\gamma_i \approx 0。2つの山のちょうど中間にいる点は \hat\gamma_i \approx 0.5、つまり「どちらとも言えない」となります。

ここがEMの最初の重要なジャンプです。前節でのハードラベル \{0,1\} を、[0,1] の連続値に置き換えます。各データ点は「完全に青」か「完全に黄」かではなく、確率的にどちらにも属するのです。これがソフトな割り当て、別名 E-step(Expectation step)です。

この見方は、K-meansクラスタリングと比較すると際立ちます。K-meansは責任度を強制的に \{0,1\} に丸めた「ハードEM」と見なせます。EMはそれを確率の世界に解放したものです。

M-step——責任度を重みにした加重最尤推定

責任度 \hat\gamma_i が手に入ったら、次は何をするか。

セクション2で見たように、もし \Delta_i が見えていれば、青の点だけ集めて平均を取れば \mu_1 が、黄の点だけ集めれば \mu_2 が求まります。M-step(Maximization step)はこれを重み付きでやります。「y_i\hat\gamma_i だけ黄に貢献し、1-\hat\gamma_i だけ青に貢献する」と考えるのです。

責任度に応じた矢印の太さで各点が重心を引っ張る様子
黄っぽい点ほど太い矢印で黄の重心(縦白線)を引っ張る。青っぽい点ほど太い矢印で青の重心を引っ張る。矢印の太さが責任度を表している

具体的には次のように更新します。

\hat\mu_1 = \frac{\sum_{i=1}^N (1-\hat\gamma_i)\,y_i}{\sum_{i=1}^N (1-\hat\gamma_i)}, \qquad \hat\mu_2 = \frac{\sum_{i=1}^N \hat\gamma_i\,y_i}{\sum_{i=1}^N \hat\gamma_i}
\hat\sigma_1^2 = \frac{\sum_{i=1}^N (1-\hat\gamma_i)(y_i-\hat\mu_1)^2}{\sum_{i=1}^N (1-\hat\gamma_i)}, \qquad \hat\sigma_2^2 = \frac{\sum_{i=1}^N \hat\gamma_i(y_i-\hat\mu_2)^2}{\sum_{i=1}^N \hat\gamma_i}
\hat\pi = \frac{1}{N}\sum_{i=1}^N \hat\gamma_i

直感としては、\hat\mu_2黄っぽい点ほど強く引き寄せる重心です。中央の点は半分しか引っ張らないし、青っぽい点はほとんど黄の平均に寄与しません。\hat\pi は「すべての点の責任度の平均」、つまり期待されるデータ点の黄成分の割合です。

この更新は実は、完全データ対数尤度 \ell_0\Delta_i\hat\gamma_i に置き換えた量——Q関数——を最大化することと等しいです。

Q(\theta'\!,\,\hat\theta) \;=\; \mathbb{E}_{\hat\theta}\!\left[\,\ell_0(\theta'\!;\,\mathbf{T}) \,\big|\, \mathbf{Z}\,\right]

期待値 \mathbb{E}_{\hat\theta}[\cdot \mid \mathbf{Z}] は「現在のパラメータ \hat\theta と観測 \mathbf{Z} のもとで、見えない \boldsymbol{\Delta} について平均をとる」という意味で、これが \Delta_i\hat\gamma_i に置き換える操作の正体です。E-stepで \hat\gamma_i を計算し、M-stepで Q を最大化——これがアルゴリズム全体の核です。

アルゴリズム全体と単調な収束

ここまでをまとめると、EMアルゴリズムは次のようにシンプルです。

  1. 初期化\hat\mu_1, \hat\sigma_1^2, \hat\mu_2, \hat\sigma_2^2, \hat\pi を適当に決める
  2. E-step:いまのパラメータのもとで \hat\gamma_i を計算する
  3. M-step\hat\gamma_i を重みに、加重最尤推定でパラメータを更新する
  4. 収束まで 2, 3 を繰り返す
反復ごとに青黄のガウスがデータの山に近づき、右パネルで対数尤度が単調上昇する様子
左:反復ごとに青と黄のガウスがデータの2山にフィットしていく。右:観測対数尤度が反復のたびに必ず上がる(単調増加)

このループの肝心な性質は、観測対数尤度 \ell(\theta;\,\mathbf{Z}) が反復ごとに必ず増加することです。なぜか。

観測対数尤度は次のように分解できます。

\ell(\theta';\,\mathbf{Z}) - \ell(\theta;\,\mathbf{Z}) \;=\; \big[Q(\theta',\theta) - Q(\theta,\theta)\big] - \big[R(\theta',\theta) - R(\theta,\theta)\big] \;\geq\; 0

ここで R(\theta',\theta) = \mathbb{E}_{\theta}[\log \Pr(\mathbf{Z}^m \mid \mathbf{Z},\theta') \mid \mathbf{Z}] です。M-stepで \theta' = \arg\max Q(\theta',\theta) を選ぶので第一の括弧は非負です。一方、第二の括弧 R(\theta',\theta) - R(\theta,\theta) は常に非正です——これはKLダイバージェンスが常に0以上という基本性質から従います。

EMは観測尤度を絶対に下げない。これは勾配法のように学習率の調整に悩む必要がなく、各ステップが「安全に上る」ことを保証する強力な性質です。

ただし注意が必要です。上るのは「単調」ですが、たどり着くのは「局所最大」です。初期値が悪いと、最善とは違うピークで止まることがあります。実装では、複数の初期値から走らせて最良のものを選ぶのが標準的です。

EMの正体——F関数の上での交互最大化

最後に、EMをもう一段抽象化した視点を紹介します。これは現代の変分推論やELBOの話に直結する重要な見方で、知っておくとEMが単なるレシピではなく「最適化として何をやっているのか」が一気に見えます。

潜在変数 \mathbf{Z}^m の上に任意の分布 \tilde P(\mathbf{Z}^m) を考えましょう。これは「いま潜在変数がどう分布していると見立てるか」という、私たちが自由に選べる仮の分布です。そして、\theta\tilde P の2つを変数とする関数を定義します。

F(\theta',\,\tilde P) \;=\; \mathbb{E}_{\tilde P}\!\left[\ell_0(\theta';\,\mathbf{T})\right] \;-\; \mathbb{E}_{\tilde P}\!\left[\log \tilde P(\mathbf{Z}^m)\right]

右辺第二項 -\mathbb{E}_{\tilde P}[\log \tilde P] は情報理論でのエントロピーで、「\tilde P がどれくらいばらけているか」を測ります。第一項は「\tilde P で見立てた潜在変数のもとでの完全データ尤度の期待値」です。この F 関数は変分ベイズでいう ELBO(Evidence Lower BOund)とも呼ばれます。

驚くべきことに、F は常に観測対数尤度を下から押さえる量——つまり F(\theta,\tilde P) \leq \ell(\theta;\,\mathbf{Z}) が成り立ち、等号が成立するのは \tilde P が真の事後分布のときだけです。

パラメータ空間と潜在分布空間の等高線地形の上でEMが階段状に登っていく様子
横軸がパラメータ θ、縦軸が潜在分布 P̃ の概念的な空間。E-step(縦方向)とM-step(横方向)を交互に繰り返し、F関数の最大値(中心)に向かって階段状に登る。上部の曲線は観測対数尤度の断面

EMの各ステップは、この一つの関数 F を上る2種類の最大化として書けます。

つまりEMは、F という下界を「\theta 方向」と「\tilde P 方向」に交互に上る座標上昇法だったのです。

\text{E-step:}\quad \tilde P^\ast(\mathbf{Z}^m) = \Pr(\mathbf{Z}^m \mid \mathbf{Z},\theta)
\text{M-step:}\quad \theta^{(j+1)} = \arg\max_{\theta'} Q(\theta',\,\theta^{(j)})

この見方が強力なのは、様々な拡張への扉を開くからです。

EMはこうして、混合モデルを超えて、HMM(隠れマルコフモデル)、トピックモデル(LDA)、変分オートエンコーダへの入り口になります。「見えない変数を確率として扱い、下界を交互最適化する」——この設計思想こそが、EMが今でも一線で使われ続けている理由です。