高斯混合模型参数估计详细推导过程

已知多元高斯分布的公式: \[N(x|\mu,\Sigma)=\frac{1}{(2\pi)^{D/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu))\] 其中\(D\)为维度,\(x\)\(\mu\)均为\(D\)维向量,协方差\(\Sigma\)为D维矩阵。我们求得后验概率: \[w^{(i)}_j=Q_i(Z^{i}=j)=P(z^{(i)}=j|x^{(i)};\phi,\mu,\Sigma)\] 在E步,\(w^{(i)}_j\)是一个固定值,然后我们用它来估计似然函数\(L(X,Z;\theta)\)(这里\(\theta=(\phi,\mu,\Sigma)\))在分布\(Z\sim P(Z|X;\theta)\)上的期望\(E_{Z|X,\theta_t}[L(X,Z;\theta)]\)(式子1): \[\begin{split} & \sum^m_{i=1}\sum_{z^{(i)}} Q_i(z^{(i)})\log{\frac{p(x^{(i)},z^{(i)};\phi,\mu,\Sigma)}{Q_i(z^{(i)})}} \\& =\sum^m_{i=1}\sum^k_{j=1} Q_i(z^{(i)}=j)\log{\frac{p(x^{(i)}|z^{(i)}=j;\mu,\Sigma)p(z^{(i)}=j;\phi)}{Q_i(z^{(i)})}} \\& =\sum^m_{i=1}\sum^k_{j=1} w^{(i)}_j\log{\frac{\frac{1}{(2\pi)^{D/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x^{(i)}-\mu_j)^T\Sigma_j^{-1}(x^{(i)}-\mu_j))\cdot\phi_j}{ w^{(i)}_j}} \\\end{split}\] 由于分母\(w^{(i)}_j\)在取对数之后是常数,与参数无关,求导时自然会变成0,所以我们写公式的时候为了简便舍去分母。

\(\mu\)

首先求第\(l\)个模型的\(\mu_l\),对式子1求\(\mu_l\)的偏导,得到式子2: \[\begin{split}& =\nabla_{\mu_l} \sum^m_{i=1}\sum^k_{j=1}w^{(i)}_j\log{\frac{1}{(2\pi)^{D/2}|\Sigma|^{1/2}}\exp(-\frac{1}{2}(x^{(i)}-\mu_j)^T\Sigma_j^{-1}(x^{(i)}-\mu_j))\cdot\phi_j} \\&= -\nabla_{\mu_l}\sum^m_{i=1}\sum^k_{j=1}w^{(i)}_j\frac{1}{2}(x^{(i)}-\mu_j)^T\Sigma_j^{-1}(x^{(i)}-\mu_j) \\&= \frac{1}{2} \sum^m_{i=1}w^{(i)}_l \nabla_{\mu_l}(2\mu_l^T\Sigma^{-1}_l x^{(i)} - \mu_l^T\Sigma^{-1}_j\mu_l)\\&=\sum^m_{i=1}w^{(i)}_l(\Sigma^{-1}x^{(i)}-\Sigma^{-1}\mu_l)\end{split}\] 以上式子推导所需的前提知识有:

  1. \(\Sigma_j\)是对称阵(这里其实\(\Sigma_j\)不一定是对称的,但是在计算之后他和对称阵的效果是一样的,这里CS229上没讲清楚,详见pluskid大神的Regularized Gaussian Covariance Estimation)。因为\(\Sigma_j\)是对称阵,易得\(\Sigma_j^{-1}\)也是对称阵。

  2. \(1 \times 1\)矩阵的转置不变。因为$ x^{(i)} ^{-1}_l _l $是\(1 \times 1\)的矩阵,所以 \[x^{(i)} \Sigma^{-1}_l \mu_l=(x^{(i)} \Sigma^{-1}_l \mu_l)^T=\mu_l^T\Sigma^{-1}_l x^{(i)}\]

  3. 矩阵求导的公式(参考1和2)。设\(x,u,v\)为列向量,有以下式子成立: \[\begin{split}\frac{d(x^T)}{dx} &=I \\\frac{d(Ax)^T}{dx} &=A^T \\\frac{d(u^Tv)}{dx} &=\frac{d(u^T)}{dx}v+\frac{d(v^T)}{dx}u^T \\\end{split}\] 所以 \[\begin{split}\frac{d (\mu_l^T\Sigma^{-1}_j\mu_l)}{d u_l}&= \frac{d (\mu_l^T)}{d \mu_l} \Sigma^{-1}_j\mu_l+\frac{d (\Sigma^{-1}_j\mu_l)^T}{d \mu_l} (\mu_l^T)^T \\&= 2 \mu_l^T\Sigma^{-1}_j\mu_l\end{split}\]

