EM算法

今天整理一下EM算法,当年在学校学这个的时候真是一脸懵逼啊,还好考的不难:)

EM(Expectation-Maximization)算法,从名字中就可以知道他是有两部分构成的求期望和求极大似然,论文原文放在这里需要的自取。算法通过迭代的方式进行E步和M步,从而更新模型参数,直到收敛。

预备知识

  1. 已知分布求期望以及如何求极大似然估计的内容这里就不展开了,可以看我之前整理的文章。
  2. 凸函数,引用百度百科

凸函数是一个定义在某个向量空间的凸子集C上的实值函数f,而且对于凸子集C中任意两个向量\(x_1\)\(x_2\)\(f((x_1 + x_2) / 2) <= (f(x_1) + f(x_2)) / 2\) 成立。

convex

  1. Jensen inequality
    假设函数f(x)是凸函数,那么\(E[f(x)] >= f(E[x])\),相反如果f(x)是凹函数,不等式反向。

问题描述

假设有A、B两类数据掺杂在一起,分别服从两个分布,我们现在希望知道每个样本的分布。简单的思考一下步骤应该是:

  1. 分别初始化A、B正态分布的参数
  2. 计算每个样本是属于A、B哪一类
  3. 利用分好的类,重新估计A、B两类的分布参数
  4. 重复2-3步骤,也就是E-step和M-step,直到收敛

具体计算流程

首先,所有样本集合d={x1, x2, …, xn}, 所有可能的分布集合h={z1, z2, …, zn},定义一个关于参数 \(\theta\) 的函数 \(l(\theta) = log p(d;\theta) = log \sum_h p(d,h,\theta)\),令\(q(h)\) 为隐分布h的函数,那么 \(l(\theta) = log[\sum_h q(h) \frac{p(d,h,\theta}{q(h)}]\),利用Jensen不等式可以得到 \(l(\theta) >= \sum q(h) log \frac{p(d,h,\theta)}{(h)} = J(q,\theta)\)

那么E-step就是在求最有可能的分布 \(q^t = argmax_q J(q;\theta^t)\)

而M-step就是在求参数的极大似然估计 \(\theta^{t+1} = argmax_{\theta} J(q^t;\theta)\)

然后重复上面两个step,直到收敛。

最后我们就可以得到所有可能的分布以及对应的参数。

posted @ 2021-04-19 18:24  MrDoghead  阅读(89)  评论(0编辑  收藏  举报