EM算法是个什么东东
EM算法(Expectation-maximization algorithm 期望最大化算法),是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率(事情已经发生,求这件事情发生的原因是由某个因素引起的可能性的大小)估计。
拆解一下:
1)形式上或者叫算法过程是一个迭代的过程,分为E步:求期望,M步:求极大,直到收敛。
2)概率模型依赖于无法观察的隐变量
3)EM算法归根结底求的是概率模型的参数(而不是概率本身,这个一定要明确),要求的参数要满足极大似然估计(似然函数求极大值,不理解的可以参考博客【深入解析最大熵模型】)或者满足极大后验概率估计
同时,EM算法还是一个基础算法,在其他一些算法里面用来求取模型的参数,比如隐式马尔科夫算法(HMM)
EM算法的引入
前面说了EM算法是用来求模型参数的一种方法,回想一下前面的知识我们知道,求模型参数一般多用极大似然估计或者贝叶斯估计,那么EM算法在求解模型参数过程中有什么优点呢?或者说已经有了极大似然估计等求解模型参数的方法了,为啥又整出来一个EM算法?
因为不论是极大似然估计或者贝叶斯估计,当模型中存在隐含变量时,它们都无法用来进行模型参数求解,EM却可以!
概率模型有时即含有观测变量,又含有隐变量或潜在变量,如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数。
但是,当模型含有隐变量时,就不能简单的使用这些估计方法。EM算法就是含有隐变量的概率模型参数的极大似然估计或极大后验概率估计法。
三硬币模型:
假设有3枚硬币,分别记作A,B,C。这些硬币正面出现的概率分别是
π
,
p
,
q
π,p,q
π,p,q,进行如下抛硬币试验:先抛掷硬币A,根据其结果选出硬币B或者硬币C,正面选硬币B,反面选硬币C;然后抛掷选出的硬币,抛掷硬币的结果,出现正面记作1,出现反面记作0;独立的重复n次试验(这里n=10),观测结果如下:
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
1
1,1,0,1,0,0,1,0,1,1
1,1,0,1,0,0,1,0,1,1
假设只能观测到抛硬币的结果,不能观测抛硬币的过程。问如何估计三硬币正面出现的概率,即三硬币模型的参数.
三硬币模型可以写成下面的形式:
p ( y ∣ θ ) = ∑ z p ( y , z ∣ θ ) = ∑ z p ( z ∣ θ ) p ( y ∣ z , θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y p(y|θ)=\displaystyle\sum_{z}p(y,z|θ)=\displaystyle\sum_{z}p(z|θ)p(y|z,θ)=πp^y(1-p)^{1-y}+(1-π)q^y(1-q)^{1-y} p(y∣θ)=z∑p(y,z∣θ)=z∑p(z∣θ)p(y∣z,θ)=πpy(1−p)1−y+(1−π)qy(1−q)1−y(式1)
其中 p ( y ∣ θ ) = ∑ z p ( y , z ∣ θ ) p(y|θ)=\displaystyle\sum_{z}p(y,z|θ) p(y∣θ)=z∑p(y,z∣θ)利用了已知联合概率密度函数的情况下,求边缘概率密度的公式
p ( x = x i ) = ∑ j p ( x = x i , y = y j ) p(x=x_i)=\displaystyle\sum_{j}p(x=x_i,y=y_j) p(x=xi)=j∑p(x=xi,y=yj)
∑ z p ( y , z ∣ θ ) = ∑ z p ( z ∣ θ ) p ( y ∣ z , θ ) \displaystyle\sum_{z}p(y,z|θ)=\displaystyle\sum_{z}p(z|θ)p(y|z,θ) z∑p(y,z∣θ)=z∑p(z∣θ)p(y∣z,θ)利用贝叶斯定理 p ( A , B ) = P ( B ) ∗ P ( A ∣ B ) p(A,B)=P(B)*P(A|B) p(A,B)=P(B)∗P(A∣B)
这里,随机变量y是观测变量,表示一次试验的观测结果是1或0;随机变量z是隐变量,表示未观测到的抛硬币A的结果;
θ
=
(
π
,
p
,
q
)
θ=(π,p,q)
θ=(π,p,q)是模型参数,这一模型是以上数据的生成模型。
注意:随机变量y的数据可以观测,随机变量z的数据不可观测。
将观测数据表示为
Y
=
(
Y
1
,
Y
2
,
…
Y
n
)
T
未
观
测
的
数
据
表
示
为
Z
=
(
Z
1
,
Z
2
…
…
Z
n
)
T
Y=(Y_1,Y_2,…Y_n)^ T未观测的数据表示为Z=(Z_1,Z_2……Z_n)^T
Y=(Y1,Y2,…Yn)T未观测的数据表示为Z=(Z1,Z2……Zn)T
则观测数据的似然函数为:
P
(
Y
∣
θ
)
=
∑
z
P
(
Z
∣
θ
)
P
(
Y
∣
Z
,
θ
)
P(Y|θ)=\displaystyle\sum_{z}P(Z|θ)P(Y|Z,θ)
P(Y∣θ)=z∑P(Z∣θ)P(Y∣Z,θ)
即:
P
(
Y
∣
θ
)
=
∏
[
π
p
y
(
1
−
p
)
1
−
y
+
(
1
−
π
)
q
y
(
1
−
q
)
1
−
y
]
,
j
=
1
,
2
…
…
n
P(Y|θ)=∏[πp^y(1-p)^{1-y}+(1-π)q^y(1-q)^{1-y}],j=1,2……n
P(Y∣θ)=∏[πpy(1−p)1−y+(1−π)qy(1−q)1−y],j=1,2……n
考虑求模型参数 θ = ( π , p , q ) θ=(π,p,q) θ=(π,p,q)的极大似然估计 θ ∗ = a r g m a x l o g P ( Y ∣ θ ) θ^*=argmaxlogP(Y|θ) θ∗=argmaxlogP(Y∣θ)
针对三硬币模型的EM算法:
1)EM算法首先选取参数的初值,记作
θ
(
0
)
=
(
π
(
0
)
,
p
(
0
)
,
q
(
0
)
)
θ^{(0)}=(π^{(0)},p^{(0)},q^{(0)})
θ(0)=(π(0),p(0),q(0))
2 )通过下面的步骤迭代计算参数的值,直到收敛为止。
第i次迭代参数的估计值为 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) θ^{(i)}=(π^{(i)},p^{(i)},q^{(i)}) θ(i)=(π(i),p(i),q(i)).EM算法的第i+1次迭代如下
E步:计算在模型参数 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) θ^{(i)}=(π^{(i)},p^{(i)},q^{(i)}) θ(i)=(π(i),p(i),q(i))下观测数据 y i y_i yi来自抛硬币B的概率
u j ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) ( 1 − y j ) π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) ( 1 − y j ) + ( 1 − π ( i ) ) ( q ( i ) ) y j ( 1 − q ( i ) ) ( 1 − y j ) u_j^{(i+1)}=\frac{π^{(i)}(p^{(i)})^{y_j}(1-p^{(i)})^{(1-y_j)}}{π^{(i)}(p^{(i)})^{y_j}(1-p^{(i)})^{(1-y_j)}+(1-π^{(i)})(q^{(i)})^{y_j}(1-q^{(i)})^{(1-y_j)}} uj(i+1)=π(i)(p(i))yj(1−p(i))(1−yj)+(1−π(i))(q(i))yj(1−q(i))(1−yj)π(i)(p(i))yj(1−p(i))(1−yj)
分子表示选定B并进行一次抛掷试验,分母表示选定B或者C并进行一次抛掷试验,二者相除就得到试验结果来自B的概率。
M步:计算模型参数的新的估计值
π ( i + 1 ) = ∑ j = 1 n u j ( i + 1 ) n π^{(i+1)}=\frac{\displaystyle\sum_{j=1}^{n}u_j^{(i+1)}}{n} π(i+1)=nj=1∑nuj(i+1)
把这n个(试验结果来自B的概率)求和得到期望,平均后,得到A出正面的似然估计。同理有p和q
p ( i + 1 ) = ∑ j = 1 n u j ( i + 1 ) y j ∑ j = 1 n u j ( i + 1 ) p^{(i+1)}=\frac{\displaystyle\sum_{j=1}^{n}u_j^{(i+1)}y_j}{\displaystyle\sum_{j=1}^{n}u_j^{(i+1)}} p(i+1)=j=1∑nuj(i+1)j=1∑nuj(i+1)yj
出现正面的期望除以所有来自抛硬币B的观测数据得到新的 p ( i + 1 ) p^{(i+1)} p(i+1)
q ( i + 1 ) = ∑ j = 1 n ( 1 − u j ( i + 1 ) ) y j ∑ j = 1 n ( 1 − u j ( i + 1 ) ) q^{(i+1)}=\frac{\displaystyle\sum_{j=1}^{n}(1-u_j^{(i+1)})y_j}{\displaystyle\sum_{j=1}^{n}(1-u_j^{(i+1)})} q(i+1)=j=1∑n(1−uj(i+1))j=1∑n(1−uj(i+1))yj
EM算法与初值的选择有关,选择不同的初值可能得到不同的参数估计。
一般的,用Y表示观测随机变量的数据,Z表示隐随机变量的数据,Y和Z连在一起称为完全数据(complete data),观测数据Y又称作不完全数据
EM算法的推导
假设我们有一个样本集 x ( 1 ) , x ( 2 ) … … x ( m ) x^{(1)},x^{(2)}……x^{(m)} x(1),x(2)……x(m),包含m个独立的样本。但每个样本 i i i对应的类别 Z ( i ) Z^{(i)} Z(i)是未知的(相当于聚类)即隐变量。故我们需要估计概率模型 p ( x , z ) p(x,z) p(x,z)的参数 θ θ θ,但是由于里面包含隐变量z,所以很难用最大似然求解,但是如果知道了z,就很容易求解。
对于参数估计,我们本质上还是想获得一个使似然函数最大化的参数 θ θ θ,现在与最大似然不同的只是似然函数式中多了一个未知的变量 z z z
我们的目标是找到合适的 θ , z θ,z θ,z让 L ( θ ) L(θ) L(θ)最大。
∑
i
l
o
g
p
(
x
(
i
)
;
θ
)
=
∑
i
l
o
g
∑
z
(
i
)
\displaystyle\sum_{i}logp(x^{(i)};θ)=\displaystyle\sum_{i}log\displaystyle\sum_{z^{(i)}}
i∑logp(x(i);θ)=i∑logz(i)∑(1)
=
∑
i
l
o
g
∑
z
(
i
)
Q
i
(
z
(
i
)
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
=\displaystyle\sum_{i}log\displaystyle\sum_{z^{(i)}}Q_i(z^{(i)})\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}
=i∑logz(i)∑Qi(z(i))Qi(z(i))p(x(i),z(i);θ)(2)
≥
∑
i
∑
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
≥\displaystyle\sum_{i}\displaystyle\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}
≥i∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)(3)
本质上我们是需要最大化(1)式,对(1)式,利用了联合概率密度下某个变量的边缘概率密度函数的求解,这里注意z也是随机变量。
(对每一个样本i的所有可能类别z求等式右边的联合概率密度函数和,也就是得到等式左边卫随机变量x的边缘概率密度,也就是似然函数)
但可以看到(1)式中,有"和的对数",求导后形式会变得非常复杂,所以很难求得未知参数z和θ
式2 只是分子分母同乘以一个相等的函数,还是有和的对数,还是不好求解,那为啥要分子分母同时乘以这个
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i))?
接着看式(3)发现变成了对数的和,同时发现等号变成了不等号。(jensen不等式)
Jensen不等式:
设
f
f
f是定义域为实数的函数,如果对于所有的实数
x
,
f
(
x
)
x,f(x)
x,f(x)的二次导数大于等于0,那么f是凸函数。当x是向量时,如果其hessian矩阵是半正定的,那么f是凸函数,如果只大于0,不等于0,那么称f是严格凸函数。
Jensen不等式表述如下:
如果f是凸函数,x是随机变量,那么
E
[
f
(
x
)
]
>
=
f
(
E
(
x
)
)
E[f(x)]>=f(E(x))
E[f(x)]>=f(E(x))
特别的,如果f是严格凸函数,当且仅当X是常量时,上式取等号。
图中,f是凸函数,x是随机变量,有0.5的概率是a,有0.5的概率是b。x的期望值就是a和b的中值了,图中可以看到
E
[
f
(
x
)
]
>
=
f
(
E
(
x
)
)
E[f(x)]>=f(E(x))
E[f(x)]>=f(E(x))
当f是严格凹函数时,不等号反向。
现在再回头看上面的式2,因为 f ( x ) = l o g x 为 凹 函 数 f(x)=logx为凹函数 f(x)=logx为凹函数
注意此时 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))是一个分布,满足 ∑ Z Q i ( z ( i ) ) = 1 \displaystyle\sum_{Z}Q_i(z^{(i)})=1 Z∑Qi(z(i))=1
式中,
∑
z
(
i
)
Q
i
(
z
(
i
)
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
是
[
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
]
\displaystyle\sum_{z^{(i)}}Q_i(z^{(i)})\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}是[\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}]
z(i)∑Qi(z(i))Qi(z(i))p(x(i),z(i);θ)是[Qi(z(i))p(x(i),z(i);θ)]的期望,(
考
虑
E
(
X
)
=
∑
x
∗
p
(
x
)
,
f
(
x
)
是
x
的
函
数
考虑E(X)=\displaystyle\sum_{}x*p(x),f(x)是x的函数
考虑E(X)=∑x∗p(x),f(x)是x的函数
则
E
(
f
(
x
)
)
=
∑
f
(
x
)
∗
p
(
x
)
则E(f(x))=\displaystyle\sum f(x)*p(x)
则E(f(x))=∑f(x)∗p(x)
(其中
Q
i
(
z
(
i
)
)
相
当
于
p
(
x
)
,
而
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
则
相
当
于
f
(
x
)
Q_i(z^{(i)})相当于p(x),而\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}则相当于f(x)
Qi(z(i))相当于p(x),而Qi(z(i))p(x(i),z(i);θ)则相当于f(x))
因为log是凹函数。则
f
(
E
(
x
)
)
>
=
E
[
f
(
x
)
]
f(E(x))>=E[f(x)]
f(E(x))>=E[f(x)]
有:
∑
i
l
o
g
∑
z
(
i
)
Q
i
(
z
(
i
)
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
>
=
∑
i
∑
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
\displaystyle\sum_{i}log\displaystyle\sum_{z^{(i)}}Q_i(z^{(i)})\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}>=\displaystyle\sum_{i}\displaystyle\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}
i∑logz(i)∑Qi(z(i))Qi(z(i))p(x(i),z(i);θ)>=i∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)
到了这里,式3就容易求导了,但是式2和式3是不等号,式2的最大值不是式3的最大值,我们现在想得到式2的最大值,怎么办?
上面的2式和式3不等式可以写成:似然函数
L
(
θ
)
>
=
J
(
z
,
Q
)
L(θ)>=J(z,Q)
L(θ)>=J(z,Q),那么我们可以通过不断的最大化这个下界J,来使得L(θ)不断提高,最终达到它的最大值。
见上图,固定θ,调整Q(z)使得下界J(z,Q)上升至与L(θ)在此点θ处相等(绿色与蓝色曲线),然后固定Q(z),调整θ使得下界J(z,Q)达到最大值(
θ
t
到
θ
t
+
1
θ^t到θ^{t+1}
θt到θt+1),然后再固定θ,调整Q(z)……直到收敛到似然函数L(θ)的最大值处
θ
∗
θ^*
θ∗
2个问题:1)什么时候下界J(z,Q)与L(θ)在此点θ处相等?
2)为什么一定收敛?
首先第一个问题,在Jensen不等式中说到,当自变量x是常数的时候,等式成立。而在这里,即
p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) = c \frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})}=c Qi(z(i))p(x(i),z(i);θ)=c
再推导下,由于 ∑ Z Q i ( z ( i ) ) = 1 \displaystyle\sum_{Z}Q_i(z^{(i)})=1 Z∑Qi(z(i))=1(因为Q是随机变量 z ( i ) 的 概 率 密 度 函 数 z^{(i)}的概率密度函数 z(i)的概率密度函数),则可以得到:分子的和等于c(分子分母都对所有 z ( i ) z^{(i)} z(i)求和,多个等式的分子分母相加不变,这个认为每个样例的两个概率比值都是c)
则 Q i ( z ( i ) ) = p ( x ( i ) , z ( i ) ; θ ) ∑ z p ( x ( i ) , z ; θ ) Q_i(z^{(i)})=\frac{p(x^{(i)},z^{(i)};θ)}{\displaystyle\sum_{z}p(x^{(i)},z;θ)} Qi(z(i))=z∑p(x(i),z;θ)p(x(i),z(i);θ)
= p ( x ( i ) , z ( i ) ; θ ) p ( x ( i ) ; θ ) =\frac{p(x^{(i)},z^{(i)};θ)}{p(x^{(i)};θ)} =p(x(i);θ)p(x(i),z(i);θ)
= p ( z ( i ) ∣ x ( i ) ; θ ) =p(z^{(i)}|x^{(i)};θ) =p(z(i)∣x(i);θ)(贝叶斯定理)
重点:至此我们推出了在固定参数θ后,使得下界拉升的Q(z)的计算公式就是后验概率,解决了Q(z)如何选择的问题呢。这一步就是E步,建立L(θ)的下界。接下来的M步,就是在给定Q(z)后,调整θ,去极大化L(θ)的下界J,(在固定Q(z)后,下界还可以调整的更大)
(因为 ∑ z p ( x ( i ) , z ; θ ) = c \displaystyle\sum_{z}p(x^{(i)},z;θ)=c z∑p(x(i),z;θ)=c)
EM算法流程:
期望最大算法是一种从不完全数据中求解概率模型参数的最大似然估计方法。
初始化分布参数θ
重复一下步骤直到收敛:
E步骤:根据参数初始化值或上一次迭代的模型参数来计算出隐变量的后验概率(后验概率实际上就是条件概率)其实就是隐变量的期望。作为隐变量的现估计值:
Q i ( z ( i ) ) = p ( z ( i ) ∣ x ( i ) ; θ ) Q_i(z^{(i)})=p(z^{(i)}|x^{(i)};θ) Qi(z(i))=p(z(i)∣x(i);θ)
**M步骤:**将似然函数最大化以获得新的参数值
θ : = a r g m a x ∑ i ∑ z ( i ) Q i ( z ( i ) ) l o g p ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) θ:=argmax\displaystyle\sum_{i}\displaystyle\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{p(x^{(i)},z^{(i)};θ)}{Q_i(z^{(i)})} θ:=argmaxi∑z(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)
这个不断迭代,就可以得到使似然函数L(θ)最大化的参数θ。
EM算法的收敛性
思考两个问题:
1)EM算法能保证收敛吗?
2)EM算法如果收敛,那么能保证收敛到全局最大值吗?
关于收敛性,有2个定理:
**对数似然函数单调递增定理:**设P(Y|θ)为观测数据的似然函数,
θ
(
i
)
θ^{(i)}
θ(i)为EM算法得到的参数估计序列,P(Y|
θ
(
i
)
θ^{(i)}
θ(i))为对应的似然函数序列,则P(Y|
θ
(
i
)
θ^{(i)}
θ(i))是单调递增的,
即: P(Y|
θ
(
i
+
1
)
θ^{(i+1)}
θ(i+1))>P(Y|
θ
(
i
)
θ^{(i)}
θ(i))
**收敛性定理:**设P(Y|θ)为观测数据的似然函数,
θ
(
i
)
θ^{(i)}
θ(i)为EM算法得到的参数估计序列,P(Y|
θ
(
i
)
θ^{(i)}
θ(i))为对应的似然函数序列
1)如果P(Y|θ)有上界,则L(
θ
(
i
)
θ^{(i)}
θ(i))=logP(Y|
θ
(
i
)
θ^{(i)}
θ(i))收敛到某一值
L
∗
L^*
L∗
2)在函数Q(θ,
θ
i
θ^i
θi)与L(θ)满足一定的条件下,由EM算法得到的参数估计序列
θ
(
i
)
θ^{(i)}
θ(i)的收敛值
θ
∗
θ^*
θ∗是L(θ)的稳定点了(不能保证收敛到极大值点)