[关闭]
@galaxy-0 2019-07-21T21:50:09.000000Z 字数 6641 阅读 3126

EM算法推导与三硬币模型

learning


EM算法概览

EM算法是一种极大似然法,专门处理含有隐变量的概率模型。隐变量不能直接观测得到,为了得到对隐变量分布的一个近似估计,EM算法分两步进行迭代求解:
1. E步:使用当前模型参数求出一个期望
2. M步:对期望求极大
一个使用EM算法求解的例子:
有三枚硬币A,B,C,先投掷A,如果是正面就投掷B,如果是反面就投掷C,若我们只能观测到最后的投掷结果(B或者C的结果),如何估算三颗硬币的正面率?
在这里面,每次A的结果不能从观测变量中直接得到,因此A是一个隐变量。以下部分会先推导EM算法,然后将其应用在三硬币问题上。

EM算法推导

首先考虑最一般化的极大似然,我们在获得观测变量时,希望最大化出现的概率,即极大化目标函数

其中,是模型的参数,是隐变量。上面使用到了全概率公式和条件概率公式。我们使用迭代的方式逐步更新的值,试图在迭代的过程中增大的值。那么如何更新呢?假设我们现在已经进行了i轮的迭代,当前的模型参数为,我们来考虑一下迭代后的目标函数和迭代前的目标函数的差值(注:是指使用当前模型的参数计算出来的目标函数值)

我们可以利用Jensen不等式来进行一个不等式放缩,对于一个凸函数, Jensen不等式为:


或者

那么原式






其中,第一个等号在原式子额外添加了一个分子和分母,分子部分作为概率分布,分母和原有部分组成一个值,那么整个

部分变成了一个求解期望的式子,利用Jensen不等式可以得到下一行的前半部分。第三行后半部分可以添加一个乘积的原因是,
是一个概率分布,加起来为1,而中不含有,所以可以和前面的求和乘起来(相当于一个常数)。整理一下上面的结论,我们有

引入一个辅助函数

,
那么有

说明的一个下界,并且有

因此我们的问题变成了,如何最大化,只要可以提高的值,那么就能提高的值。(注:是已知参数或者说常数,代表当前的变量的值,是变量,我们需要求解的极值点)。记迭代后的值为,

省去和无关的常数,变形如下


我们记

,称为Q函数,至此我们就可以根据不同的任务设计好Q函数,然后求导使得Q函数极大化,增加Q函数的值,从而增加极大似然函数的值,整个EM算法的框架如下:

输入:观察变量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的结果,

建立概率模型

目标函数

首先我们的极大似然函数为


其中为样本数量,为样本编号。取了log之后为

由上面的推导可以知道,极大化可以通过极大化Q函数得到

条件概率

我们先来计算,


联合分布

关于,我们有


特别的,我们有

求解Q函数(E步)

由上面的结果得


,那么

我们要优化的Q函数为

求Q函数极大(M步)

我们分别求参数对Q函数的偏导

,得

,得,
同理,我们得到

至此,我们的所有参数更新完成,进入下一轮迭代,EM算法一轮完成。

(待续)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注