单个高维高斯分布
\(d\) 维的高斯分布的密度函数为
\(N(x;\mu,\Sigma)=\frac{1}{\sqrt{(2\pi)^{d}det(\Sigma)}}exp\left[-\frac{1}{2}(x-\mu)^T \Sigma^{-1}(x-\mu) \right]]\)
其中 \(x\) 是一个 \(d\) 维的数据,\(\mu\) 是一个 \(d\) 维的向量,\(\Sigma\) 是一个 \(d\times d\) 的协方差矩阵
混合高斯推导
混合高斯模型的概率密度函数
\(p(x|\Theta)=\sum_k \alpha_k N(x;\mu_k,\Sigma_k)=\sum_k \alpha_k\frac{1}{\sqrt{(2\pi)^d det(\Sigma_k)}}exp\left[-\frac{1}{2}(x-\mu_k)^T \Sigma_k^{-1}(x-\mu_k)\right]\)
其中 \(\Theta\) 包含 \(\{\alpha_k,\mu_k,\Sigma_k\},k=1,2,...,K\)
ELBO 下限函数的推导
\(l(\Theta)=\sum_i log(p(x_i|\Theta))\)
\(=\sum_i log(\sum_{k}p(x_i,z_k|\Theta))\)
\(=\sum_i log(\sum_{k}p(x_i|z_k,\Theta)p(z_k=k))\)
\(= \sum_i log(\sum_{k}Q_k(z_k|x_i,\mu_k,\Sigma_k)\frac{p(x_i|z_k=k,\mu_k,\Sigma_k)p(z_k=k)}{Q_k(z_k|x_i,\mu_k,\Sigma_k)})\)
\(\geq ELBO(\Theta) = \sum_i \sum_k Q_k(z_k|x_i,\mu_k,\Sigma_k) log\frac{p(x_i|z_k=k,\mu_k,\Sigma_k)p(z_k=k)}{Q_k(z_k|x_i,\mu_k,\Sigma_k)}\)
Q 函数的推导
为了使得获得一个最好的 \((\Theta)\) 的 ELBO 下限函数,要求 \(\frac{p(x_i|z_k=k,\mu_k,\Sigma_k)p(z_k=k)}{Q_k(z_k|x_i,\mu_k,\Sigma_k)}=c\),而 \(\sum_k Q_k(z_k|x_i,\mu_k,\Sigma_k)=1\)(分母归一化),因此
\(Q_k(z_k|x_i,\mu_k,\Sigma_k)=\frac{p(x_i|z_k=k,\mu_k,\Sigma_k)p(z_k=k) }{\sum_k p(x_i|z_k=k,\mu_k,\Sigma_k)p(z_k=k)}=\frac{N(x_i|\mu_k,\Sigma_k)\alpha_k}{\sum_k N(x_i|\mu_k,\Sigma_k)\alpha_k}=p(z_k=k|x_i,\mu_k,\Sigma_k)\)
其中 \(p(z_k=k)=\alpha_k\) 为先验概率;GMM 选用的隐变量是 \(z=[z_1,...,z_K]\), 代表数据 \(x_i\) 来自第 \(k\) 个高斯分布的概率。关于隐变量 \(z_k\) 的 Q 函数为 \(Q_k(z_k)=p(z_k=k|x_i,\mu_k, \Sigma_k)\)(给定部分观测数据 \(x_i\) 和参数,\(z_k\) 的后验概率)。不等式由 Jensen 不等式推导得到(\(E(f(x))\geq f(E(x))\) 如果 \(f(x)\) 是一个凸函数)
那么 EM 在 E 步时计算 Q 函数,在 M 步最大化 \(\Theta=\{\alpha_k, \mu_k, \Sigma_k\},k=1,2,...,K\)
GMM 的EM 算法
Initialization
初始化参数 \(\{\alpha_k,\mu_k,\Sigma_k\},k=1,2,...,K\)
E-step
计算 Q 函数 \(Q_k(z_k|x_i,\mu_k,\Sigma_k)=\frac{N(x_i|\mu_k,\Sigma_k)\alpha_k}{\sum_k N(x_i|\mu_k,\Sigma_k)\alpha_k}\)
计算新的 ELBO 函数
\(ELBO(\Theta)=\sum_i\sum_k Q_k(z_k|x_i,\mu_k,\Sigma_k) log\frac{p(x_i|z_k=k,\mu_k,\Sigma_k)p(z_k=k)}{Q_k(z_k|x_i,\mu_k,\Sigma_k)}\)
\(=\sum_i\sum_k Q_k(z_k|x_i,\mu_k,\Sigma_k)log\left(\frac{\alpha_k}{Q_k(z_k|x_i,\mu_k,\Sigma_k)}\frac{1}{\sqrt{(2\pi)^d det(\Sigma_k)}}exp[-\frac{1}{2}(x_i-\mu_k)^T\Sigma_k^T(x_i-\mu_k)]\right)\)
M-step 用更新过后的 \(ELBO(\Theta)\) 对参数 \(\alpha_k,\mu_k,\Sigma_k,k=1,2,...,K\) 分别求导,令导数等于 0,令 \(Q_k(i)=Q_k(z_k|x_i,\mu_k,\Sigma_k)\) 最后得到参数更新公式
更新参数 \(\alpha_k, k=1,2,...,K\), \(\alpha_k=\frac{\sum_i Q_k(i)}{N}\)
更新参数 \(\alpha_k, k=1,2,...,K\), \(\mu_k==\frac{\sum_i Q_k(i)x_i}{\sum_i Q_k(i)}\)
更新参数 \(\alpha_k, k=1,2,...,K\), \(\Sigma_k=\frac{\sum_i Q_k(i)(x_i-\mu_k)(x_i-\mu_k)^T}{\sum_i Q_k(i)}\)
其中 \(N\) 是数据点的数量(假设每个数据点都是独立同分布产生的),\(K\) 是 GMM 中高斯分布的个数
参考 (References)
- https://wjchen.net/post/cn/gmm-em-cn.html