机器学习之期望最大算法

导读

EM算法,全称Expectation Maximization Algorithm,期望最大算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最大似然估计或极大后验概率估计。

思想

EM 算法的核心思想非常简单,分为两步:Expection-StepMaximization-Step。E-Step主要通过观察数据和现有模型来估计参数,然后用这个估计的参数值来计算似然函数的期望值;而M-Step是寻找似然函数最大化时对应的参数。由于算法会保证在每次迭代之后似然函数都会增加,所以函数最终会收敛。

算法流程

输入:观察数据 x = ( x ( 1 ) , x ( 2 ) , … , x ( m ) x = (x^{(1)}, x^{(2)},\dots,x^{(m)} x=(x(1),x(2),,x(m),联合分布 p ( x , z ∣ θ ) p(x,z|\theta) p(x,zθ),条件分布p(z|x,\theta),极大值迭代次数J。

  1. 随机初始化模型参数 θ \theta θ的初值 θ ( 0 ) \theta^{(0)} θ(0)
  2. for j from 1 to J:
    • E步:计算联合分布的条件概率期望:
      Q i ( z ( i ) ) : = P ( z ( i ) ∣ x ( i ) , θ ) Q_{i}(z^{(i)}) := P(z^{(i)}|x^{(i)},\theta) Qi(z(i)):=P(z(i)x(i),θ)
    • M步:极大化 L ( θ ) L(\theta) L(θ),得到 θ \theta θ
      θ : = a r g m a x θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) \theta := argmax_{\theta} \sum_{i=1}^{m}\sum_{z^{(i)}} Q_{i}(z^{(i)}) log P(x^{(i)}, z^{(i)}|\theta) θ:=argmaxθi=1mz(i)Qi(z(i))logP(x(i),z(i)θ)

重复E、M步骤直到 θ \theta θ收敛

例子

假设有两枚硬币 A 和 B,他们的随机抛掷的结果如下图所示:
在这里插入图片描述
我们很容易计算出两枚硬币抛出正面的概率(即概率分布),硬币A正面的概率为:
θ A = 24 30 = 0.8 \theta_{A} = \frac{24}{30} = 0.8 θA=3024=0.8
硬币B正面的概率为:
θ B = 9 20 = 0.45 \theta_{B} = \frac{9}{20} = 0.45 θB=209=0.45

现在我们加入隐变量,抹去每轮投掷的硬币标记:

coinStatistics
Coin*5H, 5T
Coin*9H, 1T
Coin*8H, 2T
Coin*4H, 6T
Coin*7H, 3T

现在我们不知道每次投的硬币是哪一个,我们想求一下这5次投的硬币序列: Z = { z 1 , z 2 , z 3 , z 4 , z 5 } Z = \{z_{1},z_{2},z_{3},z_{4},z_{5}\} Z={z1,z2,z3,z4,z5}

碰到这种情况,我们该如何估计 θ A \theta_{A} θA θ B \theta_{B} θB的值?

我们多了一个隐变量 Z = { z 1 , z 2 , z 3 , z 4 , z 5 } Z = \{z_{1},z_{2},z_{3},z_{4},z_{5}\} Z={z1,z2,z3,z4,z5},代表每一轮所使用的硬币,我们需要知道每一轮抛掷所使用的硬币这样才能估计 θ A \theta_{A} θA θ B \theta_{B} θB的值,但是估计隐变量Z我们又需要知道 θ A \theta_{A} θA θ B \theta_{B} θB的值,才能用极大似然估计法去估计出 Z。这就陷入了一个鸡生蛋和蛋生鸡的问题。

其解决方法就是先随机初始化 θ A \theta_{A} θA θ B \theta_{B} θB,然后用去估计 Z, 然后基于 Z 按照最大似然概率去估计新的 θ A \theta_{A} θA θ B \theta_{B} θB,循环至收敛。

计算

E步:初始化 θ ^ A ( 0 ) = 0.60 \hat{\theta}_{A}^{(0)} = 0.60 θ^A(0)=0.60 θ ^ B ( 0 ) = 0.50 \hat{\theta}_{B}^{(0)} = 0.50 θ^B(0)=0.50,并计算每个实验中选择的硬币是A还是B的概率,例如第一轮的结果:“H T T T H H T H T H”,即5H 5T,当选择硬币A时抛出这个结果的概率为:
P ( z = A ∣ y 1 , θ ) = P ( z = A , y 1 ∣ θ ) P ( z = A , y 1 ∣ θ ) + P ( z = B , y 1 ∣ θ ) = ( 0.6 ) 5 × ( 0.4 ) 5 ( 0.6 ) 5 × ( 0.4 ) 5 + ( 0.5 ) 5 × ( 0.5 ) 5 = 0.45 P(z=A|y_{1},\theta) = \frac{P(z = A,y_{1}|\theta)}{P(z = A,y_{1}|\theta) + P(z = B,y_{1}|\theta)} = \frac{(0.6)^{5} \times (0.4)^{5}}{(0.6)^{5} \times (0.4)^{5} + (0.5)^{5} \times (0.5)^{5}} = 0.45 P(z=Ay1,θ)=P(z=A,y1θ)+P(z=B,y1θ)P(z=A,y1θ)=(0.6)5×(0.4)5+(0.5)5×(0.5)5(0.6)5×(0.4)5=0.45
当选择硬币B时抛出这个结果的概率为:
P ( z = B ∣ y 1 , θ ) = 1 − P ( z = A ∣ y 1 , θ ) = 0.55 P(z=B|y_{1},\theta) = 1 - P(z=A|y_{1},\theta) = 0.55 P(z=By1,θ)=1P(z=Ay1,θ)=0.55

按这种方法计算5次投掷使用硬币A和硬币B的概率分别为:
在这里插入图片描述
M步

结合上面计算出的硬币A和硬币B的概率和50次投掷结果,我们利用期望分别求出硬币A和硬币B对投掷结果的贡献。例如第一轮的结果:“H T T T H H T H T H”,即5H 5T,硬币A对此的贡献为,正面: 0.45 × 5 = 2.25 0.45 \times 5 = 2.25 0.45×5=2.25(5代表正面是5次);反面: 0.45 × 5 = 2.75 0.45 \times 5 = 2.75 0.45×5=2.75(5代表反面是5次);第二轮结果:“H H H H T H H H H H”,即9H 1T,硬币A对此的贡献为:正面: 0.8 × 9 = 2.25 0.8 \times 9 = 2.25 0.8×9=2.25(9代表正面是9次);反面: 0.8 × 1 = 2.75 0.8 \times 1 = 2.75 0.8×1=2.75(1代表反面是1次),以此类推。于是我们可以得到:
在这里插入图片描述
把硬币A对这5次投掷正反面的贡献都计算出来之后求和:
正 面 贡 献 : 21.3 反 面 贡 献 : 8.6 正面贡献:21.3\\ 反面贡献:8.6 21.38.6
更新 θ A \theta_{A} θA
θ ^ A ( 1 ) = 21.3 21.3 + 8.6 = 0.71 \hat{\theta}_{A}^{(1)} = \frac{21.3}{21.3 + 8.6} = 0.71 θ^A(1)=21.3+8.621.3=0.71
同理更新 θ B \theta_{B} θB
θ ^ B ( 1 ) = 11.7 11.7 + 8.4 = 0.58 \hat{\theta}_{B}^{(1)} = \frac{11.7}{11.7 + 8.4} = 0.58 θ^B(1)=11.7+8.411.7=0.58
至此重新估计出了参数值。如此反复迭代,我们就可以算出最终的参数值。

上述讲解对应下图:
在这里插入图片描述

总结

  • 参数$ \theta $(Model Parameters):中心点的坐标$ \theta = \{\mu_{1},\mu_{2}...\mu_{k}\} $
  • 参数$ \gamma $(Latent Variables):隐含状态参量,即每 个点属于哪个类别
    损失函数(最小化目标minimize):

l ( θ ) = ∑ i = 1 n ∑ k = 1 k γ i k ∣ ∣ x i − μ k ∣ ∣ 2 2 l(\theta) = \sum_{i=1}^{n} \sum_{k=1}^{k} \gamma_{ik}||x_{i} - \mu_{k}||_{2}^{2} l(θ)=i=1nk=1kγikxiμk22

计算过程(参照EM算法,交替优化):

  • E-step:随机初始化中心点(固定中心点 θ \theta θ), 找出每个点属于哪个类别,即找出距离每个点最近的中心点,并把该点标记为那个类别,得到 γ \gamma γ
  • M-step:更新参数 θ \theta θ,即更新隐含状态中心点,对于所有类别属于 k k k的点来说,计算它们的中心,得到了那个类别的中心点 μ k \mu_{k} μk
  • E-step和M-step循环
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值