天天看点

混合模型聊EM算法

直接上问题

现在有俩盒子A和B,装着一模一样的硬币们。然后小明手上有个装了些纸团的盒子,纸团颜色有红色和绿色。

有这么个问题,小明需要先从纸团盒子里掏纸,如果是红面,那他就从盒子A里面随便掏出一枚硬币扔,记录是正是反,如果是从纸团盒子里掏纸的颜色是绿色,他就从盒子B里面随便掏出一枚硬币扔,记录是正是反。现在小明照着这个有病的路子操作了,记录结果是[正,反,正,正,正,反,反,正,反,正]。他把这记录告诉了小红,让小红猜,这些结果,哪些是来自盒子A,哪些是盒子B。

混合模型聊EM算法

小红说:“臭直男”。

(完)

然鹅再另一个平行宇宙,小明问了小红同样的问题。小红掏出了EM算法…

小红先假设了一波

先假设知道这些硬币的结果[正,反,正,正,正,反,反,正,反,正]是从哪个盒子出来的,那可以先这样假设[正,反,正,正,正,反,反,正,反,正]。其中红色表示从盒子A出来的,绿色表示从盒子B 出来的。

于是根据这个栗子

抽到红色纸团的概率 = 6/10 = 3/5

记为p(抽到红色纸团的概率) = π = 3/5

抽到绿色纸团的概率 = 4/10 = 2/5 = 1-3/5 = 1-π

记为p(抽到红色纸团的概率) = 1-π = 2/5

然后盒子A里面的硬币是正面的概率,设为q,于是盒子A里面的硬币是反面的概率,设为1-q。

q = 4/6 = 2/3

摸盒子A里面的硬币然后一扔是反面的概率 = 1-q = 1/3

同样滴

然后盒子B里面的硬币是正面的概率,设为 r, 于是盒子A里面的硬币是反面的概率,设为1-r。

摸盒子B里面的硬币然后一扔是正面的概率 = 2/4 = 1/2

摸盒子B里面的硬币然后一扔是反面的概率 = 2/4 = 1-r = 1/2

我们把π,q,r合一起叫θ。记为θ =(π,q,r)– [相当于是一个三维的向量]。

小红开始建模了

由于涉及到一个有纸团的盒子,我们需要插入个隐含变量Z。这个z有俩值,一个是红(z=1)(盒子A),一个是绿(z=0)(盒子B)。

分解公式

于是p(x = 1, z=1| θ)表示当用π,q,r的时候,硬币是从盒子A跳出来的并且是正面的概率。

因为联合概率p(x, z)可以写成条件概率p(x| z)p(z)

所以p(x = 1, z=1| θ) = p(x = 1| z=1, θ)p(z=1| θ)

同理p(x = 1, z=0| θ) = p(x = 1| z=0, θ)p(z=0| θ)就是硬币是从盒子B跳出来的并且是正面的概率。

合一起就是p(x = 1, z | θ) = p(x = 1| z=1, θ)p(z=1| θ) + p(x = 1| z=0, θ)p(z=0| θ)

意思就是当硬币是正面时的概率 = 从盒子A跳出来的并且是正面的概率 + 从盒子B跳出来的并且是正面的概率

关于红纸团和绿纸团

结合上面小红的假设,可以这样表示

z=1(红纸团-A盒子掏硬币) --> p(z=1|θ) = π

z=0 (绿纸团-B盒子掏硬币) --> p(z=1|θ) = 1-π

关于硬币

因为掷硬币符合伯努利分布

P(x) = px(1-p)1-x, x=0,1

于是

p(x|z=1,θ) = qx(1-q)1-x , x=0,1

p(x|z=0,θ) = rx(1-r)1-x , x=0,1

纸团,硬币,整合公式

整合上面的三大坨,我们得到:

p(x | θ) = p(x,z|θ) = Σ1z=0 p(x|z,θ)p(z=|θ) = p(x| z=1, θ)p(z=1| θ) + p(x| z=0, θ)p(z=0| θ)

