固定: σ₁=σ₂=1.5、π₁=π₂=0.5(初始值)。真值: μ=(0, 4), σ=(1.0, 1.5), π=(0.4, 0.6), N=200。
暂停时,拖动滑块即可即时更新结果。
上:直方图(灰色)/真混合密度(黑色破线)/估计混合密度(蓝色实线)/成分1(绿色破线)/成分2(红色破线)。下:每次迭代的对数似然 LL[t](红线,单调增加)。
2成分高斯混合模型 $p(x)=\pi_1\mathcal{N}(x|\mu_1,\sigma_1^2)+\pi_2\mathcal{N}(x|\mu_2,\sigma_2^2)$ 通过反复进行E步骤和M步骤的EM法进行估计。
E步骤(责任度 $\gamma_{ik}$ 是数据 $x_i$ 由成分 $k$ 生成的事后概率):
$$\gamma_{ik}=\frac{\pi_k\,\mathcal{N}(x_i|\mu_k,\sigma_k^2)}{\sum_j \pi_j\,\mathcal{N}(x_i|\mu_j,\sigma_j^2)}$$M步骤(以责任度为权重更新 $\mu_k, \sigma_k^2, \pi_k$):
$$N_k=\sum_i \gamma_{ik},\quad \mu_k\leftarrow\frac{1}{N_k}\sum_i \gamma_{ik}\,x_i,\quad \sigma_k^2\leftarrow\frac{1}{N_k}\sum_i \gamma_{ik}(x_i-\mu_k)^2,\quad \pi_k\leftarrow\frac{N_k}{N}$$对数似然(保证EM每次迭代单调增加):
$$\mathrm{LL}=\sum_i \log\!\left(\sum_k \pi_k\,\mathcal{N}(x_i|\mu_k,\sigma_k^2)\right)$$LL的单调增加可用于检查实现的正确性。如果迭代中LL下降,说明计算公式有缺陷。