机器学习笔记【数学基础——EM算法原理】

最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。
最大期望算法经过两个步骤交替进行计算:

  • 第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;
  • 第二步是最大化(M),最大化在E步上求得的最大似然值来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。
    而要搞懂EM算法的原理,首先需要弄清楚极大似然估计的原理。

极大似然估计

极大似然估计最早是在概率论与数理统计的课程中接触到的,当时的学习完全没有理解极大似然估计的原理,只会背公式解题。现在又接触到了,才花时间要去真正搞懂????。
在我的理解中,似然估计和概率是相对的两个概念。

  • 概率:在知道条件的前提下,事件发生的可能性大小
  • 似然:在事件已经发生的前提下,推断发生的条件参数空间

而极大似然估计就是通过最大化似然函数来推断最有可能导致该事件发生的条件参数。下面用简单的例子来做说明。

机器学习笔记【数学基础——EM算法原理】
总结极大似然估计的目的就是通过事件发生的结果来反推最大可能性导致该事件发生的一切条件参数

用一个简单的例子来体会一下极大似然估计是如果进行估计的。

例子1

假设一个袋子装有白球与红球,比例未知,现在抽取10次(每次抽完都放回,保证事件独立性),假设抽到了7次白球和3次红球,在此数据样本条件下,可以采用最大似然估计法求解袋子中白球的比例(最大似然估计是一种“模型已定,参数未知”的方法)。当然,这种数据情况下很明显,白球的比例是70%,但如何通过理论的方法得到这个答案呢?一些复杂的条件下,是很难通过直观的方式获得答案的,这时候理论分析就尤为重要了,这也是学者们为何要提出最大似然估计的原因。我们可以定义从袋子中抽取白球和红球的概率如下:

f(x1,x2θ)=f(x1θ)×f(x2θ) f(x_1,x_2|\theta) = f(x_1|\theta)×f(x_2|\theta)

由于第一次抽球和第二次抽球独立,可以直接相乘得到概率,且两次抽球在相同的条件参数下, θ\theta 是同一个。其中 θ\theta 是未知的,已知的是在10次抽取之后得到的结果,用来推测袋内的球????色的分布,也就是公式中的 θ\theta 参数空间。
求解的过程,先定义出似然函数 L(θ)L(\theta) 为:

L(θx1,x2)=f(x1,x2θ)=i2f(xiθ) L(\theta|x_1,x_2) = f(x_1,x_2|\theta) =\prod_i^2f(x_i|\theta)

为了方便求导,把累乘变成更好运算的累加,两边取 lnln

ln(L(θx1,x2))=ln(i2f(xiθ))=i2f(xiθ) ln(L(\theta|x_1,x_2)) = ln(\prod_i^2f(x_i|\theta)) = \sum_i^2f(x_i|\theta)
最大似然估计的过程,就是找一个合适的 θ\theta ,使得似然函数的值为最大。因此,可以得到以下公式:

θ^mle=argmaxl^(θx1,x2) \hat\theta _{mle}= argmax\hat{l}(\theta|x_1,x_2)

我们定义 M 模型(也就是之前公式中的f),表示抽到白球的概率为 θ\theta ,而抽到红球的概率为 (1θ)(1-\theta) ,因此10次抽取抽到白球7次的概率可以表示为:
P(x1,x2,...,x10M) P(x_1,x_2,...,x_{10}|M)

=P(x1M)×P(x2M)...×P(x10M) = P(x_1|M)×P(x_2|M)...×P(x_{10}|M)

=θ7(1θ)3 =\theta^7(1-\theta)^3

将其描述为平均似然可得:

l^=110lnP(x1,x2,...,x10M)=110ln[θ7(1θ)3] \hat{l}=\frac1{10}lnP(x_1,x_2,...,x_{10}|M) = \frac1{10}ln[\theta^7(1-\theta)^3]

那么最大似然就是找到一个合适的 θ\theta ,获得最大的平均似然。因此我们可以对平均似然的公式对 θ\theta 求导,并另导数为0。

l^(θ)=7θ6(1θ)33θ7(1θ)2=0 \hat{l}'(\theta) = 7\theta^6(1-\theta)^3-3\theta^7(1-\theta)^2=0

????
θ=0.7 \theta = 0.7
由此可得,当抽取白球的概率为0.7时,最可能产生10次抽取抽到白球7次的事件,事实也确实是如此。

例子2

考虑一个抛硬币的例子。假设这个硬币正面跟反面轻重不同。我们把这个硬币抛80次(即,我们获取一个采样 x1=H,x2=T,...,x80=Tx_1=H,x_2=T,...,x_{80}=T 正面的次数记下来,正面记为H,反面记为T)。并把抛出一个正面的概率记为 pp ,抛出一个反面的概率记为 1p1-p (因此,这里的 pp 即相当于上边的 θ\theta )。假设我们抛出了49个正面,31个反面,即49次 HH,31次 TT 。假设这个硬币是我们从一个装了三个硬币的盒子里头取出的。这三个硬币抛出正面的概率分别为 p=1/3,p=1/2,p=2/3p=1/3,p=1/2, p=2/3 。这些硬币没有标记,所以我们无法知道哪个是哪个。使用最大似然估计,基于二项分布中的概率质量函数公式,通过这些试验数据(即采样数据),我们可以计算出哪个硬币的可能性最大。这个似然函数取以下三个值中的一个:

L1(p=1/3H=49,T=31)=P(H=49,T=31p=1/3) L_1(p=1/3|H=49,T=31)=P(H=49,T=31|p=1/3)
=(8049)(1/3)49(11/3)310.000 ={80 \choose 49}(1/3)^{49}(1-1/3)^{31}≈0.000

L2(p=1/2H=49,T=31)=P(H=49,T=31p=1/2) L_2(p=1/2|H=49,T=31)=P(H=49,T=31|p=1/2)
=(8049)(1/2)49(11/2)310.012 ={80 \choose 49}(1/2)^{49}(1-1/2)^{31}≈0.012

L3(p=2/3H=49,T=31)=P(H=49,T=31p=2/3) L_3(p=2/3|H=49,T=31)=P(H=49,T=31|p=2/3)
=(8049)(2/3)49(12/3)310.054 ={80 \choose 49}(2/3)^{49}(1-2/3)^{31}≈0.054

我们可以看到当 p=2/3{p}=2/3 时,似然函数取得最大值。显然地,这硬币的公平性和那种抛出后正面的几率是2/3的硬币是最接近的。这就是 pp 的最大似然估计。

EM算法

GLAD算法

相关文章: