在前面的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到,即训练样本是“完整”的,但在实际应用中往往会遇到“不完整”的训练样本,例如由于西瓜的根蒂已脱落,无法看出是“蜷缩”还是“硬挺”,则训练样本的“根蒂”属性变量值未知。

概率模型有时既存在观测变量,又含有未观测变量,其中,未观测变量的学名是“隐变量”。如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法估计模型参数。但是当含有隐变量时,就不能简单地使用这些估计方法。这就涉及到EM算法,1977年由Dempster首次提出。EM算法就是含有隐变量的概率模型参数的极大似然估计法或极大后验概率估计法。

这种存在“未观测”变量的情形下,是否仍能对模型参数进行估计呢?

令X表示已观测变量集,Z表示隐变量集,X和Z连在一起称为完全数据,观测数据X又称为不完全数据。假设给定观测数据X,其概率分布为P(X|θ),其中θ是需要估计的模型参数,那么不完全数据Y的似然函数是P(X|θ),对数似然函数为L(θ)=log P(X|θ);假设X和Z的联合概率分布是P(X,Z|θ),那么完全数据的对数似然函数是log P(X,Z|θ)。EM算法就是求L(θ)=log P(X,Z|θ)的极大似然估计。

由于Z是隐变量,上式无法直接求解。此时我们可通过对Z计算期望,来最大化已观测数据的对数“边际似然”:

L(\Theta |X) = ln P(X| \Theta ) = ln \sum_{Z} P(X,Z|\Theta) = ln \sum_{Z} P(Z| \Theta) P(X|Z, \Theta)

=========================================================================

补充数学知识:

Jensen(琴生)不等式:

若f是凸函数,则:

f(tx_1+(1-t)x_2) \leq tf(x_1)+(1-t)f(x_2)

其中,t \in [0,1],同理,若f是凹函数,则只需要将上式中的≤换成≥。

将上式中的t推广到n个同样成立,即:

f(t_1x_1+t_2x_2+...+t_nx_n) \leq t_1f(x_1)+t_2f(x_2)+...+t_nf(x_n)

其中,t_1,t_2...,t_n \in [0,1],t_1+t_2+...+t_n=1,

在概率论中常常以以下形式出现:

\varphi (E[X]) \leq E[\varphi (X)]

=========================================================================

EM算法是常用的估计参数隐变量的利器。EM算法采用的是通过迭代逐步近似极大化L(θ):假设在第i次迭代后θ的估计值为\theta ^{(i)},我们希望新的估计值θ能使L(θ)增加,即L(\theta ) > L(\theta^{(i)}),并逐步达到最大值。 为此,我们考虑两者的差:

L(\theta )-L(\theta^{(i)}) = ln( \sum_{Z} P(Z|\theta)P(X|Z,\theta))-ln P(X| \theta^{(i)})\\ =ln( \sum_{Z}P(Z|X, \theta^{(i)}) \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)})})-ln P(X| \theta^{(i)})

套用琴生不等式可得:

\geq \sum_{Z}P(Z|X, \theta^{(i)}) \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)})}-ln P(X| \theta^{(i)})\\ =\sum_{Z}P(Z|X, \theta^{(i)}) \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)})}- 1 \times ln P(X| \theta^{(i)})\\ =\sum_{Z}P(Z|X, \theta^{(i)}) \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)})}- \sum_{Z} P(Z|X, \theta^{(i)}) \times ln P(X \theta^{(i)})\\ = \sum_{Z}P(Z|X, \theta^{(i)})(ln \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)})}-ln P(X| \theta^{(i)}))\\ = \sum_{Z}P(Z|X, \theta^{(i)})(ln \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)} P(Y|\theta^{(i)})})

L(\theta) \geq L(\theta^{(i)})+ \sum_{Z}P(Z|X, \theta^{(i)})(ln \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)} P(Y|\theta^{(i)})})

B(\theta, \theta^{(i)}) = L(\theta^{(i)})+ \sum_{Z}P(Z|X, \theta^{(i)})(ln \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)} P(Y|\theta^{(i)})})

则 L(\theta) \geq B(\theta, \theta^{(i)})

即函数B(\theta, \theta^{(i)})是L(θ)的一个下界,若此时设\theta^{(i+1)}使得B(\theta, \theta^{(i)})达到极大,也即

B(\theta^{(i+1)}, \theta^{(i)}) \geq BB(\theta^{(i)}, \theta^{(i)}) =L(\theta^{(i)})

 进一步可得:

L(\theta^{(i+1)}) \geqslant B(\theta^{(i+1)}, \theta^{(i)}) \geq BB(\theta^{(i)}, \theta^{(i)}) =L(\theta^{(i)})

于是问题转化为求解使得B(\theta, \theta^{(i)})达到极大的\theta^{(i+1)},即

\theta^{(i+1)} = arg \ \underset{\theta}{max}B(\theta, \theta^{(i)}) \\= arg \ \underset{\theta}{max} (L(\theta^{(i)})+ \sum_{Z}P(Z|X, \theta^{(i)})(ln \frac{P(Z|\theta)P(X|Z,\theta)}{P(Z|X, \theta^{(i)} P(Y|\theta^{(i)})}))\\ = arg \ \underset{\theta}{max} \sum_{Z}P(Z|X, \theta^{(i)}) ln(P(Y|Z,\theta)P(Z|\theta))\\ =arg \ \underset{\theta}{max} (\sum_{Z}P(Z|X, \theta^{(i)})ln P(Y,Z|\theta))

 到此,完成了EM算法的一次迭代。综上可以总结出EM算法的E步和M步,即 E步:求期望,M步:求极大值。若参数θ已知,可根据训练数据推断出最优隐变量Z(E步),若Z的值已知,则可方便地对参数θ做极大似然估计(M步)。

 以初始值\Theta^0为起点,对上式可迭代执行以下步骤直至收敛:

· 基于\Theta^t推断隐变量Z的期望,记为Z^t

· 基于已观测变量X和Z^t对参数\Theta做极大似然估计,记为\Theta^{t+1};

这是EM算法的原型。

进一步,若我们不是取Z的期望,而是基于\Theta^t计算隐变量Z的概率分布P(Z|X,\Theta^t),则EM算法的两个步骤是:

· E步:以当前参数\Theta^t推断隐变量分布 P(Z|X,\Theta^t),并计算对数似然LL(\Theta|X,Z)关于Z的期望

Q(\Theta | \Theta^t) = \mathbb{E} _{Z|X, \Theta^t} LL(\Theta|X,Z)

· M步:寻找参数最大化期望似然,即

\Theta^{t+1} = arg \ \underset{\Theta}{max}Q(\Theta| \Theta^t)

简要来说,EM算法使用两个步骤交替计算,第一步是期望E步,利用当前估计的参数值来计算对数似然的期望值;第二步是最大化M步,寻找能使E步产生的似然期望最大化的参数值。然后,新得到的参数值重新被用于E步,直至收敛到局部最优。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