统计机器学习-EM算法(期望极大算法)

EM算法用于含有隐变量的概率模型参数的极大似然估计。这里首先对隐变量解释,举下面的例子

(三硬币模型)假设有3枚硬币,分别记做ABC,这些硬币正面出现的概率分别是\pipq。进行如下掷硬币试验:先掷硬币A,根据其结果选出硬币B或硬币C,正面选硬币B,反面选硬币C;然后掷选出的硬币,掷硬币的结果,出现正面记做1,出现反面记做0;独立的重复n次试验(这里,n=10),观测结果如下:
1,1,0,1,0,0,1,0,1,1
假设能观测到掷硬币的结果,不能观测掷硬币的过程,问如何估计三硬币正面出现的概率,即三硬币模型的参数\pipq

其中掷硬币A的结果是未观测的,叫做隐变量,记做z。将观测数据表示为Y=(Y_1,Y_2,\cdots,Y_n)^T,未观测数据表示为Z=(Z_1,Z_2,\cdots,Z_n)^T,则观测数据的似然函数为
P(Y|\theta)=\sum_ZP(Y,Z|\theta)=\sum_ZP(Z|\theta)P(Y|Z,\theta)\tag1

P(Y|\theta)=\prod_{j=1}^n[\pi p^{y_j}(1-p)^{1-y_i}+(1-\pi)q^{y_j}(1-q)^{1-y_j}]\tag2
对模型参数\theta=(\pi,p,q)进行极大似然估计,即
\hat\theta=\arg\max_\theta\log P(Y|\theta)\tag3
因为掷硬币A的结果未知,所以没有这个问题解析解,只能通过迭代的方式,逐步增加对数似然函数,找到一个解。EM算法解决的就是这样的一类问题。

接下来首先提出EM算法,然后对其进行解释。

EM算法

EM算法叫做Exception maximization算法,顾名思义,包含求期望(Exception )和极大化(maximization)两个步骤。

输入:观测变量数据Y,隐变量数据Z,联合分布P(Y,Z|\theta),条件分布P(Z|Y,\theta)

输出:模型参数\theta

(1)选择参数的初值\theta^{(0)},开始迭代;

(2)E步:记\theta^{(i)}为第i次迭代参数\theta的估计值,在第i+1次迭代的E步,计算
\begin{align} Q(\theta,\theta^{(i)})&=E_Z[\log P(Y,Z|\theta)|Y,\theta^{(i)}]\\ &=\sum_ZP(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) \end{align}
这里P(Z|Y,\theta^{(i)})是在给定观测数据Y和当前参数估计\theta^{(i)}下隐变量数据Z的条件概率分布;

(3)M步:求使Q(\theta,\theta^{(i)})极大化的\theta,确定第i+1次迭代的参数的估计值\theta^{(i+1)}
\theta^{(i+1)}=\arg\max_\theta Q(\theta,\theta^{(i)})
(4)重复第(2)步和第(3)步,直到收敛。

第(2)步中Q(\theta,\theta^{(i)})是EM算法的核心,称为Q函数。

Q函数定义:完全数据的对数似然函数\log P(Y,Z|\theta)关于给定观测数据Y和当前参数\theta^{(i)}下对未观测数据Z的条件概率分布P(Z|Y,\theta^{(i)})的期望称为Q函数,即
Q(\theta,\theta^{(i)})=E_Z[\log P(Y,Z|\theta)|Y,\theta^{(i)}]
因为E_Z[g(z)]=\sum_Zp(z)g(z),所以
\begin{align} Q(\theta,\theta^{(i)})&=E_Z[\log P(Y,Z|\theta)|Y,\theta^{(i)}]\\ &=\sum_ZP(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) \end{align}\tag4
其中,因为数据Y未包含隐变量Z的结果,所以称为不完全数据,\log P(Y|\theta)称为不完全数据的对数似然函数,而数据Y,Z则称为完全数据,\log P(Y,Z|\theta)称为完全数据的对数似然函数。
下面关于EM算法作几点说明:

  • 步骤(1)参数的初值可以任意选择,但需注意EM算法对初值是敏感的。
  • 步骤(2)E步求Q(\theta,\theta^{(i)})。Q函数式中Z是未观测数据,Y是观测数据,注意,Q(\theta,\theta^{(i)})的第1个变元表示要极大化的参数,第2个变元表示参数的当前估计值。每次迭代实际在求Q函数及其极大。
  • 步骤(3)M步求Q(\theta,\theta^{(i)})的极大化,得到\theta^{(i+1)},完成一次迭代\theta^{(i)}\rightarrow\theta^{(i+1)}
  • 步骤(4)给出停止迭代的条件,一般是对较小的正数\varepsilon_1\varepsilon_2,若满足

||\theta^{(i+1)}-\theta^{(i)}||\lt\varepsilon_1\ \ 或\ \ ||Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta^{(i)})||\lt\varepsilon_2

​ 则停止迭代。

下面给出这种做法为什么可以对观测数据(不完全数据)进行极大似然估计。

EM算法的导出

对于一个含有隐变量的模型,目标是极大化观测数据(不完全数据)Y关于参数\theta的对数似然函数,即最大化
L(\theta)=\log P(Y|\theta)=\log\sum_ZP(Y,Z|\theta)=\log\bigg(\sum_ZP(Y|Z,\theta)P(Z|\theta)\bigg)\tag5
上面第一步用到边缘概率和联合概率的关系P(Y|\theta)=\sum_ZP(Y,Z|\theta),第二步用到的是条件分布公式P(AB)=P(A|B)P(B)。对这一对数似然函数极大化的困难是因为上式中包含未观测数据Z

但是如果通过第i次迭代得到估计的参数\theta^{(i)},此时再找到一个参数\theta,使得L(\theta)\gt L(\theta^{(i)})(和IIS算法思路有点类似),那么同样也可以起到极大似然估计的效果。为此,考虑两者的差
L(\theta)-L(\theta^{(i)})=\log\bigg(\sum_ZP(Y|Z,\theta)P(z|\theta)\bigg)-\log P(Y|\theta^{(i)})

利用Jensen不等式,过程略,得到其下界:
L(\theta)-L(\theta^{(i)})\geq\sum_ZP(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\tag6
于是得到对数似然函数的下界
L(\theta)\geq L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\tag7
定义
B(\theta,\theta^{(i)})\hat=L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\tag8

L(\theta)\geq B(\theta,\theta^{(i)})
并且
\begin{align} B(\theta^{(i)},\theta^{(i)})&=L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta^{(i)})P(Z|\theta^{(i)})}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\\ &=L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})\log\frac{P(Y,Z|\theta^{(i)})}{P(Y,Z|\theta^{(i)})}\\ &=L(\theta^{(i)}) \end{align}
即可以使B(\theta,\theta^{(i)})可以增大的\theta,也可以使L(\theta)增大,所以极大似然估计变成了使B(\theta,\theta^{(i)})极大化的问题,即
\theta^{(i+1)}=\arg\max_\theta B(\theta,\theta^{(i)})
所以
\theta^{(i+1)}=\arg\max_\theta B(\theta,\theta^{(i)})=\arg\max_\theta\bigg(L(\theta^{(i)})+\sum_ZP(Z|Y,\theta^{(i)})\log\frac{P(Y|Z,\theta)P(Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}\bigg)
省去不包含变量\theta的常数项L(\theta^{(i)})P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)}),得到
\begin{align} \theta^{(i+1)}&=\arg\max_\theta\bigg(\sum_ZP(Z|Y,\theta^{(i)})\log P(Y|Z,\theta)P(Z|\theta)\bigg)\\ &=\arg\max_\theta\bigg(\sum_ZP(Z|Y,\theta^{(i)})\log P(Y,Z|\theta)\bigg)\\ &=\arg\max_\theta Q(\theta,\theta^{(i)}) \end{align}
所以,在EM算法中最大化Q函数,就等同于最大对数似然函数的下界,从而进行极大似然估计。但是这种算法并不能保证找到全局最优值。

EM算法可以用于无监督学习,略。EM算法的收敛性证明略。

EM算法在高斯混合模型学习中的应用

高斯混合模型定义

