赞
踩
EM(Expectation-Maximum)算法也称期望最大化算法,曾入选“数据挖掘十大算法”中,可见EM算法在机器学习、数据挖掘中的影响力。EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断等等。
EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以算法被称为EM算法(Expectation Maximization Algorithm)。EM算法受到缺失思想影响,最初是为了解决数据缺失情况下的参数估计问题,其算法基础和收敛有效性等问题在Dempster,Laird和Rubin三人于1977年所做的文章Maximum likelihood from incomplete data via the EM algorithm中给出了详细的阐述。其基本思想是:首先根据己经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。
EM算法作为一种数据添加算法,在近几十年得到迅速的发展,主要源于当前科学研究以及各方面实际应用中数据量越来越大的情况下,经常存在数据缺失或者不可用的的问题,这时候直接处理数据比较困难,而数据添加办法有很多种,常用的有神经网络拟合、添补法、卡尔曼滤波法等等,但是EM算法之所以能迅速普及主要源于它算法简单,稳定上升的步骤能非常可靠地找到“最优的收敛值”。随着理论的发展,EM算法己经不单单用在处理缺失数据的问题,运用这种思想,它所能处理的问题更加广泛。有时候缺失数据并非是真的缺少了,而是为了简化问题而采取的策略,这时EM算法被称为数据添加技术,所添加的数据通常被称为“潜在数据”,复杂的问题通过引入恰当的潜在数据,能够有效地解决我们的问题。
上面我们先假设学校所有学生的身高服从正态分布 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2) 。实际情况并不是这样的,男生和女生分别服从两种不同的正态分布,即男生 ∈ N ( μ 1 , σ 1 2 ) \in N(\mu_1,\sigma_1^2) ∈N(μ1,σ12) ,女生 ∈ N ( μ 2 , σ 2 2 ) \in N(\mu_2,\sigma_2^2) ∈N(μ2,σ22) ,(注意:EM算法和极大似然估计的前提是一样的,都要假设数据总体的分布,如果不知道数据分布,是无法使用EM算法的)。那么该怎样评估学生的身高分布呢?
简单啊,我们可以随便抽 100 个男生和 100 个女生,将男生和女生分开,对他们单独进行极大似然估计。分别求出男生和女生的分布。
假如某些男生和某些女生好上了,纠缠起来了。咱们也不想那么残忍,硬把他们拉扯开。这时候,你从这 200 个人(的身高)里面随便给我指一个人(的身高),我都无法确定这个人(的身高)是男生(的身高)还是女生(的身高)。用数学的语言就是,抽取得到的每个样本都不知道是从哪个分布来的。那怎么办呢?
这个时候,对于每一个样本或者你抽取到的人,就有两个问题需要估计了,一是这个人是男的还是女的,二是男生和女生对应的身高的正态分布的参数是多少。这两个问题是相互依赖的:
当我们知道了每个人是男生还是女生,我们可以很容易利用极大似然对男女各自的身高的分布进行估计。
反过来,当我们知道了男女身高的分布参数我们才能知道每一个人更有可能是男生还是女生。例如我们已知男生的身高分布为 N ( μ 1 = 172 , σ 1 2 = 5 2 ) N(\mu_1=172, \sigma_1^2=5^2) N(μ1=172,σ12=52) , 女生的身高分布为 N ( μ 2 = 162 , σ 2 2 = 5 2 ) N(\mu_2=162,\sigma_2^2=5^2) N(μ2=162,σ22=52) ,
一个学生的身高为180,我们可以推断出这个学生为男生的可能性更大。
但是现在我们既不知道每个学生是男生还是女生,也不知道男生和女生的身高分布。这就成了一个先有鸡还是先有蛋的问题了。鸡说,没有我,谁把你生出来的啊。蛋不服,说,没有我,你从哪蹦出来啊。为了解决这个你依赖我,我依赖你的循环依赖问题,总得有一方要先打破僵局,不管了,我先随便整一个值出来,看你怎么变,然后我再根据你的变化调整我的变化,然后如此迭代着不断互相推导,最终就会收敛到一个解(草原上的狼和羊,相生相克)。这就是EM算法的基本思想了。
EM的意思是“Expectation Maximization”,具体方法为:
上面的学生属于男生还是女生我们称之为隐含参数,女生和男生的身高分布参数称为模型参数。
EM 算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含参数(EM 算法的 E 步),接着基于观察数据和猜测的隐含参数一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐含参数是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。我们基于当前得到的模型参数,继续猜测隐含参数(EM算法的 E 步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
一个最直观了解 EM 算法思路的是 K-Means 算法。在 K-Means 聚类时,每个聚类簇的质心是隐含数据。我们会假设 K 个初始化质心,即 EM 算法的 E 步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即 EM 算法的 M 步。重复这个 E 步和 M 步,直到质心不再变化为止,这样就完成了 K-Means 聚类。
设是定义在实数域上的函数,如果对于任意的实数,都有:
f
′
′
≥
0
f^{\prime\prime}\ge 0
f′′≥0
那么是凸函数。若不是单个实数,而是由实数组成的向量,此时,如果函数的 Hesse 矩阵是半正定的,即
H
′
′
≥
0
H^{\prime\prime}\ge 0
H′′≥0
是凸函数。特别地,如果
f
′
′
≥
0
f^{\prime\prime}\ge 0
f′′≥0 或者
H
′
′
≥
0
H^{\prime\prime}\ge 0
H′′≥0,称为严格凸函数。(为什么我感觉这个H不应该加两撇)
如下图,如果函数
f
f
f 是凸函数,
x
x
x 是随机变量,有 0.5 的概率是 a,有 0.5 的概率是 b,
x
x
x 的期望值就是 a 和 b 的中值了那么:
E
[
f
(
x
)
]
≥
f
(
E
(
x
)
)
E[f(x)]\ge f(E(x))
E[f(x)]≥f(E(x))
其中,
E
[
f
(
x
)
]
=
0.5
f
(
a
)
+
0.5
f
(
b
)
,
f
(
E
(
x
)
)
=
f
(
0.5
a
+
0.5
b
)
E[f(x)]=0.5f(a)+0.5f(b),f(E(x))=f(0.5a+0.5b)
E[f(x)]=0.5f(a)+0.5f(b),f(E(x))=f(0.5a+0.5b) ,这里 a 和 b 的权值为 0.5,
f
(
a
)
f(a)
f(a) 与 a 的权值相等,f(b) 与 b 的权值相等。
特别地,如果函数
f
f
f 是严格凸函数,当且仅当:
p
(
x
=
E
(
x
)
)
=
1
p(x=E(x))=1
p(x=E(x))=1 (即随机变量是常量) 时等号成立。
注:若函数 [公式] 是凹函数,Jensen不等式符号相反。
对于离散型随机变量 X 的概率分布为
p
i
=
p
{
X
=
x
i
}
p_i=p\{X=x_i\}
pi=p{X=xi} ,数学期望
E
(
X
)
E(X)
E(X) 为:
E
(
x
)
=
∑
i
x
i
p
i
E(x)=\sum_ix_ip_i
E(x)=i∑xipi
p i p_i pi 是权值,满足两个条件 1 ≥ p i ≥ 0 , ∑ i p i = 1 1\ge p_i\ge 0, \quad \sum\limits_ip_i=1 1≥pi≥0,i∑pi=1 。
若连续型随机变量X的概率密度函数为
f
(
x
)
f(x)
f(x) ,则数学期望
E
(
x
)
E(x)
E(x) 为:
E
(
x
)
=
∫
−
∞
+
∞
x
f
(
x
)
d
x
E(x)=\int_{-\infty}^{+\infty}xf(x)dx
E(x)=∫−∞+∞xf(x)dx
设
Y
=
g
(
x
)
Y=g(x)
Y=g(x), 若
X
X
X 是离散型随机变量,则:
E
(
Y
)
=
∑
j
g
(
x
i
)
p
i
E(Y)=\sum_j g(x_i)p_i
E(Y)=j∑g(xi)pi
若
X
X
X是连续型随机变量,则:
E
(
x
)
=
∫
−
∞
+
∞
g
(
x
)
f
(
x
)
d
x
E(x)=\int_{-\infty}^{+\infty}g(x)f(x)dx
E(x)=∫−∞+∞g(x)f(x)dx
对于 m m m 个相互独立的样本 x = ( x ( 1 ) , x ( 2 ) , . . . , x ( m ) ) x=(x^{(1)},x^{(2)},...,x^{(m)}) x=(x(1),x(2),...,x(m)) ,对应的隐含数据 z = ( z ( 1 ) , z ( 2 ) , . . . , z ( m ) ) z=(z^{(1)},z^{(2)},...,z^{(m)}) z=(z(1),z(2),...,z(m)) ,此时 ( x , z ) (x,z) (x,z) 即为完全数据,样本的模型参数为 θ \theta θ , 则观察数据 x ( i ) x^{(i)} x(i) 的概率为 p ( x ( i ) ∣ θ ) p(x^{(i)}|\theta) p(x(i)∣θ) ,完全数据 ( x ( i ) , z ( i ) ) (x^{(i)},z^{(i)}) (x(i),z(i)) 的似然函数为 P ( x ( i ) , z ( i ) ∣ θ ) P(x^{(i)},z^{(i)}|\theta) P(x(i),z(i)∣θ) 。
假如没有隐含变量
z
z
z,我们仅需要找到合适的
θ
\theta
θ 极大化对数似然函数即可:
θ
=
arg max
θ
L
(
θ
)
=
arg max
θ
∑
i
=
1
m
l
o
g
P
(
x
(
i
)
∣
θ
)
\theta=\argmax_\theta L(\theta)=\argmax_\theta\sum_{i=1}^mlogP(x^{(i)}|\theta)
θ=θargmaxL(θ)=θargmaxi=1∑mlogP(x(i)∣θ)
增加隐含变量
z
z
z 之后,我们的目标变成了找到合适的
θ
\theta
θ 和
z
z
z 让对数似然函数极大:
θ
,
z
=
arg max
θ
,
z
L
(
θ
,
z
)
=
arg max
θ
,
z
∑
i
=
1
m
l
o
g
∑
z
(
i
)
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
\theta, z=\argmax_{\theta,z} L(\theta,z)=\argmax_{\theta,z}\sum_{i=1}^mlog\sum_{z^{(i)}}P(x^{(i)},z^{(i)}|\theta)
θ,z=θ,zargmaxL(θ,z)=θ,zargmaxi=1∑mlogz(i)∑P(x(i),z(i)∣θ)
不就是多了一个隐变量 z z z 吗?那我们自然而然会想到分别对未知的 θ \theta θ 和 z z z 分别求偏导,这样做可行吗?
理论上是可行的,然而如果对分别对未知的
θ
\theta
θ 和
z
z
z 分别求偏导,由于
l
o
g
P
(
x
(
i
)
∣
θ
)
logP(x^{(i)}|\theta)
logP(x(i)∣θ) 是
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
P(x^{(i)},z^{(i)}|\theta)
P(x(i),z(i)∣θ) 边缘概率(建议没基础的同学网上搜一下边缘概率的概念),转化为
l
o
g
P
(
x
(
i
)
∣
θ
)
logP(x^{(i)}|\theta)
logP(x(i)∣θ) 求导后形式会非常复杂(可以想象下
l
o
g
(
f
1
(
x
)
+
f
2
(
x
)
+
f
3
(
x
)
+
.
.
.
)
log(f_1(x)+f_2(x)+f_3(x)+...)
log(f1(x)+f2(x)+f3(x)+...) 复合函数的求导) ,所以很难求解得到
θ
\theta
θ 和
z
z
z 。那么我们想一下可不可以将加号从 log 中提取出来呢?我们对这个式子进行缩放如下:
∑
i
=
1
m
l
o
g
∑
z
(
i
)
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
=
∑
i
=
1
m
l
o
g
∑
z
(
i
)
Q
i
(
z
(
i
)
)
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
Q
i
(
z
(
i
)
)
(
1
)
≥
∑
i
=
1
m
∑
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
Q
i
(
z
(
i
)
)
(
2
)
上面第(1)式引入了一个未知的新的分布
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)),满足:
∑
z
Q
i
(
z
)
=
1
,
0
≤
Q
i
(
z
)
≤
1
\sum_zQ_i(z)=1,0\le Q_i(z)\le1
z∑Qi(z)=1,0≤Qi(z)≤1
第(2)式用到了 Jensen 不等式 (对数函数是凹函数):
l
o
g
(
E
(
y
)
)
≥
E
(
l
o
g
(
y
)
)
log(E(y))\ge E(log(y))
log(E(y))≥E(log(y))
其中:
E
(
y
)
=
∑
i
λ
i
y
i
,
λ
i
≥
0
,
∑
i
λ
i
=
1
y
i
=
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
Q
i
(
z
(
i
)
)
λ
i
=
Q
i
(
z
(
i
)
)
也就是说
y
i
=
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
Q
i
(
z
(
i
)
)
y_i=\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}
yi=Qi(z(i))P(x(i),z(i)∣θ) 为第 i 个样本,
λ
i
=
Q
i
(
z
(
i
)
)
\lambda_i=Q_i(z^{(i)})
λi=Qi(z(i)) 为第 i 个样本对应的权重,那么:
E
(
l
o
g
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
Q
i
(
z
(
i
)
)
)
=
∑
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
Q
i
(
z
(
i
)
)
E(log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})})=\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}
E(logQi(z(i))P(x(i),z(i)∣θ))=z(i)∑Qi(z(i))logQi(z(i))P(x(i),z(i)∣θ)
上式我实际上是我们构建了 L ( θ , z ) L(\theta,z) L(θ,z) 的下界,我们发现实际上就是 l o g P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})} logQi(z(i))P(x(i),z(i)∣θ) 的加权求和,由于上面讲过权值 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i)) 累积和为1,因此上式是 l o g P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})} logQi(z(i))P(x(i),z(i)∣θ) 的加权平均,也是我们所说的期望,这就是Expectation的来历啦。下一步要做的就是寻找一个合适的 Q i ( z ) Q_i(z) Qi(z) 最优化这个下界(M步)。
假设
θ
\theta
θ 已经给定,那么
l
o
g
L
(
θ
)
logL(\theta)
logL(θ) 的值就取决于
Q
i
(
z
)
Q_i(z)
Qi(z) 和
p
(
x
(
i
)
,
z
(
i
)
)
p(x^{(i)},z^{(i)})
p(x(i),z(i)) 了。我们可以通过调整这两个概率使下界逼近
l
o
g
L
(
θ
)
logL(\theta)
logL(θ) 的真实值,当不等式变成等式时,说明我们调整后的下界能够等价于
l
o
g
L
(
θ
)
logL(\theta)
logL(θ) 了。由 Jensen 不等式可知,等式成立的条件是随机变量是常数,则有:
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
Q
i
(
z
(
i
)
)
=
c
\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})}=c
Qi(z(i))P(x(i),z(i)∣θ)=c
其中 c 为常数,对于任意
i
i
i,我们得到:
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
=
c
Q
i
(
z
(
i
)
)
P(x^{(i)},z^{(i)}|\theta)=cQ_i(z^{(i)})
P(x(i),z(i)∣θ)=cQi(z(i))
方程两边同时累加和:
∑
z
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
=
c
∑
z
Q
i
(
z
(
i
)
)
\sum_zP(x^{(i)},z^{(i)}|\theta)=c\sum_zQ_i(z^{(i)})
z∑P(x(i),z(i)∣θ)=cz∑Qi(z(i))
由于
∑
z
Q
i
(
z
(
i
)
)
=
1
\sum_zQ_i(z^{(i)})=1
∑zQi(z(i))=1。 从上面两式,我们可以得到:
∑
z
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
=
c
Q
i
(
z
(
i
)
)
=
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
c
=
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
∑
z
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
=
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
P
(
x
(
i
)
∣
θ
)
=
P
(
z
(
i
)
∣
x
(
i
)
,
θ
)
\sum_zP(x^{(i)},z^{(i)}|\theta)=c\\Q_i(z^{(i)})=\frac{P(x^{(i)},z^{(i)}|\theta)}{c}=\frac{P(x^{(i)},z^{(i)}|\theta)}{\sum_zP(x^{(i)},z^{(i)}|\theta)}=\frac{P(x^{(i)},z^{(i)}|\theta)}{P(x^{(i)}|\theta)}=P(z^{(i)}|x^{(i)},\theta)
z∑P(x(i),z(i)∣θ)=cQi(z(i))=cP(x(i),z(i)∣θ)=∑zP(x(i),z(i)∣θ)P(x(i),z(i)∣θ)=P(x(i)∣θ)P(x(i),z(i)∣θ)=P(z(i)∣x(i),θ)
其中:
边缘概率公式: P ( x ( i ) ∣ θ ) = ∑ z P ( x ( i ) , z ( i ) ∣ θ ) P(x^{(i)}|\theta)=\sum_zP(x^{(i)},z^{(i)}|\theta) P(x(i)∣θ)=∑zP(x(i),z(i)∣θ)
条件概率公式: P ( x ( i ) , z ( i ) ∣ θ ) P ( x ( i ) ∣ θ ) = P ( z ( i ) ∣ x ( i ) , θ ) \frac{P(x^{(i)},z^{(i)}|\theta)}{P(x^{(i)}|\theta)}=P(z^{(i)}|x^{(i)},\theta) P(x(i)∣θ)P(x(i),z(i)∣θ)=P(z(i)∣x(i),θ)
从上式可以发现 Q ( z ) Q(z) Q(z)是已知样本和模型参数下的隐变量分布。
如果 ∑ z P ( x ( i ) , z ( i ) ∣ θ ) = P ( z ( i ) ∣ x ( i ) , θ ) \sum_zP(x^{(i)},z^{(i)}|\theta)=P(z^{(i)}|x^{(i)},\theta) ∑zP(x(i),z(i)∣θ)=P(z(i)∣x(i),θ) , 则第 (2) 式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要极大化下式: a r g max θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) arg\max_\theta\sum_{i=1}^m\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)},z^{(i)}|\theta)}{Q_i(z^{(i)})} argθmaxi=1∑mz(i)∑Qi(z(i))logQi(z(i))P(x(i),z(i)∣θ)
至此,我们推出了在固定参数 θ \theta θ 后分布 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i)) 的选择问题, 从而建立了 l o g L ( θ ) logL(\theta) logL(θ) 的下界,这是 E 步,接下来的M 步骤就是固定 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i)) 后,调整 θ \theta θ,去极大化 l o g L ( θ ) logL(\theta) logL(θ)的下界。
去掉上式中常数的部分
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)),则我们需要极大化的对数似然下界为:
a
r
g
max
θ
∑
i
=
1
m
∑
z
(
i
)
Q
i
(
z
(
i
)
)
l
o
g
P
(
x
(
i
)
,
z
(
i
)
∣
θ
)
arg\max_\theta\sum_{i=1}^m\sum_{z^{(i)}}Q_i(z^{(i)})logP(x^{(i)},z^{(i)}|\theta)
argθmaxi=1∑mz(i)∑Qi(z(i))logP(x(i),z(i)∣θ)
现在我们总结下EM算法的流程。
输入:观察数据 x = ( x ( 1 ) , x ( 2 ) , . . . , x ( m ) ) x=(x^{(1)},x^{(2)},...,x^{(m)}) x=(x(1),x(2),...,x(m)),联合分布 p ( x , z ∣ θ ) p(x,z|\theta) p(x,z∣θ) ,条件分布 p ( z ∣ x , θ ) p(z|x,\theta) p(z∣x,θ), 极大迭代次数 J J J 。
随机初始化模型参数 θ \theta θ 的初值 θ 0 \theta^0 θ0
for j from 1 to J:
重复E、M步骤直到 θ \theta θ 收敛
输出:模型参数 θ \theta θ
坐标上升法(Coordinate ascent)(类似于梯度下降法,梯度下降法的目的是最小化代价函数,坐标上升法的目的是最大化似然函数;梯度下降每一个循环仅仅更新模型参数就可以了,EM算法每一个循环既需要更新隐含参数和也需要更新模型参数
图中的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。
这犹如在x-y坐标系中找一个曲线的极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。对应到EM上,E步:固定 θ,优化Q;M步:固定 Q,优化 θ;交替将极值推向极大。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。