整体比较一下 MLE(最大似然估计), EM(期望最大值估计), MAP (最大后验概率)三者各自的应用场景,以及三者之间的关系。
一、MLE
MLE是在“模型已定,参数未知”的情况下根据给定观察序列(所有序列服从同一分布)估计模型参数的估计方法。模型参数的准确性,跟观察序列直接相关。
最大似然估计(MLE)的计算过程是:
(1) 写出似然函数(已知模型,即已知概率密度函数)
(2) 对似然函数取对数,并整理
(3) 求导数
(4) 解似然方程
Demo: 假设x为独立同分布高斯分布的采样, θ 为模型参数, f为我们所使用的模型, 那么最大似然估计可以表示为:
L( θ | x1, x2, … , xn) = f(x1, x2, … , xn | θ ) = ∏ni=1f(xi|θ)
左右两边取对数:
ln[L(θ|x1,x2,...,xn)]=∑ni=1ln[f(xi|θ)]
= - n2ln(2π) - nln(σ) - ∑ni=1(xi−μ)22σ2
对 θ 中的 μ , σ 分别求导:
∂lnL∂μ = ∑ni=1xi−uσ2
∂lnL∂σ = - 12σ2+∑ni=1(xi−u)22σ4
分别令导数等于0:
u=1n∑ni=1xi
σ2=1n∑ni=1(X⎯⎯⎯)
这就是最简单MLE的估计的参数值
MLE是在所有的样本独立同分布的条件下,完全由样本来计算的最后的期望或者方差,没有任何的先验知识,比如是不是这个样本服从高斯分布的概率是多少,或者是服从不同的高斯分布的概率是多少,没有任何的先验知识,完全由样本决定,如果样本量比较少或者是不准确的话,则结果没有意义。
二、EM
首先你得知道凹凸函数的判别, jensen不等式, 离散型和连续型随机变量的期望怎么求: http://blog.csdn.net/livecoldsun/article/details/40833829
EM 算法就是含有隐变量的MEL。 下例中的隐变量就是课程(数学 和 英语)。
但是现在比如抽取的成绩X时数学和英语的成绩,而数学和英语的成绩都满足正态分布,但是我们不知道哪些成绩是数学成绩,哪些成绩是英语成绩,这时候应该怎么求这些参数呢 (λ1,u1,σ1,λ2,u2,σ2) , 你可以尝试按照最大似然估计的样子写出来:
L(λ1,u1,σ1,λ2,u2,σ2|X)=λ1∗f(x1|u1,σ1)∗λ1∗f(x2|u1,σ1)∗…∗λ1∗f(xn|u1,σ1)+λ2∗f(x1|u2,σ2)∗λ2∗f(x2|u2,σ2)∗…∗λ2∗f(xn|u2,σ2)
这个式子如果求对数,里边有加法,这样的话就没法算了,这还只是两个分布的问题,如果是GMM模型的话,可能有1024~2048个SGM, 那么基本是不可能计算出来的。
这时候如果我们知道哪些是数学成绩,哪些是英语成绩,那么普通的MLE就可以计算出来; 而如果知道两个高斯分布的参数值也可以很容易的求出哪些是数学成绩,哪些是英语成绩, 这就是所谓的 “鸡蛋困境”,也就是所谓的“鸡生蛋,蛋生鸡” 的问题。
问题来了,那我们应该怎么解决这个问题呢?
这就出现了隐变量的引入,就是我直接求L( θ |X)不好求。我必须先知道成绩是英语还是数学然后再求参数,即:
L(θ|X)=p(x|z,θ)p(z|θ) 其实就是HMM中的估计参数的那个Baum-welch算法,刚开始看没想起来,越看觉得越熟悉: 之前自己还实现过Baum-welch,但是迭代那个地方没写:http://blog.csdn.net/zjm750617105/article/details/51786487
具体的推导过程请参照: http://blog.csdn.net/dyllove98/article/details/9385559
还有关于GMM中应用EM: http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
大体步骤就是根据 P(k | X), 第k个高斯的后验概率,求得 零阶统计量,一阶统计量,二阶统计量,然后分别更新 权重,均值和方差。
三、MAP
看后验分布之前,我们先看一下贝叶斯公式,而后验概率就是由贝叶斯计算出来的,如果你做过说话人识别或者是推导过JFA或者i-vecor的话,可以看一下:http://blog.csdn.net/zjm750617105/article/details/53203120 .
P(θ|x)=P(θ)P(x|θ)P(x)
其中 P(θ|x) 就是 θ 后验概率, P(x) 是 标准化常量,也是一个先验的值; P(θ) 模型的是先验概率; P(x|θ) 是似然度; P(x|θ)P(x) 也叫标准似然度。
再来一个更直观的解释:
P(θ|x)=θ的后验概率=θ的先验概率*标准似然度(调整因子)
下面的回答部分参考自这个回答下面的一些答案: https://www.zhihu.com/question/19894595
上边说了,如果样本数量很少的情况下,MLE是非常不准确的,这时候我们就需要加入一些先验知识了,这个先验知识就是本身是这个模型的准确率是多少,我们结合实际的MLE计算的结果和理想的模型的准确率做一个折中,而这个折中值作为后验概率。
很具体的应用就是:在说话人识别的GMM-UBM系统中,当我们训练好了UBM模型的时候,需要用很少的样本(3~4段3s左右的录音)去训练一个speaker model, 这种情况下用EM算法是极不准确的,这时候可以用 MAP 的方法。
比较直观的理解就是先验知识的可靠程度相当于50段录音,而先验概率是0.5, MLE的结果是0.3的话,那么折中的结果就是 (0.5∗50+0.3∗4)50+4 = 0.485 作为后验概率。
在声纹识别的GMM-UBM系统中,先验概率就是 αk=ck/(ck+r) , 其中c_k 是第k个高斯的后验的期望,即零阶统计量,r 是给定的系数。