版权声明:原创作品,欢迎转载,但转载请以超链接形式注明文章来源(planckscale.info)、作者信息和本声明,否则将追究法律责任。
最近比较无聊,干脆把这个系列补完。本文的内容是我表妹之前在芝大读书时的一个小题目,作为EM算法的一个比较复杂的实例来演示是不错的。由于我没找到引文,就不引用了。我不是做统计的,有错误欢迎留言。
\subsubsection{解析推导}
这是一个更为复杂的估计问题实例。要估计的分布是样本空间里一组函数图形对应的分布。具体说来,我们有随机变量,其中,,,其中是混合高斯模型中的类别标签变量,对于不同的值,和存在一个不同的潜在函数关系,其中为凸函数。概率模型表述为
(1)
现在假定不可观测,我们从一系列观测值中估计出模型的参数的真实值。
接下来我们用EM算法来处理这一问题。设为观测样本,为观测样本对应的隐变量。我们首先计算
(2)
类似于边缘分布和条件分布的因子分解性质,可以证明对任意满足的概率分布,有
(3)
这意味着可以分解成在每个样本上各自均值之总和的形式
(4)
我们把该性质的证明留到后面。
于是
(5)
需要注意的是包含了无穷个参数需要优化,为了约化这一问题,我们将其离散化,取为优化参数,仍然简记为.这样,被约化到用个参数来表示。
接下来我们需要求解的极大化问题为
(6)
这里我们为加入了凸函数的形状约束。约束的几何意义很明确,即\textbf{函数总是位于每一点的切线之上方}。
由于中的极大化和其他参数相互独立,因而可将问题解耦。问题简化为两个子问题,其中参数对应的子问题为
(7)
可以求出解析解,即
(8)
参数对应的子问题
(9)
是个二次规划问题。由于只出现在具有相同值的项中,这意味着按不同的值把项分组,每一组都是独立变化的,因而可以作为一个独立的子问题来最大化。可以发现,\textbf{这里的Gauss混合模型中每个component都对应于一个带约束的最小二乘问题}。这一性质可以用来降低计算复杂度,提高算法效率。
在一些情况下,二次规划中的约束可以大幅度的约减。第一种情况是当为单变量时。不失一般性的,我们假设观测样本已经按照的大小做升序排列,此时可以用二阶导数非负来作为凸性约束。于是约束可约化为
(10)
这里代表了第个component在第处导数的估计值。需要注意的是,为了得到一点上导数(切线)的估计,我们需要两个约束,约束在左右两侧的函数值都要位于切线上方。
另一种情况则是当为多维的向量,且有时。此时每个分量的凸性意味着也是凸的,因此约束可写为
(11)
即对向量函数的每个分量,都满足\eqref{mConstraint1D}所示的约束。
最后我们来证明的分解性质,其中为任意满足的概率分布
(12)
可见对每个sample,都需要在分布上求的均值。但由于中包含大量无关的,它们都应该被加和为1,从而只剩下:
(13)
\subsubsection{算法实现}
算法实现主要需要注意的是防止数值下溢带来的除零问题。技术上,避免概率连乘积,避免指数,让计算的中间结果尽量在对数域中表示是一些基本技巧。
首先,在计算时,可能会出现某个样本点远离所有component的情况,此时分子分母都容易下溢为零,而出现的情况。我们做如下处理
(14)
算法中需要计算对数似然函数的上升率,来判断算法的终止条件是否满足。对数似然函数中有大量的概率连乘积,我们作如下处理来消除之
(15)
对于二次规划子问题,我们需要将其化为标准形式,从而可以利用现成的二次规划库来求解。