版权声明:原创作品,欢迎转载,但转载请以超链接形式注明文章来源(planckscale.info)、作者信息和本声明,否则将追究法律责任。
最近比较无聊,干脆把这个系列补完。本文的内容是我表妹之前在芝大读书时的一个小题目,作为EM算法的一个比较复杂的实例来演示是不错的。由于我没找到引文,就不引用了。我不是做统计的,有错误欢迎留言。
\subsubsection{解析推导}
这是一个更为复杂的估计问题实例。要估计的分布是样本空间里一组函数图形对应的分布。具体说来,我们有随机变量
,其中
,
,
,其中
是混合高斯模型中的类别标签变量,对于不同的
值,
和
存在一个不同的潜在函数关系
,其中
为凸函数。概率模型表述为
(1) ![]()
现在假定
不可观测,我们从一系列观测值
中估计出模型的参数
的真实值
。
接下来我们用EM算法来处理这一问题。设
为观测样本,
为观测样本对应的隐变量。我们首先计算![]()
(2) 
类似于边缘分布和条件分布的因子分解性质,可以证明对任意满足
的概率分布
,有
(3) ![]()
这意味着
可以分解成在每个样本上各自均值之总和的形式
(4) ![Rendered by QuickLaTeX.com \begin{eqnarray*} Q(\boldsymbol{\theta}\vert\boldsymbol{\theta}^{(t)}) &\equiv& E_{\mathcal{Z}\vert \mathcal{X},\mathcal{Y},\boldsymbol{\theta}^{(t)}}[\log L(\boldsymbol{\theta};\mathcal{X},\mathcal{Y},\mathcal{Z})]\\ &=& \sum_i E_{z_i\vert \boldsymbol{x}_i,y_i,\boldsymbol{\theta}^{(t)}}[\log L(\boldsymbol{\theta};\boldsymbol{x}_i,y_i,z_i)] \end{eqnarray*}](https://mindspectrum.xyz/wp-content/ql-cache/quicklatex.com-e0f3e0d59532b16db25bedd83e2f25e4_l3.png)
我们把该性质的证明留到后面。
于是
(5) ![Rendered by QuickLaTeX.com \begin{eqnarray*} Q(\boldsymbol{\theta}\vert\boldsymbol{\theta}^{(t)}) &=&\sum_{ij} p(z_i=j\vert \boldsymbol{x}_i,y_i,\boldsymbol{\theta}^{(t)}) \log L(\boldsymbol{\theta};\boldsymbol{x}_i,y_i,z_i=j)\\ &=&\sum_{ij} \gamma_{ij}^{(t)} \log L(\boldsymbol{\theta};\boldsymbol{x}_i,y_i,z_i=j)\\ &=&\sum_{ij} \gamma_{ij}^{(t)} [\log \pi_j - \log\sigma_j - \frac{1}{2}\log{2\pi} - \frac{(y_i-m_j(\boldsymbol{x}_i))^2}{2\sigma_j^2}] \end{eqnarray*}](https://mindspectrum.xyz/wp-content/ql-cache/quicklatex.com-90b283e746ac12213651537d5d941b96_l3.png)
需要注意的是
包含了无穷个参数需要优化,为了约化这一问题,我们将其离散化,取
为优化参数,仍然简记为
.这样,
被约化到用
个参数来表示。
接下来我们需要求解的极大化问题为
(6) 
这里我们为
加入了凸函数的形状约束。约束的几何意义很明确,即\textbf{函数总是位于每一点的切线之上方}。
由于
中
的极大化和其他参数相互独立,因而可将问题解耦。问题简化为两个子问题,其中
参数对应的子问题为
(7) 
可以求出解析解,即
(8) 
参数对应的子问题
(9) ![Rendered by QuickLaTeX.com \begin{equation*} \left\{ \begin{aligned} \boldsymbol{m}^{(t+1)}&=argmax_{\boldsymbol{m},\boldsymbol{\beta}} \sum_{ij}\gamma_{ij}^{(t)}[- \log\sigma_j - \frac{(y_i-m_{ji})^2}{2\sigma_j^2}]\\ &=\sum_j argmax_{\boldsymbol{m},\boldsymbol{\beta}}[-N\log\sigma_j-\frac{\sum_i \gamma_{ij}^{(t)}(y_i-m_{ji})^2}{2\sigma_j^2}]\\ &m_{jk}-m_{ji} \geq \boldsymbol{\beta}_{ji}^{T} (\boldsymbol{x}_k-\boldsymbol{x}_i)\qquad \forall i,j,k \end{aligned} \right. \end{equation*}](https://mindspectrum.xyz/wp-content/ql-cache/quicklatex.com-7eaa3a93a8cb3f4dfad9a59f33a23f4f_l3.png)
是个二次规划问题。由于
只出现在具有相同
值的项中,这意味着按不同的
值把项分组,每一组都是独立变化的,因而可以作为一个独立的子问题来最大化。可以发现,\textbf{这里的Gauss混合模型中每个component都对应于一个带约束的最小二乘问题}。这一性质可以用来降低计算复杂度,提高算法效率。
在一些情况下,二次规划中的约束可以大幅度的约减。第一种情况是当
为单变量时。不失一般性的,我们假设观测样本已经按照
的大小做升序排列,此时可以用二阶导数非负来作为凸性约束。于是约束可约化为
(10) ![]()
这里
代表了第
个component在第
处导数的估计值。需要注意的是,为了得到一点上导数(切线)的估计,我们需要两个约束,约束在左右两侧的函数值都要位于切线上方。
另一种情况则是当
为多维的向量,且有
时。此时每个分量
的凸性意味着
也是凸的,因此约束可写为
(11) ![]()
即对向量函数的每个分量,都满足\eqref{mConstraint1D}所示的约束。
最后我们来证明
的分解性质,其中
为任意满足
的概率分布
(12) ![Rendered by QuickLaTeX.com \begin{eqnarray*} &&E_{q(\mathcal{Z})}[\log L(\mathcal{X},\mathcal{Z})]\\ &=&\sum_{\mathcal{Z}} q(\mathcal{Z})\log p(\mathcal{X},\mathcal{Z})\\ &=&\sum_i \sum_{\mathcal{Z}} q(\mathcal{Z}) \log p(\boldsymbol{x}_i,z_i) \end{eqnarray*}](https://mindspectrum.xyz/wp-content/ql-cache/quicklatex.com-48a73003d435bd713d6d13ee7b406fee_l3.png)
可见对每个sample,都需要在分布
上求
的均值。但由于
中包含大量无关的
,它们都应该被加和为1,从而只剩下
:
(13) ![Rendered by QuickLaTeX.com \begin{eqnarray*} &=&\sum_i \sum_{\{z_1,...,z_N\}} \prod_j q_j(z_j) \log p(\boldsymbol{x}_i,z_i)\\ &=&\sum_i \sum_{z_i}\{\underbrace{\sum_{\{z_1,.\slashed z_i.,z_N\}} \prod_{j\neq i} q_j(z_j)}_{=1}\} q_i(z_i) \log p(\boldsymbol{x}_i,z_i)\\ &=&\sum_i \sum_{z_i} q_i(z_i)\log p(\boldsymbol{x}_i,z_i)\\ &=&\sum_i E_{q_i(z_i)}[\log L(\boldsymbol{x}_i,z_i)] \end{eqnarray*}](https://mindspectrum.xyz/wp-content/ql-cache/quicklatex.com-3394755b9ef063a5f92cfe4da9f8efe2_l3.png)
\subsubsection{算法实现}
算法实现主要需要注意的是防止数值下溢带来的除零问题。技术上,避免概率连乘积,避免指数,让计算的中间结果尽量在对数域中表示是一些基本技巧。
首先,在计算
时,可能会出现某个样本点远离所有component的情况,此时分子分母都容易下溢为零,而出现
的情况。我们做如下处理
(14) 
算法中需要计算对数似然函数的上升率,来判断算法的终止条件是否满足。对数似然函数中有大量的概率连乘积,我们作如下处理来消除之
(15) 
对于二次规划子问题,我们需要将其化为标准形式,从而可以利用现成的二次规划库来求解。





![Rendered by QuickLaTeX.com \begin{eqnarray*} Q^{(t)}(\boldsymbol{\theta})\equiv Q(\boldsymbol{\theta}\vert\boldsymbol{\theta}^{(t)})&\equiv& E_{\mathcal{Z}\vert \mathcal{X},\boldsymbol{\theta}^{(t)}}[\log L(\boldsymbol{\theta};\mathcal{X},\mathcal{Z})]\\ \boldsymbol{\theta}^{(t+1)}&=&\mathrm{argmax}_{\boldsymbol{\theta}} Q(\boldsymbol{\theta}\vert\boldsymbol{\theta}^{(t)}) \end{eqnarray*}](https://mindspectrum.xyz/wp-content/ql-cache/quicklatex.com-b658d74be833eb15ab019c50fa4bb12d_l3.png)
























