介绍
我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。
很多算法中我们经常假设训练样本所有属性变量的值都已被观测到,即训练样本是“完整”的,但现实应用中,往往会遇到“不完整”的情况。
没有观察到的变量叫做隐变量。令 X 表示已观测变量集,Z 表示隐变量集,Θ\ThetaΘ 表示模型参数。若欲对Θ\ThetaΘ 做极大似然估计,则应最大化对数似然
LL(Θ∣X,Z)=lnP(X,Z∣Θ)(1)LL(\Theta|X,Z)=ln P(X,Z|\Theta) \tag{1}LL(Θ∣X,Z)=lnP(X,Z∣Θ)(1)
由于 Z 是隐变量,上式无法直接求解,此时,可通过对 Z 计算期望,来最大化已观测数据的对数“边际似然”。
LL(Θ∣X)=lnP(X∣Θ)=ln∑ZP(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 的期望,记为 ZtZ^tZt
- 基于已观测变量 X 和 ZtZ^tZt 对参数 Θ\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) ,并计算对数似然LL(Θ∣X,Z)LL(\Theta|X, Z)LL(Θ∣X,Z)关于Z 的期望Q(Θ∣Θt)=EZ∣X,ΘtLL(Θ∣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=argΘmaxQ(Θ∣Θt)\Theta^{t+1}=arg_{\Theta}max Q(\Theta|\Theta^t)Θt+1=argΘmaxQ(Θ∣Θt)
思考
隐变量估计问题还可通过梯度下降等优化算法求解,但由于求和项数将随着隐变量的数目以指数级上升,会给梯度计算带来麻烦,而EM算法可看作一种非梯度优化方法。
参考
周志华《机器学习》
696

被折叠的 条评论
为什么被折叠?