高斯混合模型是指具有如下形式的概率分布模型:
P(y|\theta)=\sum_{k=1}^K\alpha_k\phi(y|\theta_k)\tag9
其中,\alpha_k是系数,\alpha_k\geq0\sum_{k=1}^K\alpha_k=1\phi(y|\theta_k)是高斯分布密度,\theta_k=(\mu_k,\sigma_k^2)
\phi(y|\theta_k)=\frac{1}{\sqrt{2\pi}\sigma_k}\exp\bigg(-\frac{(y-\mu_k)^2}{2\sigma_k^2}\bigg)
称为第k个模型。

高斯混合模型参数估计的EM算法

可以设想观测数据y_jj=1,2,\cdots,N,是这样产生的:首先,依概率\alpha_k选择第 k个高斯分布分模型\phi(y|\theta_k);然后依第k个分模型的概率分布\phi(y|\theta_k)生成观测数据y_j,这是观测数据y_jj=1,2,\cdots,N,是已知的;反应观测数据y_j来自第k个分模型的数据是未知的,k=1,2,\cdots,K,以隐变量\gamma_{jk}表示,其定义如下:
\gamma_{jk}= \begin{cases}1,\ \ &第j个观测来自第k个分模型\\ 0,\ \ & 否则 \end{cases}\\ j=1,2,\cdots,N;\ \ k=1,2,\cdots,K
\gamma_{jk}是0,1随机变量。

有了观测数据y_j及未观测数据\gamma_{jk},那么完全数据是
(y_j,\gamma_{j1},\gamma_{j2},\cdots,\gamma_{jK}),\ \ j=1,2,\cdots,N
于是可以写出完全数据的似然函数:
\begin{align} P(y,\gamma|\theta)&=\prod_{j=1}^NP(y_j,\gamma_{j1},\gamma_{j2},\cdots,\gamma_{jK}|\theta)\\ &=\prod_{k=1}^K\prod_{j=1}^N[\alpha_k\phi(y_j|\theta_k)]^{\gamma_{jk}}\\ &=\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N[\phi(y_j|\theta_k)]^{\gamma_{jk}}\\ &=\prod_{k=1}^K\alpha_k^{n_k}\prod_{j=1}^N\bigg[\frac{1}{\sqrt{2\pi}\sigma_k}\exp\bigg(-\frac{(y-\mu_k)^2}{2\sigma_k^2}\bigg)\bigg]^{\gamma_{jk}} \end{align}
其中,n_k=\sum_{j=1}^N\gamma_{jk}(依赖第k个分类器的样本数),\sum_{k=1}^Kn_k=N

那么完全数据的对数似然函数为
\log P(y,\gamma|\theta)=\sum_{k=1}^K\bigg\{n_k\log\alpha_k+\sum_{j=1}^N\gamma_{jk}\bigg[\log(\frac1{\sqrt{2\pi}})-\log\sigma_k-\frac1{2\sigma_k^2}(y_j-\mu_k^2)\bigg]\bigg\}
确定Q函数
\begin{align} Q(\theta,\theta^{(i)})&=E_{P(\gamma|y,\theta^{(i)})}[\log P(y,\gamma|\theta)]\\ &=E_{P(\gamma|y,\theta^{(i)})}\sum_{k=1}^K\bigg\{n_k\log\alpha_k+\sum_{j=1}^N\gamma_{jk}\bigg[\log(\frac1{\sqrt{2\pi}})-\log\sigma_k-\frac1{2\sigma_k^2}(y_j-\mu_k^2)\bigg]\bigg\}\\ &=\sum_{k=1}^K\bigg\{\sum_{j=1}^N(E\gamma_{jk})\log\alpha_k+\sum_{j=1}^N(E\gamma_{jk})\bigg[\log(\frac1{\sqrt{2\pi}})-\log\sigma_k-\frac1{2\sigma_k^2}(y_j-\mu_k^2)\bigg]\bigg\}\\ \end{align}\tag{10}
其中
\begin{align} E\gamma_{jk}&=\hat\gamma_{jk}=E(\gamma_{jk}|y,\theta)=P(\gamma_{jk}=1|y,\theta)\\ &=\frac{P(\gamma_{jk}=1,y_j|\theta)}{\sum_{k=1}^KP(\gamma_{jk}=1,y_j|\theta)}\\ &=\frac{P(y_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)}{\sum_{k=1}^KP(y_j|\gamma_{jk}=1,\theta)P(\gamma_{jk}=1|\theta)} \end{align}

