之前写过一篇文章EM 算法的 9 重境界之前两重,里面讲述了em算法的过程,本文是对前一篇文章的补充。
em算法中关键的公式推导如下:
绿色曲线是L的下界,我们每次先固定 θ(t)
θ(t),令q(z)=p(z|x,θ)
q(z)=p(z|x,θ),此时就是绿色曲线,此时我们再求下界绿色曲线的极值,求出此时的θ(t+1)
θ(t+1),将其带入kl散度,令此时q(z)=p(z|x,θ(t+1))
q(z)=p(z|x,θ(t+1)),得到一个新的下界,此时再求出新的θ
θ,不断重复这个过程。
简单回顾完上面的数学推导,我们通过例子来加深理解。
三个硬币
假设有三枚硬币A、B、C,每个硬币正面出现的概率是π、p、q。进行如下的掷硬币实验:先掷硬币A,正面向上选B,反面选C;然后掷选择的硬币,正面记1,反面记0。独立的进行10次实验,结果如下:1,1,0,1,0,0,1,0,1,1。假设只能观察最终的结果(0 or 1),而不能观测掷硬币的过程(不知道选的是B or C),问如何估计三硬币的正面出现的概率 π、p、q?
首先我们写出数据描述,
此处θ=(π、p、q)
θ=(π、p、q),X={x1,x2,…xm},每次投掷彼此独立,因此
上面针对每个数据(xi),就有求logp(x|θ)
logp(x|θ),针对上面的EM算法,我们来看下求解过程:
需要注意的是,这里的μi+1通过E步的计算就已经是一个常数了,后面的求导不需要把这个式子代入。
M步:针对L函数求导,L函数的表达式是
下面我们来对L分别对π、p、q求导,
再令这个结果等于0,即获得
另外两个参数p、q也可以通过求导求得。上面是通过数据公式推导求到的,下面我们换一种思路做。
假设上面我们观察到的序列中,我们已经知道了每个结果是由红色(coin B)还是绿色(coin C)投掷出来,那么我们就可以估计 π、p、q了,
π = 红色个数 / 总个数
p = 红色H个数 / 红色个数
q = 绿色H个数 / 绿色个数
现在的情况是,我们不明确每个结果是由红色还是绿色投掷而来,但是我们可以估计出这个概率:
p(z=1|x,θ) = p(x,z=1|θ) / p(x|θ)
这个之前推导过,是:
此时我们就可以得到硬币是红色的概率了:
此时,针对每个硬币,我们都能计算出属于红色和属于绿色的概率,此时我们再来预估π、p、q:
GMM模型
有了上面这个例子后,我们再来看GMM模型,高斯混合模型,混合模型即数据由多个分布组成,像上面三硬币例子,也是一个混合模型,先来描述下问题:
假设有数据D={x(1), … , x(m)} ,我们希望能够求出p(x(i), z(i))的联合分布,此处
p(x(i), z(i)) = p(x(i)|z(i))p(z(i))
z服从多项分布
而xi服从高斯分布
于是我们就能得到似然函数:
根据EM算法的套路,我们先假设假设参数已知,来求隐变量z的后验分布:
上面wji的意思是第i个数据属于第j个高斯的概率,具体计算就是:
上面式子中
是指x(i)在第j个高斯分布下的概率,
则是隐变量z是第k个高斯的概率。
然后在M-step中,我们就可以更新:
以上就是对于em算法例子的补充,本文最重要的概念就是隐变量z是一个分布,本文的两个例子,我们都假设z的先验分布是多项分布,后面我们会看到我们可以假设z是其他分布,此时又会新的变化,欢迎关注。
参考
【机器学习算法系列之一】EM算法实例分析
cs229-notes7b