介绍
我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。
很多算法中我们经常假设训练样本所有属性变量的值都已被观测到,即训练样本是“完整”的,但现实应用中,往往会遇到“不完整”的情况。
没有观察到的变量叫做隐变量。令 X 表示已观测变量集,Z 表示隐变量集, Θ \Theta Θ 表示模型参数。若欲对 Θ \Theta Θ 做极大似然估计,则应最大化对数似然
L L ( Θ ∣ X , Z ) = l n P ( X , Z ∣ Θ ) (1) LL(\Theta|X,Z)=ln P(X,Z|\Theta) \tag{1} LL(Θ∣X,Z)=lnP(X,Z∣Θ)(1)
由于 Z 是隐变量,上式无法直接求解,此时,可通过对 Z 计算期望,来最大化已观测数据的对数“边际似然”。
L L ( Θ ∣ X ) = l n P ( X ∣ Θ ) = l n ∑ Z P ( X , Z ∣ Θ ) (2) LL(\Theta|X)=ln P(X|\Theta)=ln \sum_Z P(X,Z|\Theta) \tag{2} LL(Θ∣X)=lnP(X∣Θ)=lnZ∑P(X,Z∣Θ)(2)
EM(期望最大化)算法常用于估计参数隐变量,是一种迭代算法,基本思想是:若参数 Θ \Theta Θ 已知,则可根据训练数据推断出最优隐变量 Z 的值(E步);反之,若 Z 已知,则可方便地对参数 Θ \Theta Θ 做极大似然估计(M步)。
于是,以初始值 Θ 0 \Theta^0 Θ0 为起点,对式(2)迭代执行以下步骤直至收敛:
- 基于 Θ t \Theta^t Θt 推断隐变量 Z 的期望,记为 Z t Z^t Zt
- 基于已观测变量 X 和 Z t Z^t Zt 对参数 Θ \Theta Θ 做极大似然估计,记为 Θ t + 1 \Theta^{t+1} Θt+1
这就是EM算法的原型。
进一步,我们不是取 Z 的期望,而是基于 Θ t \Theta^t Θt 计算 Z 的概率分布 P ( Z ∣ X , Θ t ) P(Z|X,\Theta^t) P(Z∣X,Θt) ,则EM算法两个步骤如下:
- E步:基于 Θ t \Theta^t Θt 推断隐变量的分布 P ( Z ∣ X , Θ t ) P(Z|X,\Theta^t) P(Z∣X,Θt) ,并计算对数似然 L L ( Θ ∣ X , Z ) LL(\Theta|X, Z) LL(Θ∣X,Z)关于Z 的期望 Q ( Θ ∣ Θ t ) = E Z ∣ X , Θ t L L ( Θ ∣ X , Z ) Q(\Theta|\Theta^t)=E_{Z|X,\Theta^t}LL(\Theta|X,Z) Q(Θ∣Θt)=EZ∣X,ΘtLL(Θ∣X,Z)
- M步:寻找参数最大化期望似然 Θ t + 1 = a r g Θ m a x Q ( Θ ∣ Θ t ) \Theta^{t+1}=arg_{\Theta}max Q(\Theta|\Theta^t) Θt+1=argΘmaxQ(Θ∣Θt)
思考
隐变量估计问题还可通过梯度下降等优化算法求解,但由于求和项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦,而EM算法可看作一种非梯度优化方法。
参考
周志华《机器学习》