=πqx(1-q)1-x + (1-π)rx(1-r)1-x

它的极大似然值

Πi=1…N p(x | θ) = p(xi | θ)

log Πi=1…N p(x | θ) = log p(xi | θ)

正面来自不同盒子的概率

p(正面来自盒子A) = πqx(1-q)1-x / πqx(1-q)1-x + (1-π)rx(1-r)1-x

p(正面来自盒子B) = 1 - p(正面来自盒子A) = (1-π)rx(1-r)1-x / πqx(1-q)1-x + (1-π)rx(1-r)1-x

为了方便,记作

p(正面来自盒子A) = μ

p(正面来自盒子B) = 1 - μ

所以可以说如果掏出[正,反,正,正,正,反,反,正,反,正]的第三个值,有一部分概率是来自盒子A+另一部分概率来自盒子B

EM算法(Expectation-Maximization algorithm)[最大期望算法]登场

有了p(正面来自盒子A)和p(正面来自盒子B)了,就可以用这俩再表示π,q,r了

π 是来自盒子A的硬币概率

π = (第1次硬币是正面并且来自盒子A的概率 + 第2次硬币是正面并且来自盒子A的概率 + 第3次硬币是正面并且来自盒子A的概率 + … + 第N次硬币是正面并且来自盒子A的概率) 的平均 = N次硬币是正面并且来自盒子A的概率 / N = Σi=1…N p(第 i 正面来自盒子A) / N = Σi=1…N μ(xi) / N (N是投硬币的次数,栗子中是10)

q = p(第 i 正面来自盒子A) * 硬币的面 / p(第 i 正面来自盒子A) 其中硬币的面 = 1 or 0 [1是正面,0是反面]

r = p(第 i 正面来自盒子B) * 硬币的面 / p(第 i 正面来自盒子B) 其中硬币的面 = 1 or 0 [1是正面,0是反面]

整理一下哈:

π = Σi=1…N μ(xi) / N

q = Σi=1…N μ(xi) * xi / Σi=1…N μ(xi) [xi=0,1]

r = Σi=1…N (1-μ(xi)) * xi / Σi=1…N (1-μ(xi))[xi=0,1]

正常点儿就是这个亚子

混合模型聊EM算法

好了,现在有了新的π,q,r,我们可以用他们更新μ了

μ = πqx(1-q)1-x / πqx(1-q)1-x + (1-π)rx(1-r)1-x

EM算法里的E-step就是用π,q,r算μ的过程,而M-step是使用新的μ对π,q,r做最大化估计的过程。E步估计隐含变量,M步估计其他参数,交替将极值推向最大。

一些思考

初始的θ,也就是π,q,r是随机给的。

EM算法最后会收敛,用Jensen’s不等式可以证明。

EM是为了求最大似然值,一般的极大似然估计是取对数再求偏导。由于含有无法直接观测的隐变量,所以不能直接用极大似然估计。

插播一段似然函数及其最大表示

两个高斯混合模型的似然函数和最大表示

混合模型聊EM算法

EM的其基本思想是先初始化一个参数值;接着在这个参数值下求隐变量的期望值作为估计值;然后在隐变量估计值下反过来求参数的极大似然估计值来修正原来的参数值;如此迭代直到参数值不再明显变化为止。

EM算法广泛滴应用到GMM混合高斯模型、聚类、HMM等等。

可能会有疑问说栗子中的M-step没有体现出求其arg max θ。

是滴,木有那么明显。

不过!极大似然值求的最接近真相的θ。也是就似然值最大的时候,θ的值是最接近真实情况的。这里的θ =(π,q,r),而栗子中对π,q,r就是真实的π,q,r计算。他们真实值接近于EM算法里M-step的arg max θ值。

引用

https://www.cnblogs.com/z-sm/p/5107895.html

继续阅读