赞
踩
EM算法是针对有隐变量的求解极大似然或者最大后验的有效方法。因为我也是正在学习的缘故,所以我将从一个初学者的角度,复现学习过程中遇到的种种问题,本文将从案例出发,对算法原理进行推导证明。
以下案例来自李航老师的《机器学习》
假如,我们现在有三枚硬币,A、B、C,它们正面朝上的概率的为 π 、 q 、 p \pi、q、p π、q、p。现在,我们要做的事情是,先抛硬币A,如果硬币A是正面,我们选择硬币B;否则如果硬币A是反面,我们选择硬币C。随后,抛选择到的硬币(B或C),如果正面朝上,则记作y=1,反面朝上,则记为y=0。
现在,我们假设,我们最终实验10次的结果得到的是
1 | 0 | 1 | 1 | 1 |
---|---|---|---|---|
1 | 1 | 0 | 0 | 0 |
现在,有一个问题。如果我们抛硬币的时候,无法知道从抛硬币A得到了B还是C,仅仅只知道了最终的结果,我们没有没办法求出参数 θ = { π , q , p } \theta=\{\pi,q,p\} θ={π,q,p}呢?
一般遇到这种问题,我们最初的思路是咋样的?是要我们做的实现足够多,就可以使用极大似然估计,求出对应的参数,所以
θ
^
=
max
θ
P
(
Y
∣
θ
)
\hat\theta=\max\limits_{\theta}P(Y|\theta)
θ^=θmaxP(Y∣θ)
其中,
Y
=
(
y
1
,
y
2
,
⋯
,
y
n
)
T
Y=(y_1,y_2,\cdots,y_n)^T
Y=(y1,y2,⋯,yn)T,代表·n个观测数据,y作为随机变量
对于 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ),最大的问题是什么?是我们压根不晓得它是什么概率分布,如果我们知道了他的概率分布,也就知道了这个似然函数是什么。那么就可以计算了。
仔细看这个东西,Y是从哪里得出来的?依题目,其是从B、C的出来的。那么我们是否可以将B、C引入进似然函数中来呢?答案是可以的,我们将他们记作z,称为隐变量,那么似然函数
P
(
Y
∣
θ
)
=
∑
Z
P
(
Y
,
Z
∣
θ
)
=
∑
Z
P
(
Y
∣
Z
,
θ
)
P
(
Z
∣
θ
)
其中
Z
=
(
z
1
,
z
2
,
⋯
,
z
n
)
T
Z=(z_1,z_2,\cdots,z_n)^T
Z=(z1,z2,⋯,zn)T,代表n个隐藏数据,z作为随机变量。
通过简单的变化,我们就可以表达出来了
首先来看 P ( Z ∣ θ ) P(Z|\theta) P(Z∣θ),这是什么?注意了,此处我们始终认为 θ \theta θ是一个参数,而不是随机变量,所以严谨一些,其还可以写作 P θ ( Z ) P_{\theta}(Z) Pθ(Z),所以其并不是条件概率,而是一个普通的概率,前面我们说到,Z就是选择B或者C的隐变量,那决定隐变量的取值的概率不就是 π \pi π吗?
所以对于正面朝上的概率为 P ( z i ∣ θ ) = π P(z_i|\theta)=\pi P(zi∣θ)=π,反面则为 P ( z i ∣ θ ) = 1 − π P(z_i|\theta)=1-\pi P(zi∣θ)=1−π。
那再看
P
(
y
i
∣
z
i
,
θ
)
P(y_i|z_i,\theta)
P(yi∣zi,θ),这不就是给定隐变量Z,求出
Y
i
Y_i
Yi的概率吗?所以
P
(
Y
∣
θ
)
=
∏
i
=
1
n
P
(
y
i
∣
θ
)
=
∏
i
=
1
n
∑
z
i
P
(
y
i
,
z
i
∣
θ
)
=
∏
i
=
1
n
[
π
q
y
i
(
1
−
q
)
1
−
y
i
+
(
1
−
π
)
p
y
i
(
1
−
p
)
1
−
y
i
]
所以
max
θ
P
(
Y
∣
θ
)
=
max
θ
∏
i
=
1
n
[
π
q
y
i
(
1
−
q
)
1
−
y
i
+
(
1
−
π
)
p
y
i
(
1
−
p
)
1
−
y
i
]
\max\limits_{\theta}P(Y|\theta)=\max\limits_{\theta}\prod\limits_{i=1}^n \left[ \pi{q}^{y_i}(1-q)^{1-y_i}+(1-\pi)p^{y_i}(1-p)^{1-y_i} \right]
θmaxP(Y∣θ)=θmaxi=1∏n[πqyi(1−q)1−yi+(1−π)pyi(1−p)1−yi]
再说一次,
θ
=
{
π
,
q
,
p
}
\theta=\{\pi,q,p\}
θ={π,q,p}
要求极大似然,第一眼看上去,想当燃取log求导。但是我们会发现并没有解析解。
那么该如何解决这个问题呢?这就要提到我们的EM算法了。
所谓EM算法,实际上是一种迭代收敛算法。其名字EM拆开,E代表均值,M代表极大值,因此其也叫均值极大算法。
EM算法分为两步。
①给定 P ( Z ∣ Y , θ t ) → E P ( Z ∣ Y , θ t ) [ l o g P ( Z , Y ∣ θ ) ] P(Z|Y,\theta^{t})\rightarrow{E_{P(Z|Y,\theta^{t})}\left[logP(Z,Y|\theta)\right]} P(Z∣Y,θt)→EP(Z∣Y,θt)[logP(Z,Y∣θ)]
② θ t + 1 = max θ E P ( Z ∣ Y , θ t ) [ l o g P ( Z , Y ∣ θ ) ] {\theta^{t+1}}=\max\limits_{\theta}{E_{P(Z|Y,\theta^{t})}\left[logP(Z,Y|\theta)\right]} θt+1=θmaxEP(Z∣Y,θt)[logP(Z,Y∣θ)]
注意了,这里的
E
P
(
Z
∣
Y
,
∣
θ
t
)
[
l
o
g
P
(
Z
,
Y
∣
θ
)
]
{E_{P(Z|Y,|\theta^{t})}\left[logP(Z,Y|\theta)\right]}
EP(Z∣Y,∣θt)[logP(Z,Y∣θ)]意为
l
o
g
P
(
Z
,
Y
∣
θ
)
logP(Z,Y|\theta)
logP(Z,Y∣θ)对
P
(
Z
∣
Y
,
θ
t
)
P(Z|Y,\theta^{t})
P(Z∣Y,θt)求均值。可以变化为(注意了,式子中,
P
(
Z
∣
Y
,
θ
t
)
P(Z|Y,\theta^{t})
P(Z∣Y,θt)是不在log里面的,仅仅是为了写作的简便,并且假设Z是连续变量,望知悉。下文亦如此)
E
P
(
Z
∣
Y
,
θ
t
)
[
l
o
g
P
(
Z
,
Y
∣
θ
)
]
=
∫
Z
l
o
g
P
(
Z
.
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
E_{P(Z|Y,\theta^{t})}\left[logP(Z,Y|\theta)\right]=\int_ZlogP(Z.Y|\theta)P(Z|Y,\theta^{t})dZ
EP(Z∣Y,θt)[logP(Z,Y∣θ)]=∫ZlogP(Z.Y∣θ)P(Z∣Y,θt)dZ
EM算法就是酱紫,只要不断地循环①、②步,最后就可以收敛。接下来的问题就是,这玩意儿是怎么来的?又为什么这样可以收敛?
下面先给出其具体推导
因为:
P
(
Y
)
=
P
(
Z
,
Y
)
P
(
Z
∣
Y
)
所以
:
P
(
Y
∣
θ
)
=
P
(
Z
,
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
)
所以
:
l
o
g
P
(
Y
∣
θ
)
=
l
o
g
P
(
Z
,
Y
∣
θ
)
−
l
o
g
P
(
Z
∣
Y
,
θ
)
引入关于隐变量的分布
q
(
Z
)
,并在等式右边
l
o
g
里面除以
q
(
Z
)
得:
l
o
g
P
(
Y
∣
θ
)
=
l
o
g
P
(
Z
,
Y
∣
θ
)
q
(
Z
)
−
l
o
g
P
(
Z
∣
Y
,
θ
)
q
(
Z
)
对等式左右两边同时对
q
(
Z
)
q(Z)
q(Z)积分
左边得
∫
Z
l
o
g
P
(
Y
∣
θ
)
q
(
Z
)
d
Z
=
l
o
g
P
(
Y
∣
θ
)
∫
Z
q
(
Z
)
d
Z
=
l
o
g
P
(
Y
∣
θ
)
\int_Z{logP(Y|\theta)}q(Z)dZ=logP(Y|\theta)\int_Z{q(Z)}dZ=logP(Y|\theta)
∫ZlogP(Y∣θ)q(Z)dZ=logP(Y∣θ)∫Zq(Z)dZ=logP(Y∣θ)
所以最终等式为
l
o
g
P
(
Y
∣
θ
)
=
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
q
(
Z
)
q
(
Z
)
d
Z
−
∫
Z
l
o
g
P
(
Z
∣
Y
,
θ
)
q
(
Z
)
q
(
Z
)
d
Z
=
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
q
(
Z
)
q
(
Z
)
d
Z
+
∫
Z
l
o
g
q
(
Z
)
P
(
Z
∣
Y
,
θ
)
q
(
Z
)
d
Z
仔细看,对于
∫
Z
l
o
g
q
(
Z
)
P
(
Z
∣
Y
,
θ
)
q
(
Z
)
d
Z
\int_Zlog\frac{q(Z)}{P(Z|Y,\theta)}q(Z)dZ
∫ZlogP(Z∣Y,θ)q(Z)q(Z)dZ,这个形式我一般称为两个概率分布的KL散度,意思可以简单理解为是两个概率分布的相似程度,所以
K
L
(
q
(
Z
)
∣
∣
P
(
Z
∣
Y
,
θ
)
)
=
∫
Z
l
o
g
q
(
Z
)
P
(
Z
∣
Y
,
θ
)
q
(
Z
)
d
KL(q(Z)||P(Z|Y,\theta))=\int_Zlog\frac{q(Z)}{P(Z|Y,\theta)}q(Z)d
KL(q(Z)∣∣P(Z∣Y,θ))=∫ZlogP(Z∣Y,θ)q(Z)q(Z)d
他表示概率概率分布
q
(
Z
)
q(Z)
q(Z)和
P
(
Z
∣
Y
.
θ
)
P(Z|Y.\theta)
P(Z∣Y.θ)的相似程度。它有个特性,KL散度是大于等于0,即
K
L
(
q
(
Z
)
∣
∣
P
(
Z
∣
Y
,
θ
)
)
≥
0
KL(q(Z)||P(Z|Y,\theta))\ge0
KL(q(Z)∣∣P(Z∣Y,θ))≥0,当且仅当
q
(
Z
)
=
P
(
Z
∣
Y
,
θ
)
q(Z)=P(Z|Y,\theta)
q(Z)=P(Z∣Y,θ)等号成立。
所以
l
o
g
P
(
Y
∣
θ
)
≥
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
q
(
Z
)
q
(
Z
)
d
z
logP(Y|\theta)\ge\int_Zlog\frac{P(Z,Y|\theta)}{q(Z)}q(Z)dz
logP(Y∣θ)≥∫Zlogq(Z)P(Z,Y∣θ)q(Z)dz
当
K
L
(
q
(
Z
)
∣
∣
P
(
Z
∣
Y
,
θ
)
)
=
0
KL(q(Z)||P(Z|Y,\theta))=0
KL(q(Z)∣∣P(Z∣Y,θ))=0时等号成立。
所以,要
max
θ
l
o
g
P
(
Y
∣
θ
)
\max\limits_{\theta}logP(Y|\theta)
θmaxlogP(Y∣θ),当
q
(
Z
)
=
P
(
Z
∣
Y
,
θ
t
)
q(Z)=P(Z|Y,\theta^{t})
q(Z)=P(Z∣Y,θt),
K
L
(
q
(
Z
)
∣
∣
P
(
Z
∣
Y
,
θ
t
)
)
=
0
KL(q(Z)||P(Z|Y,\theta^{t}))=0
KL(q(Z)∣∣P(Z∣Y,θt))=0,注意了,此时的
P
(
Z
∣
Y
,
θ
)
P(Z|Y,\theta)
P(Z∣Y,θ)里面的
θ
t
\theta^t
θt是上一轮的
θ
\theta
θ,为啥我要用上一轮的?因为EM是一个迭代式算法。并且这样后面可以进行收敛性证明
max
θ
l
o
g
P
(
Y
∣
θ
)
=
max
θ
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
=
max
θ
∫
Z
[
l
o
g
P
(
Z
,
Y
∣
θ
)
−
l
o
g
P
(
Z
∣
Y
,
θ
t
)
]
P
(
Z
∣
Y
,
θ
t
)
d
Z
=
max
θ
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
−
∫
Z
l
o
g
P
(
Z
∣
Y
,
θ
t
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
因为后面一部分的
θ
t
是确定的,所以
=
max
θ
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
=
θ
t
+
1
所以就推出来了。
对于我们的损失函数,我们只需要证明
l
o
g
P
(
Y
∣
θ
t
)
≤
l
o
g
P
(
Y
∣
θ
t
+
1
)
所以
l
o
g
P
(
Y
∣
θ
)
=
l
o
g
P
(
Y
,
Z
∣
θ
)
−
l
o
g
P
(
Z
∣
Y
,
θ
)
logP(Y|\theta)=logP(Y,Z|\theta)-logP(Z|Y,\theta)
logP(Y∣θ)=logP(Y,Z∣θ)−logP(Z∣Y,θ)
等式左右两边对
P
(
Z
∣
Y
,
θ
t
)
P(Z|Y,\theta^t)
P(Z∣Y,θt)求积分。左边
∫
Z
l
o
g
P
(
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
=
l
o
g
P
(
Y
∣
θ
)
∫
Z
P
(
Z
∣
Y
,
θ
t
)
=
l
o
g
P
(
Y
∣
θ
)
\int_ZlogP(Y|\theta)P(Z|Y,\theta^t)dZ=logP(Y|\theta)\int_ZP(Z|Y,\theta^t)=logP(Y|\theta)
∫ZlogP(Y∣θ)P(Z∣Y,θt)dZ=logP(Y∣θ)∫ZP(Z∣Y,θt)=logP(Y∣θ)
所以
l
o
g
P
(
Y
∣
θ
)
=
∫
Z
P
(
Y
,
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
−
∫
Z
l
o
g
P
(
Z
∣
Y
,
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
logP(Y|\theta)=\int_ZP(Y,Z|\theta)P(Z|Y,\theta^t)dZ-\int_Z{logP(Z|Y,\theta)}P(Z|Y,\theta^t)dZ
logP(Y∣θ)=∫ZP(Y,Z∣θ)P(Z∣Y,θt)dZ−∫ZlogP(Z∣Y,θ)P(Z∣Y,θt)dZ
定义Q函数和H函数
Q
(
θ
,
θ
t
)
=
∫
Z
P
(
Y
,
Z
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
H
(
θ
,
θ
t
)
=
−
∫
Z
l
o
g
P
(
Z
∣
Y
,
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
Q(\theta,\theta^t)=\int_ZP(Y,Z|\theta)P(Z|Y,\theta^t)dZ \\H(\theta,\theta^t)=-\int_Z{logP(Z|Y,\theta)}P(Z|Y,\theta^t)dZ
Q(θ,θt)=∫ZP(Y,Z∣θ)P(Z∣Y,θt)dZH(θ,θt)=−∫ZlogP(Z∣Y,θ)P(Z∣Y,θt)dZ
看这个Q函数,这不就是我们上面提到EM算法吗?我们上面是这样说到的
θ
t
+
1
=
max
θ
E
P
(
Z
∣
Y
,
∣
θ
t
)
[
l
o
g
P
(
Z
,
Y
∣
θ
)
]
=
max
θ
∫
Z
l
o
g
P
(
Z
.
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
\theta^{t+1}=\max\limits_{\theta}E_{P(Z|Y,|\theta^{t})}\left[logP(Z,Y|\theta)\right]=\max\limits_{\theta}\int_ZlogP(Z.Y|\theta)P(Z|Y,\theta^{t})dZ
θt+1=θmaxEP(Z∣Y,∣θt)[logP(Z,Y∣θ)]=θmax∫ZlogP(Z.Y∣θ)P(Z∣Y,θt)dZ
所以有
∫
Z
l
o
g
P
(
Z
.
Y
∣
θ
t
+
1
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
≥
∫
Z
l
o
g
P
(
Z
.
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
\int_ZlogP(Z.Y|\theta^{t+1})P(Z|Y,\theta^{t})dZ\ge\int_ZlogP(Z.Y|\theta)P(Z|Y,\theta^{t})dZ
∫ZlogP(Z.Y∣θt+1)P(Z∣Y,θt)dZ≥∫ZlogP(Z.Y∣θ)P(Z∣Y,θt)dZ
所以
Q
(
θ
t
+
1
,
θ
t
)
≥
Q
(
θ
,
θ
t
)
Q(\theta^{t+1},\theta^t)\ge{Q(\theta,\theta^t)}
Q(θt+1,θt)≥Q(θ,θt)
所以,不论
θ
\theta
θ取什么,始终成立,所以也有
Q
(
θ
t
+
1
,
θ
t
)
≥
Q
(
θ
t
,
θ
t
)
Q(\theta^{t+1},\theta^t)\ge{Q(\theta^t,\theta^t)}
Q(θt+1,θt)≥Q(θt,θt)
对于
H
(
θ
,
θ
t
)
H(\theta,\theta^t)
H(θ,θt),只需要同样证明
H
(
θ
t
+
1
,
θ
t
)
≥
H
(
θ
t
,
θ
t
)
H(\theta^{t+1},\theta^t)\ge{H(\theta^{t},\theta^t)}
H(θt+1,θt)≥H(θt,θt)
所以
H
(
θ
t
+
1
,
θ
t
)
−
H
(
θ
t
,
θ
t
)
≥
0
=
−
∫
Z
l
o
g
P
(
Z
∣
Y
,
θ
t
+
1
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
+
∫
Z
l
o
g
P
(
Z
∣
Y
,
θ
t
)
P
(
Z
∣
Y
,
θ
t
)
d
Z
≥
0
=
∫
Z
P
(
Z
∣
Y
,
θ
t
)
[
l
o
g
P
(
Z
∣
Y
,
θ
t
)
P
(
Z
∣
Y
,
θ
t
+
1
)
]
d
Z
=
K
L
(
P
(
Z
∣
Y
,
θ
t
)
∣
∣
P
(
Z
∣
Y
,
θ
t
+
1
)
)
同样的KL散度,根据性质恒大于等于0.
因为
P
(
Y
∣
θ
t
+
1
)
=
Q
(
θ
t
+
1
,
θ
t
)
+
H
(
θ
t
+
1
,
θ
t
)
;
P
(
Y
∣
θ
t
)
=
Q
(
θ
t
,
θ
t
)
+
H
(
θ
t
,
θ
t
)
;
P(Y|\theta^{t+1})=Q(\theta^{t+1},\theta^t)+H(\theta^{t+1},\theta^t); \\P(Y|\theta^{t})=Q(\theta^{t},\theta^t)+H(\theta^{t},\theta^t);
P(Y∣θt+1)=Q(θt+1,θt)+H(θt+1,θt);P(Y∣θt)=Q(θt,θt)+H(θt,θt);
所以得证
P
(
Y
∣
θ
t
+
1
)
≥
P
(
Y
∣
θ
t
)
P(Y|\theta^{t+1})\ge{P(Y|\theta^{t})}
P(Y∣θt+1)≥P(Y∣θt)
所以呢?既然算法本身可行,那直接用来解前面的问题就可以了嘛
在求解之前,为了防止出现误解,我们先对之前的所有的量都重定义一下,先先来定义一下观测变量y
Y
=
(
y
1
y
2
⋮
y
n
)
Y=
这里的Y表示其包含了所有数据,前面提到过,而
y
i
y_i
yi代表第i个数据。这些数据也被称为观测数据。也就是案例中我们观测到的数据(0或1)
除此之外,还有一个隐变量z,这些隐变量,实际上就是上文中提到的每次选出一个观测变量y,都会有一个对应的隐数据Z,也就是投掷硬币A得出的结果。定义隐变量z
Z
=
(
z
1
z
2
⋮
z
n
)
Z=
z
i
z_i
zi代表第i次实验得到的隐藏数据。
而隐变量和观测变量的对应数据的结合也被称为完整数据
(
Y
,
Z
)
=
(
(
y
1
,
z
1
)
(
y
2
,
z
2
)
⋮
(
y
n
,
z
n
)
)
(Y,Z)=
而对于硬币A,B,C正面的概率,为了方便表达我们做出以下定义
A | 正( C 1 C1 C1) | 反( C 2 C2 C2) |
---|---|---|
P P P | π 1 \pi_1 π1 | π 2 \pi_2 π2 |
C 1 C1 C1用作标记,下文中记作 C k Ck Ck,方便后面写并且 π 1 + π 2 = 1 \pi_1+\pi_2=1 π1+π2=1,即 ∑ k = 1 2 = 1 \sum\limits_{k=1}^2=1 k=1∑2=1
而对于B,C
B&C | B正( C 1 C1 C1) | C正( C 2 C2 C2)) |
---|---|---|
P P P | p 1 p_1 p1 | p 2 p_2 p2 |
现在,我们回顾一下我们的目标
max
θ
P
(
Y
∣
θ
)
\max\limits_{\theta}P(Y|\theta)
θmaxP(Y∣θ)
要使用EM对其求解,我们就要求出(Z是离散变量,故用
∑
\sum
∑)
E
P
(
Z
∣
Y
,
θ
t
)
[
l
o
g
P
(
Z
,
Y
∣
θ
)
]
=
∑
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
P
(
Z
∣
Y
,
θ
t
)
=
∑
Z
l
o
g
∏
i
=
i
n
P
(
z
i
,
y
i
∣
θ
)
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
在一般的算法模型中,一般情况下我们都会消去连乘号,因为其计算量相对复杂,并且求导的难度也大。
所以
∑
Z
l
o
g
∏
i
=
i
n
P
(
z
i
,
y
i
∣
θ
)
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
=
∑
Z
∑
i
=
1
n
l
o
g
P
(
z
i
,
y
i
∣
θ
)
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
=
∑
Z
[
l
o
g
P
(
z
1
,
y
1
∣
θ
)
+
l
o
g
P
(
z
2
,
y
2
∣
θ
)
+
⋯
+
l
o
g
P
(
z
n
,
y
n
∣
θ
)
]
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
=
∑
z
1
,
z
2
⋯
,
z
n
[
l
o
g
P
(
z
1
,
y
1
∣
θ
)
+
l
o
g
P
(
z
2
,
y
2
∣
θ
)
+
⋯
+
l
o
g
P
(
z
n
,
y
n
∣
θ
)
]
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
=
∑
z
1
,
z
2
⋯
,
z
n
l
o
g
P
(
z
1
,
y
1
∣
θ
)
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
+
∑
z
1
,
z
2
⋯
,
z
n
l
o
g
P
(
z
2
,
y
2
∣
θ
)
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
+
⋯
+
∑
z
1
,
z
2
⋯
,
z
n
l
o
g
P
(
z
n
,
y
n
∣
θ
)
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
我们先看第一项
∑
z
1
,
z
2
⋯
,
z
n
l
o
g
P
(
z
1
,
y
1
∣
θ
)
∏
i
=
1
P
(
z
i
∣
y
i
,
θ
t
)
=
∑
z
1
,
z
2
⋯
,
z
n
l
o
g
P
(
z
1
,
y
1
∣
θ
)
P
(
z
1
∣
y
1
,
θ
t
)
∏
i
=
2
P
(
z
i
∣
y
i
,
θ
t
)
=
∑
z
1
l
o
g
P
(
z
1
,
y
1
∣
θ
)
P
(
z
1
∣
y
1
,
θ
t
)
∑
z
2
⋯
,
z
n
∏
i
=
2
P
(
z
i
∣
y
i
,
θ
t
)
因为
∑
z
2
⋯
,
z
n
∏
i
=
2
P
(
z
i
∣
y
i
,
θ
t
)
积分为
1
=
∑
z
1
l
o
g
P
(
z
1
,
y
1
∣
θ
)
P
(
z
1
∣
y
1
,
θ
t
)
所以所有项相加就得
E
P
(
Z
∣
Y
,
θ
t
)
[
l
o
g
P
(
Z
,
Y
∣
θ
)
]
=
∑
i
=
1
n
∑
z
i
l
o
g
P
(
z
i
,
y
i
∣
θ
)
P
(
z
i
∣
y
i
,
θ
t
)
=
∑
i
=
1
n
∑
k
=
1
2
l
o
g
P
(
z
i
=
C
k
,
y
i
∣
θ
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
=
∑
k
=
1
2
∑
i
=
1
n
l
o
g
P
(
z
i
=
C
k
,
y
i
∣
θ
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
因此,式子最终变成了连加,接下来只要求出对应的概率即可
先看
P
(
y
)
P(y)
P(y),省略掉
θ
\theta
θ,因为他是参数,不是随机变量,因此对任意一个
y
i
y_i
yi,有
P
(
y
i
)
=
∑
z
i
P
(
y
i
,
z
i
)
=
∑
z
i
P
(
y
i
∣
z
i
)
P
(
z
i
)
=
∑
k
=
1
K
P
(
y
i
∣
z
i
=
C
k
)
P
(
z
i
=
C
k
)
=
∑
k
=
1
K
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
再看
P
(
y
,
z
)
P(y,z)
P(y,z)
P
(
y
i
,
z
i
=
C
k
)
=
P
(
y
i
∣
z
i
=
C
k
)
P
(
z
i
=
C
k
)
=
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
对于
P
(
z
∣
y
)
P(z|y)
P(z∣y)
P
(
z
i
=
C
k
∣
y
i
)
=
P
(
z
i
=
C
k
,
y
i
)
P
(
y
i
)
=
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
∑
k
=
1
K
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
请注意分子和分母的
k
k
k,分子的
k
k
k是输入的值,而分母的
k
k
k是求和符滴。
所以最终结果为
E
P
(
Z
∣
Y
,
θ
t
)
[
l
o
g
P
(
Z
,
Y
∣
θ
)
]
=
∑
k
=
1
2
∑
i
=
1
n
l
o
g
P
(
z
i
=
C
k
,
y
i
∣
θ
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
=
∑
k
=
1
2
∑
i
=
1
n
l
o
g
[
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
]
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
=
∑
k
=
1
2
∑
i
=
1
n
[
l
o
g
π
k
+
y
i
l
o
g
p
k
+
(
1
−
y
k
)
l
o
g
(
1
−
p
k
)
]
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
要求
θ
t
+
1
=
max
θ
E
P
(
Z
∣
Y
,
θ
t
)
[
l
o
g
P
(
Z
,
Y
∣
θ
)
]
{\theta^{t+1}}=\max\limits_{\theta}{E_{P(Z|Y,\theta^{t})}\left[logP(Z,Y|\theta)\right]}
θt+1=θmaxEP(Z∣Y,θt)[logP(Z,Y∣θ)]
就要对其关于 θ \theta θ求导,因为 θ = { π , p } \theta=\left\{\pi,p\right\} θ={π,p},因为他们又分为几个分量,比如 π = { π 1 , π 2 } \pi=\left\{\pi_1,\pi_2\right\} π={π1,π2},式子中又仅存在 π k \pi_k πk,故对 π k \pi_k πk求导。但是还有一个约束条件,就是前面提到的 ∑ k = 1 2 π k = 1 \sum\limits_{k=1}^2\pi_k=1 k=1∑2πk=1,因此这是一个带约束的优化问题。
故构造拉格朗日函数
L
(
θ
,
λ
)
=
∑
k
=
1
K
∑
i
=
1
n
[
l
o
g
π
k
+
y
i
l
o
g
p
k
+
(
1
−
y
k
)
l
o
g
(
1
−
p
k
)
]
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
λ
[
∑
k
=
1
2
π
k
−
1
]
L(\theta,\lambda)=\sum\limits_{k=1}^K\sum\limits_{i=1}^n\left[log \pi_k+y_ilogp_k+(1-y_k)log(1-p_k) \right]P(z_i=Ck|y_i,\theta^t)+\lambda\left[\sum\limits_{k=1}^2\pi_k-1\right]
L(θ,λ)=k=1∑Ki=1∑n[logπk+yilogpk+(1−yk)log(1−pk)]P(zi=Ck∣yi,θt)+λ[k=1∑2πk−1]
对
π
k
\pi_k
πk求导
∂
L
(
θ
,
λ
)
∂
π
k
=
∑
i
=
1
n
1
π
k
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
λ
=
0
等式左右乘以
π
k
得
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
λ
π
k
=
0
我们知道,对于
π
k
\pi_k
πk里面的
k
k
k,在本文中可以取到
π
1
\pi_1
π1和
π
2
\pi_2
π2,所以依据
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
λ
π
k
=
0
\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t)+\lambda{\pi_k}=0
i=1∑nP(zi=Ck∣yi,θt)+λπk=0,有
∑
i
=
1
n
P
(
z
i
=
C
1
∣
y
i
,
θ
t
)
+
λ
π
1
=
0
∑
i
=
1
n
P
(
z
i
=
C
2
∣
y
i
,
θ
t
)
+
λ
π
2
=
0
\sum\limits_{i=1}^nP(z_i=C1|y_i,\theta^t)+\lambda{\pi_1}=0 \\\sum\limits_{i=1}^nP(z_i=C2|y_i,\theta^t)+\lambda{\pi_2}=0
i=1∑nP(zi=C1∣yi,θt)+λπ1=0i=1∑nP(zi=C2∣yi,θt)+λπ2=0
也即
∑
i
=
1
n
P
(
z
i
=
C
1
∣
y
i
,
θ
t
)
+
λ
π
1
+
∑
i
=
1
n
P
(
z
i
=
C
2
∣
y
i
,
θ
t
)
+
λ
π
2
=
0
\sum\limits_{i=1}^nP(z_i=C1|y_i,\theta^t)+\lambda{\pi_1}+\sum\limits_{i=1}^nP(z_i=C2|y_i,\theta^t)+\lambda{\pi_2}=0
i=1∑nP(zi=C1∣yi,θt)+λπ1+i=1∑nP(zi=C2∣yi,θt)+λπ2=0
即
∑
k
=
1
2
[
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
λ
π
k
]
=
0
即
∑
k
=
1
2
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
∑
k
=
1
2
λ
π
k
=
0
∑
i
=
1
n
∑
k
=
1
2
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
λ
∑
k
=
1
2
π
k
=
0
因为
∑
k
=
1
2
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
=
∑
z
i
P
(
z
i
∣
y
i
,
θ
t
)
=
1
所以
∑
i
=
1
n
1
+
λ
=
0
→
n
+
λ
=
0
→
λ
=
−
n
将所得结果回代
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
+
λ
π
k
=
0
\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t)+\lambda{\pi_k}=0
i=1∑nP(zi=Ck∣yi,θt)+λπk=0
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
−
n
π
k
=
0
\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t)-n{\pi_k}=0
i=1∑nP(zi=Ck∣yi,θt)−nπk=0
移向整理得
π
k
=
1
n
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
\pi_k=\frac{1}{n}\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t)
πk=n1i=1∑nP(zi=Ck∣yi,θt)
再让原来的拉格朗日函数对
p
k
p_k
pk求导
∂
L
(
θ
,
λ
)
∂
p
k
=
∑
i
=
1
n
[
(
y
i
p
k
−
1
−
y
i
1
−
p
k
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
]
=
0
即
∑
i
=
1
n
[
(
y
i
(
1
−
p
k
)
p
k
(
1
−
p
k
)
−
(
1
−
y
i
)
p
k
(
1
−
p
k
)
p
k
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
]
=
0
∑
i
=
1
n
[
y
i
−
p
k
p
k
(
1
−
p
k
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
]
=
0
即
1
p
k
(
1
−
p
k
)
∑
i
=
1
n
[
(
y
i
−
p
k
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
]
=
0
∑
i
=
1
n
[
(
y
i
−
p
k
)
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
]
=
0
∑
i
=
1
n
y
i
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
−
∑
i
=
1
n
p
k
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
=
0
即
∑
i
=
1
n
y
i
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
−
p
k
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
=
0
移项得:
p
k
=
∑
i
=
1
n
y
i
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
前面我们推过
P
(
z
i
=
C
k
∣
y
i
)
=
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
∑
k
=
1
K
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
总结得到以下结果
π
k
=
1
n
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
;
p
k
=
∑
i
=
1
n
y
i
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
\pi_k=\frac{1}{n}\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t); \\p_k=\frac{\sum\limits_{i=1}^ny_iP(z_i=Ck|y_i,\theta^t)}{\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t)}
πk=n1i=1∑nP(zi=Ck∣yi,θt);pk=i=1∑nP(zi=Ck∣yi,θt)i=1∑nyiP(zi=Ck∣yi,θt)
其中
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
P(z_i=Ck|y_i,\theta^t)
P(zi=Ck∣yi,θt)代表用上一轮的参数求出的概率
我们所要求的,是 π 1 , p 1 , p 2 \pi_1,p_1,p_2 π1,p1,p2。
首先,因为是迭代算法,所以我们随机初始化 π 1 t = 0.5 , p 1 t = 0.5 , p 2 t = 0.5 \pi_1^t=0.5,p_1^t=0.5,p_2^t=0.5 π1t=0.5,p1t=0.5,p2t=0.5
先求出
P
(
z
i
=
C
k
∣
y
i
,
θ
)
P(z_i=Ck|y_i,\theta)
P(zi=Ck∣yi,θ),比如求
P
(
z
i
=
C
1
∣
y
i
,
θ
)
P(z_i=C1|y_i,\theta)
P(zi=C1∣yi,θ),里面所有的量我们都是知道的,求出来之后,就可以根据上面推导出来的公式求出
π
1
t
+
1
,
p
1
t
+
1
,
p
2
t
+
1
=
\pi_1^{t+1},p_1^{t+1},p_2^{t+1}=
π1t+1,p1t+1,p2t+1=。假如
P
(
z
i
=
C
1
∣
y
i
)
=
p
1
y
i
(
1
−
p
1
)
1
−
y
i
π
1
∑
k
=
1
K
p
k
y
i
(
1
−
p
k
)
1
−
y
i
π
k
这里的参数都是
θ
t
π
1
t
+
1
=
1
n
∑
i
=
1
n
P
(
z
i
=
C
1
∣
y
i
,
θ
t
)
;
p
1
t
+
1
=
∑
i
=
1
n
y
i
P
(
z
i
=
C
1
∣
y
i
,
θ
t
)
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
p
2
t
+
1
=
∑
i
=
1
n
y
i
P
(
z
i
=
C
2
∣
y
i
,
θ
t
)
∑
i
=
1
n
P
(
z
i
=
C
k
∣
y
i
,
θ
t
)
P(z_i=C1|y_i)=\frac{p_1^{y_i}(1-p_1)^{1-y_i}\pi_1}{\sum\limits_{k=1}^Kp_k^{y_i}(1-p_k)^{1-y_i}\pi_k}这里的参数都是\theta^t \\\pi_1^{t+1}=\frac{1}{n}\sum\limits_{i=1}^nP(z_i=C1|y_i,\theta^t); \\p_1^{t+1}=\frac{\sum\limits_{i=1}^ny_iP(z_i=C1|y_i,\theta^t)}{\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t)} \\p_2^{t+1}=\frac{\sum\limits_{i=1}^ny_iP(z_i=C2|y_i,\theta^t)}{\sum\limits_{i=1}^nP(z_i=Ck|y_i,\theta^t)}
P(zi=C1∣yi)=k=1∑Kpkyi(1−pk)1−yiπkp1yi(1−p1)1−yiπ1这里的参数都是θtπ1t+1=n1i=1∑nP(zi=C1∣yi,θt);p1t+1=i=1∑nP(zi=Ck∣yi,θt)i=1∑nyiP(zi=C1∣yi,θt)p2t+1=i=1∑nP(zi=Ck∣yi,θt)i=1∑nyiP(zi=C2∣yi,θt)
其中
P
(
z
i
=
C
2
∣
y
i
,
θ
t
)
=
1
−
P
(
z
i
=
C
1
∣
y
i
,
θ
t
)
P(z_i=C2|y_i,\theta^t)=1-P(z_i=C1|y_i,\theta^t)
P(zi=C2∣yi,θt)=1−P(zi=C1∣yi,θt),以上的这些量,我们都是知道的,都是可以直接算出来的,因此只需要不断迭代更新即可。
然后不断地循环这个步骤,直到模型收敛,模型什么时候收敛呢?就是当 θ t + 1 ≈ θ t \theta^{t+1}\approx\theta^{t} θt+1≈θt,代表收敛,我们就不必迭代更新了。
实际上,在很多情况情况下,我们并不知道 P ( Z ∣ Y , θ t ) P(Z|Y,\theta^t) P(Z∣Y,θt)是什么,或者即便是知道了,也干脆就求不出 P ( Z ∣ Y , θ t ) P(Z|Y,\theta^t) P(Z∣Y,θt)
前面我们提到, q ( Z ) = P ( Z ∣ Y , θ t ) q(Z)=P(Z|Y,\theta^t) q(Z)=P(Z∣Y,θt),既然求不出 P ( Z ∣ Y , θ t ) P(Z|Y,\theta^t) P(Z∣Y,θt),那就尝试求出 q ( Z ) q(Z) q(Z)
前面我们提到
l
o
g
P
(
Y
∣
θ
)
=
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
q
(
Z
)
q
(
Z
)
d
Z
+
∫
Z
l
o
g
q
(
Z
)
P
(
Z
∣
Y
,
θ
)
q
(
Z
)
d
Z
可以
q
(
Z
)
q(Z)
q(Z)是什么呢?Z是隐变量,我们肯定也得不出,但是否也可以像是迭代求
θ
\theta
θ一样,迭代求出
q
(
Z
)
q(Z)
q(Z)?可以的。先来看求解步骤
分为两步
①固定θ, q ( Z ) q + 1 = max q ∫ Z l o g P ( Z , Y ∣ θ ) q ( Z ) q ( Z ) d Z q(Z)^{q+1}=\max\limits_{q}\int_Zlog\frac{P(Z,Y|\theta)}{q(Z)}q(Z)dZ q(Z)q+1=qmax∫Zlogq(Z)P(Z,Y∣θ)q(Z)dZ
②固定q, θ t + 1 = max θ ∫ Z l o g P ( Z , Y ∣ θ ) q ( Z ) q ( Z ) d Z \theta^{t+1}=\max\limits_{\theta}\int_Zlog\frac{P(Z,Y|\theta)}{q(Z)}q(Z)dZ θt+1=θmax∫Zlogq(Z)P(Z,Y∣θ)q(Z)dZ
为何第一步是是这样呢?我们来看
l
o
g
P
(
Y
∣
θ
)
logP(Y|\theta)
logP(Y∣θ),我们希望
q
(
Z
)
=
P
(
Z
∣
Y
,
θ
t
)
q(Z)=P(Z|Y,\theta^t)
q(Z)=P(Z∣Y,θt),那么也就是要是他们的KL散度最小。第一步是固定
θ
\theta
θ,那么对于
l
o
g
P
(
Y
∣
θ
)
logP(Y|\theta)
logP(Y∣θ)的值就是固定的。而我们的目标,就是要使得
q
(
Z
)
,
P
(
Z
∣
Y
,
θ
t
)
q(Z),P(Z|Y,\theta^t)
q(Z),P(Z∣Y,θt)这两个分布越相近越好。因此
min
q
(
Z
)
∫
Z
l
o
g
q
(
Z
)
P
(
Z
∣
Y
,
θ
)
q
(
Z
)
d
Z
\min\limits_{q(Z)}\int_Zlog\frac{q(Z)}{P(Z|Y,\theta)}q(Z)dZ
q(Z)min∫ZlogP(Z∣Y,θ)q(Z)q(Z)dZ
又因为
l
o
g
P
(
Y
∣
θ
)
logP(Y|\theta)
logP(Y∣θ),所以最小化这个KL散度,相当于
max
q
(
Z
)
∫
Z
l
o
g
P
(
Z
,
Y
∣
θ
)
q
(
Z
)
q
(
Z
)
d
Z
\max\limits_{q(Z)}\int_Zlog\frac{P(Z,Y|\theta)}{q(Z)}q(Z)dZ
q(Z)max∫Zlogq(Z)P(Z,Y∣θ)q(Z)dZ
因此。实际上这个广义EM的第一步就是找出一个与
P
(
Z
∣
Y
,
θ
t
)
P(Z|Y,\theta^t)
P(Z∣Y,θt)最相近的
q
(
Z
)
q(Z)
q(Z),找到了之后实际上就是又回到了狭义EM的那一个步骤。
以上便是EM算法的推导和案例讲解,我也正是在学习的,如有问题,还望点点您的小手指给我指出,阿里嘎多
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。