今天整理一下EM算法,当年在学校学这个的时候真是一脸懵逼啊,还好考的不难:)
EM(Expectation-Maximization)算法,从名字中就可以知道他是有两部分构成的求期望和求极大似然,论文原文放在这里需要的自取。算法通过迭代的方式进行E步和M步,从而更新模型参数,直到收敛。
凸函数是一个定义在某个向量空间的凸子集C上的实值函数f,而且对于凸子集C中任意两个向量\(x_1\)、\(x_2\)有\(f((x_1 + x_2) / 2) <= (f(x_1) + f(x_2)) / 2\) 成立。
假设有A、B两类数据掺杂在一起,分别服从两个分布,我们现在希望知道每个样本的分布。简单的思考一下步骤应该是:
首先,所有样本集合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,直到收敛。
最后我们就可以得到所有可能的分布以及对应的参数。
原文:https://www.cnblogs.com/mrdoghead/p/14678070.html