\hat\gamma_{jk}是在当前模型参数下第j个观测数据来自第k个分模型的概率,称为分模型k对观测数据y_j的响应度。

根据开头的描述,P(y_j|\gamma_{jk}=1,\theta)=\phi(y_k|\theta_k)P(\gamma_{jk}=1|\theta)=\alpha_k,所以
E\gamma_{jk}=\hat\gamma_{jk}=E(\gamma_{jk}|y,\theta)=\frac{\alpha_k\phi(y_j|\theta_k)}{\sum_{k=1}^K\alpha_k\phi(y_j|\theta_k)}\tag{11}
\hat\gamma_{jk}=E\gamma_{jk}n_k=\sum_{j=1}^NE\gamma_{jk}(此处的n_k实际为E_{P(\gamma_{jk}|y,\theta)}n_kn_k=\sum_{j=1}^N\gamma_{jk})代入公式(10)得到
Q(\theta,\theta^{(i)})=\sum_{k=1}^K\bigg\{n_k\log\alpha_k+\sum_{j=1}^N\hat\gamma_{jk}\bigg[\log(\frac1{\sqrt{2\pi}})-\log\sigma_k-\frac1{2\sigma_k^2}(y_j-\mu_k^2)\bigg]\bigg\}\tag{12}
接下来需要求Q函数的极大化(极大化观测数据对数似然函数的下界),即
\theta^{(i+1)}=\arg\max_\theta Q(\theta,\theta^{(i)})
其中\theta=(\alpha_k,\mu_k,\sigma_k^2)k=1,2,\cdots,K,将公式(12)对\mu_k\sigma_k^2求偏导等于0,得到第i+1次的更新值\hat\mu_k\hat\sigma_k^2,同样将公式(12)对\alpha_k求偏导等于0,加上条件\sum_{k=1}^K\alpha_k=1,求得更新值\hat\alpha_k。计算更新值时\hat\gamma_{jk}n_k用到的参数是第i次更新得到的值,所以可以通过迭代的方式不断更新参数直到收敛。求得的\hat\mu_k\hat\sigma_k^2\hat\alpha_k
\hat\mu_k=\frac{\sum_{j=1}^N}{\sum_{j=1}^N\hat\gamma_{jk}},\ \ k=1,2,\cdots,K\tag{13}

\hat\sigma_k^2=\frac{\sum_{j=1}^N\hat\gamma_{jk}(y_j-\mu_k)^2}{\sum_{j=1}^N\hat\gamma_{jk}},\ \ k=1,2,\cdots,K\tag{14}

\hat\alpha_k=\frac{n_k}N=\frac{\sum_{j=1}^N\hat\gamma_{jk}}N,\ \ k=1,2,\cdots,K\tag{15}

高斯混合模型参数估计的EM算法

输入:观测数据y_1,y_2,\cdots,y_N,高斯混合模型;

输出:高斯混合模型参数。

(1)取参数的初始值开始迭代(初值敏感)

(2)E步:依据当前模型参数,计算分模型k对观测数据y_j的响应度
\hat\gamma_{jk}=\frac{\alpha_k\phi(y_j|\theta_k)}{\sum_{k=1}^K\alpha_k\phi(y_j|\theta_k)},\ \ j=1,2,\cdots,N;\ \ k=1,2,\cdots,K
(3)M步:计算新一轮迭代的模型参数
\hat\mu_k=\frac{\sum_{j=1}^N}{\sum_{j=1}^N\hat\gamma_{jk}},\ \ k=1,2,\cdots,K

\hat\sigma_k^2=\frac{\sum_{j=1}^N\hat\gamma_{jk}(y_j-\mu_k)^2}{\sum_{j=1}^N\hat\gamma_{jk}},\ \ k=1,2,\cdots,K

\hat\alpha_k=\frac{n_k}N=\frac{\sum_{j=1}^N\hat\gamma_{jk}}N,\ \ k=1,2,\cdots,K

(4)重复第(2)步和第(3)步,直到收敛。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351