本博客是个人学习EM算法的总结性想法,写的目的主要是梳理关于EM算法的思路。由于篇幅和时间问题,有些公式推导部分没有写全。学习参考李航的《统计学习方法》和b站up"shuhuai008"的机器学习视频。在此安利up主"shuhuai008"的视频,推导非常详细,而且该up主对机器学习各种算法和思想理解的特别到位,是我学习机器学习算法中遇到的视频教材,准备有时间二刷,然后手动推导一遍里面的公示。值得一看,对于我这种本一之后很少接触数学的小白,有很大的启发意义。
EM算法是一种迭代算法,其存在是为了解决求解含有隐变量的概率模型的参数的问题。对于不含隐变量的概率模型(例如普通高斯模型),使用极大似然估计(求偏导)的方法就可以求得概率模型中所含参数的解析解。如果含有隐变量,模型无法得到参数的解析解,在这种时候,就需要通过一些方法得到模型的近似解,EM算法就是这么一种方法,通过不断的迭代,让t+1步的参数值相比于t步的参数值更接近真实结果,从而得到关于模型参数的近似解。模型参数求出,模型就可以确定了,我们的问题也可以随之解决。因此,虽然EM算法经常和HMM、CRF一起出现。但是两者性质并不相同,EM是一种参数求解算法。HMM和CRF是一种概率模型的建模形式。这个关系类似于神经网络和优化算法的关系。
定义问题
Y
Y
Y为观测变量,
P
(
Y
∣
θ
)
P(Y|\theta )
P(Y∣θ)为问题的似然函数。
P
(
Y
∣
θ
)
=
∑
Z
P
(
Z
∣
θ
)
P
(
Y
∣
Z
,
θ
)
P(Y|\theta )=\sum_{Z}^{ }P(Z|\theta )P(Y|Z,\theta)
P(Y∣θ)=∑ZP(Z∣θ)P(Y∣Z,θ),其中
Z
Z
Z为隐含变量。和Y模型相关的参数是
θ
\theta
θ,Z是为了求解关于Y的模型引入的隐变量,隐变量Z不可观测。因此,为了求解模型
P
(
Y
∣
θ
)
P(Y|\theta )
P(Y∣θ),需要使用积分的方法将含有Z的参数消掉,也就是公式中表示的关于Z求和的过程。
θ
^
=
arg
max
θ
l
o
g
P
(
Y
∣
θ
)
\hat{\theta }=\mathop{\arg\max}_{\theta} \ \ logP(Y|\theta )
θ^=argmaxθ logP(Y∣θ)。
EM算法
EM算法通过迭代求
L
(
θ
)
=
l
o
g
P
(
Y
∣
θ
)
L(\theta )=logP(Y|\theta )
L(θ)=logP(Y∣θ)的极大似然估计。EM算法包含两步:E步,求期望;M步,求极大化。EM算法的步骤如下(抄自李航统计学习方法)。
输入:观测变量数据Y,隐变量数据Z,联合分布
P
(
Y
,
Z
∣
θ
)
P(Y,Z|\theta )
P(Y,Z∣θ),条件分布
P
(
Z
∣
Y
,
θ
)
P(Z|Y,\theta)
P(Z∣Y,θ);
输出:模型参数
θ
\theta
θ。
(1) 选择参数的初值
θ
(
0
)
\theta ^{(0)}
θ(0),开始迭代;
(2) E步:记
θ
(
i
)
\theta ^{(i)}
θ(i)为第i次迭代参数
θ
\theta
θ的估计值,在第i+1次迭代的E步,计算
Q
(
θ
,
θ
(
i
)
)
=
E
z
[
l
o
g
P
(
Y
,
Z
∣
θ
)
∣
Y
,
θ
(
i
)
]
=
∑
Z
l
o
g
P
(
Y
,
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
(
i
)
)
Q(\theta ,\theta ^{(i)})=E_{z}[logP(Y,Z|\theta )|Y,\theta ^{(i)}]=\sum_{Z}^{ }logP(Y,Z|\theta)P(Z|Y,\theta ^{(i)})
Q(θ,θ(i))=Ez[logP(Y,Z∣θ)∣Y,θ(i)]=∑ZlogP(Y,Z∣θ)P(Z∣Y,θ(i))
这里,
P
(
Z
∣
Y
,
θ
(
i
)
)
P(Z|Y,\theta ^{(i)})
P(Z∣Y,θ(i))是在给定观测数据Y和当前的参数估计
θ
(
i
)
\theta ^{(i)}
θ(i)下隐变量数据Z的条件改了分布;
(3) M步:求使
Q
(
θ
,
θ
(
i
)
)
Q(\theta ,\theta ^{(i)})
Q(θ,θ(i))极大化的
θ
\theta
θ,确定第i+1次迭代的参数的估计值
θ
(
i
+
1
)
\theta ^{(i+1)}
θ(i+1)。
θ
(
i
+
1
)
=
arg
max
θ
Q
(
θ
,
θ
(
i
)
)
\theta ^{(i+1)}=\mathop{\arg\max}_{\theta}Q(\theta ,\theta ^{(i)})
θ(i+1)=argmaxθQ(θ,θ(i))
(4) 重复第(2)步和第(3)步,直到收敛。
其中 Q ( θ , θ ( i ) ) Q(\theta ,\theta ^{(i)}) Q(θ,θ(i))是EM算法的核心,称为Q函数。此外,求期望在数学里就是求积分。可表示为 E z P ( X ) = ∫ z P ( z ) P ( X ) d z E_{z}P(X)=\int_{z}^{ }P(z)P(X)dz EzP(X)=∫zP(z)P(X)dz。是估计的下界。
算法的证明过程可以分成两种,一种是从
l
o
g
P
(
Y
∣
θ
)
=
l
o
g
P
(
X
,
Z
∣
θ
)
−
l
o
g
P
(
Z
∣
X
,
θ
)
logP(Y|\theta )=logP(X,Z|\theta )-logP(Z|X,\theta )
logP(Y∣θ)=logP(X,Z∣θ)−logP(Z∣X,θ)出发,两边同时求期望,得到
l
o
g
P
(
Y
∣
θ
)
logP(Y|\theta )
logP(Y∣θ)的下界ELBO。ELBO变大,
l
o
g
P
(
Y
∣
θ
)
logP(Y|\theta )
logP(Y∣θ)也会变大,逐步将ELBO变大并求其最大值,可以让参数
θ
\theta
θ得到最优解。这里的ELBO就是Q函数。
另外一种证明方法是用Jensen不等式证明。Jensen不等式为
f
(
E
)
≥
E
[
f
]
f(E)\geq E[f]
f(E)≥E[f],先求期望,再求函数值
≥
\geq
≥先求函数值,再求期望。用Jessen不等式证明过程相较于第一种方法更简单。
EM算法的变种
狭义上的EM算法是先求期望,再求最大值。广义上的EM算法是
E-step:
q
t
+
1
=
arg
max
q
L
(
q
,
θ
(
t
)
)
q^{t+1}=\mathop{\arg\max}_{q} L(q,\theta ^{(t)})
qt+1=argmaxqL(q,θ(t))。
M-step:
θ
t
+
1
=
arg
max
θ
L
(
q
t
+
1
,
θ
)
\theta ^{t+1}=\mathop{\arg\max}_{\theta } L(q^{t+1},\theta )
θt+1=argmaxθL(qt+1,θ)
其中q为关于Z的概率分布。整个过程可以描述为固定
θ
\theta
θ,求q。固定q,求
θ
\theta
θ。优化的过程类似于坐标上升法(SMO),其核心思想也是固定一个或两个参数,再求其余参数。
EM算法的应用-混合高斯模型
混合高斯模型是描述多个高斯加权平均值的生成模型。其可以描述如下:
P
(
X
)
=
∑
k
=
1
K
α
k
N
(
μ
k
,
∑
k
)
,
∑
k
=
1
K
α
k
=
1
P(X)=\sum_{k=1}^{K}\alpha _{k}N(\mu_{k},\sum _{k}), \sum_{k=1}^{K}\alpha _{k}=1
P(X)=∑k=1KαkN(μk,∑k),∑k=1Kαk=1
直接使用MLE算法,无法求得参数的解析解。所以使用EM算法,求解参数值。具体的迭代公示,根据Q函数,结合GMM概率分布的特点可以得到。