前言
对于隐变量模型,我们不仅有可观测值
x,还有隐含状态:
z,而我们的目的就是最大化
P(x,z∣θ),
θ表示模型的参数。如果
z是已知的那么我们可以采用传统MLE的计算方式 确认目标函数,采用梯度下降法优化参数:
argmaxlogP(x,z∣θ)=logP(z∣θ)+logP(x∣z,θ)
但是如果
z是未知的,那么只有
x是可观测的那么我们的公式:
argmaxlogP(x,z∣θ)=∑zlogP(z∣θ)⋅P(x∣z,θ)
这个时候我们再采用MLE是不好计算的,因为我们多了一个未知参数
z。这个时候我们就用到了另一种优化算法叫做EM算法
EM算法
θ:模型参数
z:隐含状态
x:可观测值
l(θ)=lnp(x∣θ)目标函数
l(θn)=lnp(x∣θn)前n次计算的结果
换个思路:我们最大化
argmaxl(θ)相当于最大化
argmaxl(θ)−l(θn)也就是这一次的结果要比前
n次越大越好根据这个思路我们来推导一下:
argmaxl(θ)−l(θn)=lnp(x∣θ)−lnp(x∣θn)=ln∑zP(x,z∣θ)−lnp(x∣θn)
=ln∑zP(x∣z,θ)⋅P(z∣θ)−lnp(x∣θn)=ln∑zP(x∣z,θ)⋅P(z∣θ)⋅P(z∣x,θn)P(z∣x,θn)−lnp(x∣θn)
上一步的目的主要是利用Jensen不等式将
ln从
∑外移入
∑内
Jensen不等式:
ln∑i=1nλiXi≥∑i=1nλilnXi
条件:
∑i=1nλi=1
根据jensen不等式的原理我们来继续上面的推导:
ln∑zP(x∣z,θ)⋅P(z∣θ)⋅P(z∣x,θn)P(z∣x,θn)−lnp(x∣θn)≥∑zP(z∣x,θn)⋅lnP(z∣x,θn)P(z∣θ)⋅P(x∣z,θ)−lnp(x∣θn)
=∑zP(z∣x,θn)⋅lnP(z∣x,θn)p(x∣θn)P(z∣θ)⋅P(x∣z,θ)=g(θ,θn)
因此:
l(θ)−l(θn)≥g(θ,θn),也就是
l(θ)≥l(θn)+g(θ,θn)
因为
l(θn)+g(θ,θn)是
l(θ)的下限,因此我们最大化
l(θn)+g(θ,θn)也就相当于最大化
l(θ)
所以下面继续推导
l(θn)+g(θ,θn)
argmax[l(θn)+g(θ,θn)]=argmaxl(θn)+∑zP(z∣x,θn)⋅lnP(z∣x,θn)p(x∣θn)P(z∣θ)⋅P(x∣z,θ)
因为我们优化的是
θ,并且我们的目的是最大化,所以我们可以去掉与
θ无关的项,因此在公式中去掉
l(θn),
P(z∣x,θn)和
p(x∣θn):
=argmax∑zP(z∣x,θn)⋅lnP(z∣θ)⋅P(z∣x,θ)=argmax∑zP(z∣x,θn)⋅lnP(z∣θ)⋅P(x∣z,θ)
=argmax∑zP(z∣x,θn)⋅lnP(x,z∣θ)=argmaxEz∣x,θn{lnP(x,z∣θ)}
也就是说我们最大化
l(θ)等价于最大化
Ez∣x,θn{lnP(x,z∣θ)}这就是EM算法
根据公式我们可以看出EM算法的计算流程:
第一步:
根据
θn求期望得出隐含变量
z
第二步:
再根据隐含变量
z求出
θ
我们把第一步叫做
E(求期望)第二步叫做
M(最大化)
EM算法特点:
1、找到的是局部最优解
2、严格递增的函数
经过我们的推导就可以看出来,它目的每次迭代就找到比上一次结果更加优秀的解。
k-means算法
k-means是利用了EM算法的思想。
x:表示数据集
uk:表示中心点(参数)
rnk:每个点的状态(属于哪个类)
rnk概念,
xn属于k类为1,不属于k类为0
目标函数:
minmize∑n=1N∑k=1Krnk∣∣xn−uk∣∣2
E步,给定上一次计算的
uk−1计算
rnk:
minmize
∑k=1Krnk∣∣xn−uk−1∣∣2找到与词距离最近的
uk并记录到
rnk
M步:记录完
rnk后更新
uk
其实就是用到了EM的思想