EM算法是什么?什么是E(Epectation)?什么是M(Maximization)?什么又是公式里面出现的Q函数?这些公式都是怎么推导的?
极大似然和EM(Expectation Maximization)算法,与其说是一种算法,不如说是一种解决问题的思想,解决一类问题的框架,是很多具体算法的基础。
一、EM算法的背景和推导
EM算法主要是用在概率图中参数学习上面,如果具有完整观测数据集(指概率图中的所有变量都能观测到,即观测集中每条样本都包含了图中所有变量的观测值),直接用极大似然估计就能解决;但如果我们无法观测到图中所有的变量的,观测样本数据只包含图中部分变量的观测值, 这时我们称为不完整观测(Partial Observations)。所以这篇文章通过图模型的不完整观测的参数学习来理解EM算法。
1. 隐变量
我们把模型中无法观测到的变量称为隐变量或者潜在变量(Latent variable)。 潜变量是不能直接观测到的, 包含潜变量的模型称为潜变量模型 (latent variable models, LVM)。 此时可以把模型中的变量分为两类,一类是可以观测(有观测样本)到的变量集合,称为可观测变量或显变量, 用符号
观测数据的对数似然函数也就变成了如下形式:
由于包含隐变量
2. Jensen不等式
因为存在求和符号,所以可以转化成求平均,所以我们可以用Jensen不等式来改变对数似然函数的形式,如果函数是个上凹函数:
我们为对数似然函数找到了一个下界函数,且无论这个
我们令
所以我们可以进行迭代,通过上一轮的参数值和观测数据得到隐变量的后验概率分布
我们使用一个辅助函数
这个辅助函数中对数的内部就是模型的联合概率,这个与完整数据观测的对数似然函数一样了, 可以方便的进行因子分解后求参数的偏导, 只需要极大化这个辅助函数得到本轮的参数值即可。
由于极大化的辅助函数是一个关于隐变量后验分布的期望形式,因此被称为期望最大化(Expectation-Maximization)算法,一般简称为EM算法。
3. EM算法
我们整理一下算法的执行过程,EM算法是一个迭代式的算法, 每次迭代有两个过程:E(Expectation)步骤和M(Maximization)步骤, 交替的执行这两个过程,直到参数收敛。
- 初始: 初始化模型的参数,可以选择随机初始化赋值,也可以使用一些复杂的参数初始化方法。
- E步骤: 计算隐变量集合
的后验概率分布,也可以看做是为了得到 辅助函数。
- M步骤: 极大化辅助函数
得到本轮迭代的参数值。
这里就和正常的极大似然估计是一样的了,可以通过梯度法得到最优的参数值。
- 迭代: 交替执行E步骤和M步骤,直到参数收敛。
EM算法有两个特点:
- EM算法得到的是局部最优解,不保证得到全局最优,这取决于似然函数是否是凸函数(或者凹函数)。
- 通常EM算法前几次迭代收敛较快,在之后收敛速度回急剧下降。
EM算法是一个伟大的发明,它是解决潜变量模型的常用算法,应用十分的广泛。
4. EM算法就一种局部下限构造
我们通过Jensen不等式得到概率图模型的对数似然函数
从上式可以看出下界函数分为两部分,第一部分
下界函数可以分为观测数据对数似然函数
所以之前让构造的
这个也是所谓的九层境界里面的第二层(EM算法的九层境界:Hinton和Jordan理解的EM算法)
二、抛硬币的例子
我们接下来从一个简单的例子来理解EM算法;来源:Do, C. B., & Batzoglou, S. (2008). What is the expectation maximization algorithm? Nature Biotechnology, 26(8), 897–899. https://doi.org/10.1038/nbt1406
上面这篇著名的EM入门论文里面有一张很好的图例,利用抛硬币来说明EM,可是对于某些初学者来讲缺乏解读可能还是有点难理解思路。
下面尝试拆解一下分步骤解读
1、问题定义
已知: - 手上有两种不同的硬币,分别称为A和B
实验: - 随机抛硬币十次为一组,记录正面朝上(H)和反面朝上(T)的数据 - 换硬币重复试验
问题: - 分别求这两个硬币正面朝上的概率
2、 完全信息 vs 包含隐函数的不完全信息
上图的实验过程中如果记录了当时抛的是A或者B哪种硬币,统计推断的时候知道了每一组是属于哪一种硬币的情况下那当然很好算,这种情况叫完全信息。
假如实验中根本不知道抛的时候究竟是哪一种硬币,或者就不告诉你的话,我们就没办法直接计算两种硬币正面朝上的概率了,这种情况叫不完全信息。例如上图的数据是和完全信息的情况一样的,区别在于左边的标签是问号,不知道是什么硬币。这个时候就用到了EM算法。
3、完全信息下的求解
每次抛硬币都是独立的,通过极大似然估计可以推导;
- 对于A来说,一共抛了三组共三十次,共24次向上6次向下,那么A硬币朝上的概率是
。 - 对于B来说,一共抛了两组共二十次,共9次向上11次向下,那么B硬币朝上的概率是
。
4、不完全信息下的初级EM求解
不完全信息情况呢?我们根本不知道每一组的结果是属于哪种硬币的,没办法用极大似然估计的方法算。这个时候硬币是否属于A的隐变量
那怎么办?
想一下就发现,一组抛多次,不同硬币的抛出不同结果的概率是相当不同的。比如说:
- 一个
的硬币抛出4H6T的概率是 - 而
的硬币抛出4H6T的概率是
也就是说,倒过来说,看到4H6T的结果的时候,这个硬币本身朝上的概率更有可能是
可是我们现在不知道
具体步骤
(1)先给
(2)然后算出
- A硬币抛出第一组的似然函数是
。 - B硬币抛出第一组的似然函数是
。
这个例子先按照比例来把第一组数据划分给A和B,这一步就类似于计算隐变量集合
- 划分给A的比例是
。 - 同理划分给B的比例是
。
对其他组也进行推算,得到
(3)接下来得到了新的划分后的数据,可以更新参数了,计算每次结果中属于A和B的H和T的加权次数;
- 对于A来说,一共有21.3次向上8.6次向下,那么A硬币朝上的概率是
。 - 对于B来说,一共有11.7次向上8.4次向下,那么B硬币朝上的概率是
。
这一步就类似于极大化辅助函数得到本轮迭代的参数值。
(4)重复步骤(2)和(3),直到收敛,可以算得第十次循环之后
可以看到这个结果也跟之前完全信息算出来的比较接近。
三、混合模型的参数学习
在实际应用中,经常会遇到观测数据并不是从某个单一的总体分布中采样得到, 而是来源于多个拥有不同参数的相同分布。 这里首先给出一个概念:参数分布族(parametric family of distributions)。
参数分布族(parametric family of distributions):参数分布族是指,属于同一种概率分布仅仅参数值不同的一类分布的集合, 比如拥有不同均值和方差的高斯分布组成的分布集合。
假设有一份某地小学生的身高数据,已知身高数据可以看做近似服从高斯分布, 这份数据中含有全部六个年级的学生,并且男生女生都有。 按照过去一般的处理逻辑,可以用一个高斯分布去拟合这份数据, 然而由于不同年龄段的孩子身高差异较大,用一个单一的高斯模型并不能很好的拟合数据, 此时可以用多个高斯分布去分别拟合不同年龄段不同性别的身高数据, 这些高斯分布拥有不同的均值和方差参数,但他们都是高斯分布,而不是什么其它的分布。 这就是一个典型的混合分布的例子,数据来源于一个参数分布族, 即不同参数的同一种分布。
1. 混合模型的有向图表示
现在我们用概率图的语言来描述混合模型, 首先定义一个离散类别变量,记作
在混合模型中,一条观测样本的生成(采样)由两个变量控制,样本的生成过程为:
- 首先,从变量
进行采样,假设采样值为 。 - 然后,从变量
第 个分量(记作 )中采样得到 x 。
模型的联合概率分布可以写为
其中变量
响应变量
分量
2. 不完整观测数据的参数估计
如果观测数据完整,变量
根据图模型的推断理论,需要在联合概率的基础上通过边际化(消元)的方法得到边缘概率
此时对数似然函数为
可以看到上式中对数ln内部存在一个求和符号, 这使得无法对公式进一步的拆解,这种情况下很难对其求偏导, 给参数估计带来了极大的困难。 在含有隐变量的模型中,需要对隐变量进行消元,以便得到观测变量的边缘概率, 而这个消元操作(求和或者积分)会出现在对数似然函数的对数内部, 最终导致对数似然函数无法分解,使得参数估计无比困难。 EM算法就是对这一问题的有效解决,通过 Jensen 不等式的理论, 可以在等价的情况下,把对数内部的求和操作转换到对数外部。
3. 使用EM算法
EM算法的具体推导过程看上文, 这里仅给出E步和M步的具体内容。
E-步骤: 得到隐变量的后验概率分布
用
具体的
其中
M-步骤: 极大化期望,得到参数的解。
极大化的目标函数记作
令
可以看到在上式中,对数内的联合概率项已经可以分解开,和完整观测的对数似然函数一样, 可以独立的估计每一项局部条件概率的参数。 稍微有点区别的是,每一项前面多了一个系数
4.高斯混合模型
当观测变量
后续的不完整观测数据的参数学习类似。