令之前的式子2等于0,我们解得 \[\mu_l=\frac{\sum^m_{i=1}w^{(i)}_l x^{(i)}}{\sum^m_{i=1}w^{(i)}_l}\]

\(\phi\)

然后我们求\(\phi_j\),这个式子1对它偏导之后就形式更加简单: \[\sum^m_{i=1}\sum^k_{j=1} w^{(i)}_j\log{\phi_j}\] 但是需要注意的是,\(\phi_j\)存在一个约束条件\(\sum_{j=1}^K \phi_j =1\),它代表的是取\(k\)个高斯模型中的一个的概率总和为1。为了求得条件极值,我们引入拉格朗日乘子\(\beta\), 设拉格朗日函数为 \[\mathcal{L(\phi)}= \sum^m_{i=1}\sum^k_{j=1} w^{(i)}_j\log{\phi_j}+\beta(\sum^k_{j=1}(\phi_j-1)\] 求导等于0之后我们得到 \[\phi_j=-\frac{\sum^m_{i=1} w^{(i)}_j}{\beta}\] 事情到这里还没完,这个\(\beta\)还能求出来,因为后验概率\(w^{(i)}_j\)之和为1,所以 \[\sum_{j=1}^k \phi_j=-\frac{\sum^m_{i=1} \sum_{j=1}^k w^{(i)}_j}{\beta}=-\frac{\sum^m_{i=1}1}{\beta}=-\frac{m}{\beta}=1\] 得到\(\beta=-m\),最后有 \[\phi_j=\frac{1}{m}\sum^m_{i=1} w^{(i)}_j\]

求$ $

最后,我们来求$ _j\(。CS229的教材上说求这个\)_j$是“entirely straightforward”,真是高估了像我这样数学不好的人- -。

对式子1求偏导,我们有式子3: \[\begin{split}&= -\nabla_{\Sigma_j}\sum^m_{i=1}w^{(i)}_j(\frac{1}{2}\log{|\Sigma_j|}- \frac{1}{2}(x^{(i)}-\mu_j)^T\Sigma_j^{-1}(x^{(i)}-\mu_j))\\&= \sum^m_{i=1}w^{(i)}_j\Sigma^{-1}_j- \sum^m_{i=1}w^{(i)}_j\Sigma_j^{-1}(x^{(i)}-\mu_j)(x^{(i)}-\mu_j)^T\Sigma_j^{-1}\end{split}\]

1. 需要矩阵求导公式:(wikipedia中对multivariate normal distribution的解释(参考3)以及其第6篇参考文献(参考4),<del>其实不用找,PRML的附录C里有。。。</del>)

\[\begin{split}\frac{ \partial }{\partial \Sigma}\log{|\Sigma|} & =\Sigma^{-1} \\\frac{ \partial }{\partial \Sigma}(x-\mu)^T\Sigma^{-1}(x-\mu) & =-\Sigma^{-1}(x-\mu)^T(x-\mu)\Sigma^{-1} \\\end{split}\] 第二条公式应该是根据以下两个公式推出来的: \[\begin{split}\frac{d(a^T Xb)}{d X} &=ab^T \\\frac{d(Y^{-1})}{d Y} &=-Y^{-1}\frac{d Y}{ d X}Y^{-1} \\\end{split}\] 令式子3等于0,我们求得

\[\Sigma_j=\frac{\sum^m_{i=1}w^{(i)}_j(x^{(i)}-\mu_j)(x^{(i)}-\mu_j)^T}{\sum^m_{i=1}w^{i}_j}\]

把他们写在一起,就得到了高斯混合模型的参数估计: \[ \begin{split} & \mu_j=\frac{\sum^m_{i=1}w^{(i)}_jx^{(i)}}{\sum^m_{i=1}w^{(i)}_j} \\& \phi_j=\frac{1}{m}\sum^{m}_{i=1}w^{(i)}_j \\& \Sigma_j=\frac{\sum^m_{i=1}w^{(i)}_j(x^{(i)}-\mu_j)(x^{(i)}-\mu_j)^T}{\sum^m_{i=1}w^{i}_j} \\\end{split}\] 参考文献: 1.矩阵求导 2.Matrix Reference Manual 3.Estimation of covariance matrices 4.^ Dwyer, Paul S. (June 1967). “Some applications of matrix derivatives in multivariate analysis”. Journal of the American Statistical Association (Journal of the American Statistical Association, Vol. 62, No. 318) 62 (318): 607–625. doi:10.2307/2283988. JSTOR 2283988. 5.stanford的CS229课程