在前面的朴素贝叶斯分类器推导中,我们是基于训练样本所有属性值都是已知的这个假设,但是实际应用中往往存在训练样本的某些属性值未知,此时就需要用到EM算法来进行参数估计。EM算法的全称为最大期望算法(Expectation-Maximization algorithm),它是基于最大似然估计理论的一种优化算法,通常用来对存在隐变量的概率模型进行参数估计。
最大似然估计
假设我们在校园里随机找了100个男生和100个女生,来调查学生的身高分布。首先我们统计抽样得到的这100个男生的身高,假设他们的身高服从高斯分布
N
(
μ
,
σ
2
)
N(\mu,\sigma^2)
N(μ,σ2),但是分布参数
μ
,
σ
\mu,\sigma
μ,σ 未知,需要从抽取的样本中进行估计,为了方便将参数记为
θ
=
[
μ
,
σ
]
T
\theta=[\mu, \sigma]^{T}
θ=[μ,σ]T。
现在样本集为
X
=
{
x
1
,
x
2
,
…
,
x
N
}
X=\{x_1,x_2, \dots, x_N\}
X={x1,x2,…,xN},这里
x
i
x_i
xi 表示第
i
i
i 个样本的身高,
N
=
100
N=100
N=100 表示样本数。用
p
(
x
i
∣
θ
)
p(x_i|\theta)
p(xi∣θ)表示从分布为
p
(
x
∣
θ
)
p(x|\theta)
p(x∣θ) 的总体中抽到样本
i
i
i 的概率,由于每个样本是独立地从总体中抽取的,那么同时抽到这100个男生的概率(联合概率)可以表示为似然函数
L
(
θ
)
L(\theta)
L(θ):
L
(
θ
)
=
L
(
x
1
,
x
2
,
…
,
x
N
;
θ
)
=
∏
i
=
1
N
p
(
x
i
;
θ
)
θ
∈
Θ
(1)
L(\theta)=L\left(x_{1}, x_{2}, \ldots, x_{N} ; \theta\right)=\prod_{i=1}^{N} p\left(x_{i} ; \theta\right) \quad \theta \in \Theta \tag{1}
L(θ)=L(x1,x2,…,xN;θ)=i=1∏Np(xi;θ)θ∈Θ(1) 似然函数反映的是在参数为
θ
\theta
θ 的时候抽到这100个样本的概率。但是现在这100个样本已知而参数
θ
\theta
θ 未知,所以,我们的任务就是根据这100个样本来估计一个
θ
\theta
θ,使得在当前
θ
\theta
θ 取值下从总体中抽到这100个样本的概率最大。求得的这个
θ
^
\hat\theta
θ^ 叫做
θ
\theta
θ 的最大似然估计量:
θ
^
=
arg
max
L
(
θ
)
(2)
\hat{\theta}=\arg \max L(\theta)\tag{2}
θ^=argmaxL(θ)(2) 为了方便求解,通常情况下将式(1)转化为对数似然:
L
L
(
θ
)
=
ln
(
θ
)
=
ln
∏
i
=
1
N
p
(
x
i
;
θ
)
=
∑
i
=
1
N
ln
p
(
x
i
;
θ
)
(3)
LL(\theta)=\ln (\theta)=\ln \prod_{i=1}^{N} p\left(x_{i} ; \theta\right)=\sum_{i=1}^{N} \ln p\left(x_{i} ; \theta\right) \tag{3}
LL(θ)=ln(θ)=lni=1∏Np(xi;θ)=i=1∑Nlnp(xi;θ)(3)最后对于上式求导,导数为0的点解得的
θ
\theta
θ 就是估计出的参数。需要注意的是,上面这个例子中
θ
=
[
μ
,
σ
]
T
\theta=[\mu, \sigma]^{T}
θ=[μ,σ]T 包含了两个参数,因此对于多个参数的情况,需要对每个参数求偏导,偏导为0的方程构成的方程组的解就是最终参数的估计值。
总结一下求最大似然估计值的一般步骤就是:
- 写出似然函数;
- 对似然函数取对数得到对数似然函数;
- 对似然函数求导(或偏导),得到导数(或偏导数)为0的似然方程(方程组);
- 求解似然方程或方程组,得到参数估计值。
EM算法
上面最大似然函数例子中我们知道了怎么从男生的100个样本中估计出男生的身高分布参数,用同样的方法可以得到女生身高分布的参数。现在来考虑另一个问题——如果我们只得到了随机抽取的100个男生和100个女生的身高值,但是并没有记录每个身高值到底是女生还是男生的。这种情况下,两种高斯分布的样本混到一块儿了,这种情况下估计男生女生的身高分布就需要用到EM算法了。
将上面这个例子一般化,可以描述为:对于一个包含
m
m
m 个独立样本的样本集
X
=
{
x
(
1
)
,
x
(
2
)
,
…
,
x
(
m
)
}
X=\{x^{(1)},x^{(2)}, \dots, x^{(m)}\}
X={x(1),x(2),…,x(m)},每个样本
i
i
i 有一个属性
z
i
z_i
zi 是未知的(隐变量),现在需要对概率模型的参数
θ
\theta
θ 做最大似然估计。在详细介绍EM算法前我们先来了解一下两个需要用到的知识。
1. Jansen不等式
设
f
(
x
)
f(x)
f(x) 为定义域为实数的函数,若对于所有
x
x
x 都有
f
′
′
(
x
)
≥
0
f''(x)\geq 0
f′′(x)≥0,则
f
(
x
)
f(x)
f(x) 为凸函数,若
f
′
′
(
x
)
>
0
f''(x)> 0
f′′(x)>0,
f
(
x
)
f(x)
f(x) 为严格凸函数;反之,若对于所有
x
x
x 都有
f
′
′
(
x
)
≤
0
f''(x)\leq 0
f′′(x)≤0,则
f
(
x
)
f(x)
f(x) 为凹函数,当
f
′
′
(
x
)
f''(x)
f′′(x) 恒小于0时,
f
(
x
)
f(x)
f(x) 为严格凹函数。
Jansen不等式表述如下:
如果 f ( x ) f(x) f(x) 为凸函数, X X X 为随机变量,则 f ( E [ X ] ) ≤ E [ f ( X ) ] f(E[X]) \leq E[f(X)] f(E[X])≤E[f(X)];特别地,当 f ( x ) f(x) f(x) 为严格凸函数时, f ( E [ X ] ) = E [ f ( X ) ] f(E[X]) = E[f(X)] f(E[X])=E[f(X)] 当且仅当 p ( x = E [ X ] ) = 1 p(x=E[X])=1 p(x=E[X])=1,即 X X X 为常量。同样,如果 f ( x ) f(x) f(x) 为凹函数,则 f ( E [ X ] ) ≥ E [ f ( X ) ] f(E[X]) \geq E[f(X)] f(E[X])≥E[f(X)]。
下图可以直观地理解一下Jansen不等式:
2. Lazy Statistician规则
若 Y Y Y 是随机变量 X X X 的函数: Y = g ( X ) Y=g(X) Y=g(X),且 g ( ⋅ ) g(\cdot) g(⋅) 连续,则:
-
X
X
X 是离散型随机变量,分布律为
p
(
X
=
x
k
)
=
p
k
,
k
=
1
,
2
,
…
p(X=x_k)=p_k, k=1,2,\dots
p(X=xk)=pk,k=1,2,…,若
∑
k
=
1
∞
g
(
x
k
)
p
k
\sum_{k=1}^{\infty} \mathrm{g}\left(x_{k}\right) p_{k}
∑k=1∞g(xk)pk 绝对收敛,那么
E [ Y ] = E [ g ( X ) ] = ∑ k = 1 ∞ g ( x k ) p k (4) E[Y]=E[g(X)]=\sum_{k=1}^{\infty} \mathrm{g}\left(x_{k}\right) p_{k} \tag{4} E[Y]=E[g(X)]=k=1∑∞g(xk)pk(4) -
X
X
X 是连续型随机变量,概率密度函数为
f
(
x
)
f(x)
f(x),若
∫
−
∞
∞
g
(
x
)
f
(
x
)
d
x
\int_{-\infty}^{\infty} g(x) f(x) d x
∫−∞∞g(x)f(x)dx绝对收敛,那么
E [ Y ] = E [ g ( X ) ] = ∫ − ∞ ∞ g ( x ) f ( x ) d x (5) E[Y]=E[g(X)]=\int_{-\infty}^{\infty} g(x) f(x) dx \tag{5} E[Y]=E[g(X)]=∫−∞∞g(x)f(x)dx(5)
3. EM算法详细过程
回顾完Jansen不等式和Lazy Statistician规则之后,我们来详细的介绍EM算法的具体过程。给定的训练集为
X
=
{
x
(
1
)
,
x
(
2
)
,
…
,
x
(
m
)
}
X=\{x^{(1)},x^{(2)}, \dots, x^{(m)}\}
X={x(1),x(2),…,x(m)},每个样本间相互独立,每个样本的隐变量
z
i
z_i
zi 未知,要估计概率模型的参数
θ
\theta
θ,我们首先建立似然函数,这里直接用对数似然表示:
ℓ
(
θ
)
=
∑
i
=
1
m
ln
p
(
x
(
i
)
;
θ
)
(6)
\ell(\theta)=\sum_{i=1}^m \ln p\left(x^{(i)} ; \theta\right) \tag{6}
ℓ(θ)=i=1∑mlnp(x(i);θ)(6)根据边际概率分布和联合概率分布的关系,上式可以写成:
ℓ
(
θ
)
=
∑
i
=
1
m
ln
p
(
x
(
i
)
;
θ
)
=
∑
i
=
1
m
ln
∑
z
(
i
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
(7)
\ell(\theta)=\sum_{i=1}^m \ln p\left(x^{(i)} ; \theta\right)=\sum_{i=1}^m \ln \sum_{z^{(i)}} p\left(x^{(i)}, z^{(i)} ; \theta\right) \tag{7}
ℓ(θ)=i=1∑mlnp(x(i);θ)=i=1∑mlnz(i)∑p(x(i),z(i);θ)(7)由于隐变量
z
z
z 的存在,直接对上式进行最大似然估计得到
θ
\theta
θ 的估计值式很困难的。EM算法的中心思想就是,首先建立
ℓ
(
θ
)
\ell(\theta)
ℓ(θ) 的下界(E步),接下来最大化这个下界(M步),不断地重复这个过程直到收敛。
具体来说,首先我们假设隐变量
z
(
i
)
z^{(i)}
z(i) 服从某种分布
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)),满足
∑
z
Q
i
(
z
(
i
)
)
=
1
,
Q
i
(
z
(
i
)
)
≥
0
\sum_{z} Q_i(z^{(i)})=1, Q_i(z^{(i)})\geq0
∑zQi(z(i))=1,Qi(z(i))≥0,那么
ℓ
(
θ
)
=
∑
i
m
ln
∑
z
(
i
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
=
∑
i
m
ln
∑
z
(
i
)
Q
i
(
z
(
i
)
)
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
⩾
∑
i
m
∑
z
(
i
)
Q
i
(
z
(
i
)
)
ln
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
(8)
\begin{aligned} \ell(\theta) &=\sum_{i}^{m} \ln \sum_{z^{(i)}} p\left(x^{(i)}, z^{(i)} ; \theta\right) \\ &=\sum_{i}^{m} \ln \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)} \\ & \geqslant \sum_{i} ^{m}\sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \ln \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)} \end{aligned} \tag{8}
ℓ(θ)=i∑mlnz(i)∑p(x(i),z(i);θ)=i∑mlnz(i)∑Qi(z(i))Qi(z(i))p(x(i),z(i);θ)⩾i∑mz(i)∑Qi(z(i))lnQi(z(i))p(x(i),z(i);θ)(8) 从第2步到第3步的不等式由Jansen不等式和Lazy Statistician规则可以得到,其中
ln
(
x
)
\ln(x)
ln(x) 为凹函数。
式(8)可以看作是对
ℓ
(
θ
)
\ell(\theta)
ℓ(θ) 求了下界,此时若
θ
\theta
θ 给定,那么
ℓ
(
θ
)
\ell(\theta)
ℓ(θ) 取决于
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)) 和
p
(
x
(
i
)
,
z
(
i
)
)
p(x^{(i)}, z^{(i)})
p(x(i),z(i))。这样,我们通过调整
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)) 和
p
(
x
(
i
)
,
z
(
i
)
)
p(x^{(i)}, z^{(i)})
p(x(i),z(i)) 使得
ℓ
(
θ
)
\ell(\theta)
ℓ(θ) 的下界不断上升,方便起见我们将下界表示为
J
(
Q
,
z
)
=
∑
i
m
∑
z
(
i
)
Q
i
(
z
(
i
)
)
ln
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
J(Q,z)=\sum_{i} ^{m}\sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \ln \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}
J(Q,z)=i∑mz(i)∑Qi(z(i))lnQi(z(i))p(x(i),z(i);θ) 最大化下界就是得到使式(8)中不等式变成等式的
J
(
Q
,
z
)
J(Q,z)
J(Q,z),这样
J
(
Q
,
z
)
J(Q,z)
J(Q,z) 就等价于似然函数
ℓ
(
θ
)
\ell(\theta)
ℓ(θ)。那么怎么让式(8)中的等号成立呢?根据Jansen不等式,当且仅当随机变量为常数的时候等式才成立,即:
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
=
C
(9)
\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)} =C \tag{9}
Qi(z(i))p(x(i),z(i);θ)=C(9) 这里
C
C
C 表示常数,不依赖于
z
(
i
)
z^{(i)}
z(i),根据上式可以进一步得到
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
=
C
(
Q
i
(
z
(
i
)
)
)
∑
z
p
(
x
(
i
)
,
z
(
i
)
θ
)
=
C
(
∑
z
Q
i
(
z
(
i
)
)
)
{p\left(x^{(i)}, z^{(i)} ; \theta\right)=C\left(Q_{i}\left(z^{(i)}\right)\right)} \\ {\sum_{z} p\left(x^{(i)}, z^{(i)} \theta\right)=C\left(\sum_{z} Q_{i}\left(z^{(i)}\right)\right)}
p(x(i),z(i);θ)=C(Qi(z(i)))z∑p(x(i),z(i)θ)=C(z∑Qi(z(i))) 又因为
∑
z
Q
i
(
z
(
i
)
)
=
1
\sum_{z} Q_i(z^{(i)})=1
∑zQi(z(i))=1,所以
∑
z
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
=
C
\sum_{z} p\left(x^{(i)}, z^{(i)} ; \theta\right)=C
z∑p(x(i),z(i);θ)=C 进一步推导得到
Q
i
(
z
(
i
)
)
=
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
∑
z
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
=
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
p
(
x
(
i
)
;
θ
)
=
p
(
z
(
i
)
∣
x
(
i
)
;
θ
)
(10)
\begin{aligned} Q_i(z^{(i)}) &= \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{\sum_{z} p\left(x^{(i)}, z^{(i)} ; \theta\right)} \\&=\frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{p\left(x^{(i)} ; \theta\right)} \\&= p(z^{(i)}|x^{(i)}; \theta)\end{aligned} \tag{10}
Qi(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);θ)(10) 上式就是在固定了
θ
\theta
θ 之后如何拉升似然函数
ℓ
(
θ
)
\ell(\theta)
ℓ(θ) 的下界使得式(8)中不等式的等号成立,可以看到这里的
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)) 是个后验概率,这就是EM算法的E步。 接下来就是M步,在求得
Q
i
(
z
(
i
)
)
Q_i(z^{(i)})
Qi(z(i)) 后调整
θ
\theta
θ 使得
ℓ
(
θ
)
\ell(\theta)
ℓ(θ) 最大化。总结一下EM算法就是以下框架:
重复以下步骤直到算法收敛(达到最大迭代步骤或是两次迭代的
ℓ
(
θ
)
\ell(\theta)
ℓ(θ) 相差非常小):
E步:
Q
i
(
z
(
i
)
)
=
p
(
z
(
i
)
∣
x
(
i
)
;
θ
)
Q_i(z^{(i)})=p(z^{(i)}|x^{(i)}; \theta)
Qi(z(i))=p(z(i)∣x(i);θ)
M步:
θ
=
arg
max
θ
∑
i
=
1
m
∑
z
(
i
)
Q
i
(
z
(
i
)
)
log
p
(
x
(
i
)
,
z
(
i
)
;
θ
)
Q
i
(
z
(
i
)
)
\theta=\arg \max _{\theta} \sum_{i=1}^m \sum_{z^{(i)}} Q_{i}\left(z^{(i)}\right) \log \frac{p\left(x^{(i)}, z^{(i)} ; \theta\right)}{Q_{i}\left(z^{(i)}\right)}
θ=argθmaxi=1∑mz(i)∑Qi(z(i))logQi(z(i))p(x(i),z(i);θ)
可以证明在两次迭代 t t t 和 t + 1 t+1 t+1 过程中 ℓ ( θ ( t ) ) ≥ ℓ ( θ ( t + 1 ) ) \ell(\theta^{(t)}) \geq \ell(\theta^{(t+1)}) ℓ(θ(t))≥ℓ(θ(t+1)),具体证明过程这里不讲了,有兴趣可以参考。https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
总结
EM算法有很多应用,最典型的就是K-means聚类和混合高斯模型。
参考资料
文章参考整理自以下三篇博客,在此致谢
从最大似然到EM算法浅解
(EM算法)The EM Algorithm
EM算法