@galaxy-0
2019-07-21T21:50:09.000000Z
字数 6641
阅读 3174
learning
EM算法是一种极大似然法,专门处理含有隐变量的概率模型。隐变量不能直接观测得到,为了得到对隐变量分布的一个近似估计,EM算法分两步进行迭代求解:
1. E步:使用当前模型参数求出一个期望
2. M步:对期望求极大
一个使用EM算法求解的例子:
有三枚硬币A,B,C,先投掷A,如果是正面就投掷B,如果是反面就投掷C,若我们只能观测到最后的投掷结果(B或者C的结果),如何估算三颗硬币的正面率?
在这里面,每次A的结果不能从观测变量中直接得到,因此A是一个隐变量。以下部分会先推导EM算法,然后将其应用在三硬币问题上。
首先考虑最一般化的极大似然,我们在获得观测变量时,希望最大化出现的概率,即极大化目标函数
其中,是模型的参数,是隐变量。上面使用到了全概率公式和条件概率公式。我们使用迭代的方式逐步更新的值,试图在迭代的过程中增大的值。那么如何更新呢?假设我们现在已经进行了i轮的迭代,当前的模型参数为,我们来考虑一下迭代后的目标函数和迭代前的目标函数的差值(注:是指使用当前模型的参数计算出来的目标函数值)
我们可以利用Jensen不等式来进行一个不等式放缩,对于一个凸函数, Jensen不等式为:
那么原式
其中,第一个等号在原式子额外添加了一个分子和分母,分子部分作为概率分布,分母和原有部分组成一个值,那么整个
引入一个辅助函数
省去和无关的常数,变形如下
我们记
输入:观察变量Y,隐变量数据Z,联合分布,条件分布
模型参数:\theta
(1) 初始化参数值,开始迭代
(2) E步:记为当前模型的参数估计值,在第i+1次迭代的E步,我们计算Q函数
E步的输出是当前的Q函数,其中的是待优化的参数
(3)M步:求Q函数的极值点使其极大化,得到新的参数
(4) 重复(2)(3)直到收敛
注:EM算法对初始值敏感,不同的初始值可能导致不同的结果,EM算法也无法保证找到全局最优点
下面针对三硬币模型进行一个EM算法的应用讲解
有三枚硬币A,B,C,先投掷A,如果是正面就投掷B,如果是反面就投掷C,若我们只能观测到最后的投掷结果(B或者C的结果)而不能直到投掷的过程,如何估算三颗硬币的正面率?
我们将A,B,C正面朝上的概率分别设为,最后的观察结果随机变量记为,变量表示硬币A的结果,。
首先我们的极大似然函数为
由上面的推导可以知道,极大化可以通过极大化Q函数得到
我们先来计算,
关于,我们有
由上面的结果得
我们要优化的Q函数为
我们分别求参数对Q函数的偏导
令,得
令,得,
同理,我们得到
至此,我们的所有参数更新完成,进入下一轮迭代,EM算法一轮完成。
(待续)