文章目录
EM算法的原理推导及解释

本质上,EM算法针对于存在明显可疑的隐藏变量z,该变量影响着直观的样本数据的分布情况(即:方差、均值等),但是我们又无法得知和计算出准确的隐藏变量z。
于是,我们采用迭代的方式,设定已知模型的参数 θ \mathbf{\theta } θ初值,然后结合已有的{Xn,Yn}样本信息将隐藏变量z的期望以累计的形式进行表示出 Q ( θ ∣ θ n ) \mathbf{Q}\left( \mathbf{\theta }|\mathbf{\theta }_{\mathbf{n}} \right) Q(θ∣θn),然后进一步对当前的参数 θ \mathbf{\theta } θ偏导求解更新新一轮的参数 θ \mathbf{\theta } θ,该迭代过程即为EM算法。
前置知识:极大似然估计(Maximum Likelihood)
令Dc表示训练集中第c类样本的组合的集合,假设这些样本是独立的,则参数θc对于数据集Dc的最大似然估计:
θ c ∧ = a r g max L L ( θ c ) θ C = log P ( D c ∣ θ c ) = ∑ x ϵ D C log P ( x ∣ θ c ) \overset{\land}{\mathbf{\theta }_{\mathbf{c}}}=\underset{\mathbf{\theta }_{\mathbf{C}}}{\mathbf{arg}\max \mathbf{LL}\left( \mathbf{\theta }_{\mathbf{c}} \right)} \\ =\log \mathbf{P}\left( \mathbf{D}_{\mathbf{c}}|\mathbf{\theta }_{\mathbf{c}} \right) \\ \,\, =\sum_{\mathbf{x\epsilon D}_{\mathbf{C}}}{\log \mathbf{P}\left( \mathbf{x}|\mathbf{\theta }_{\mathbf{c}} \right)} θc∧=θCargmaxLL(θc)=logP(Dc∣θc)=xϵDC∑logP(x∣θc)
极大似然估计是试图在θc所有可能的取值中,找到一个使数据出现的“可能性”最大值。极大似然估计一般在机器学习领域中,主要用来估计样本分布的方差和均值、或者其他参数变量。
例如,在连续属性情形下,假设概率密度函数 p ( x ∣ c ) ∼ N ( μ c , δ c 2 ) \mathbf{p}\left( \mathbf{x}|\mathbf{c} \right) \sim \mathbf{N}\left( \mathbf{\mu }_{\mathbf{c}},\mathbf{\delta }_{\mathbf{c}}^{2} \right) p(x∣c)∼N(μc,δc2),则参数 μ c \mathbf{\mu }_{\mathbf{c}} μc和 δ c 2 \mathbf{\delta }_{\mathbf{c}}^{2} δc2的极大似然估计为:
μ ∧ c = 1 ∣ D c ∣ ∑ x ϵ D c x δ ∧ c 2 = 1 ∣ D c ∣ ∑ x ϵ D c ( x − μ ∧ c ) ( x − μ ∧ c ) T \overset{\land}{\mathbf{\mu }}_{\mathbf{c}}=\frac{1}{|\mathbf{D}_{\mathbf{c}}|}\sum_{\mathbf{x\epsilon D}_{\mathbf{c}}}{\mathbf{x}} \\ \overset{\land}{\mathbf{\delta }}_{\mathbf{c}}^{2}=\frac{1}{|\mathbf{D}_{\mathbf{c}}|}\sum_{\mathbf{x\epsilon D}_{\mathbf{c}}}{\left( \mathbf{x}-\overset{\land}{\mathbf{\mu }}_{\mathbf{c}} \right)}\left( \mathbf{x}-\overset{\land}{\mathbf{\mu }}_{\mathbf{c}} \right) ^{\mathbf{T}} μ∧c=∣Dc∣1xϵDc∑xδ∧c2=∣Dc∣1xϵDc∑(x−μ∧c)(x−μ∧c)T
上述式子表明,通过局部样本的极大似然估计得到的均值和方差就是全体样本的正态分布情况。
这种参数化的方法虽能使类条件概率估计变得相对简单,但是,在实际情况中,x的分布很难做到相互独立。于是,我们提出了引入隐藏变量z,z的意义在于它暗中指导着Dc中各个类别的样本分布情况,假设已经存在样本xi,z的作用是告诉我们xi属于哪一个类别,但是,我们却无法直观地得知z到底是什么。
令X表示已观测变量集,Z表示隐变量集,若预对模型参数θ做极大似然估计,则应最大化对数似然函数:
L L ( Θ ∣ X , Z ) = ln P ( X , Z ∣ Θ ) \mathbf{LL}\left( \mathbf{\Theta }|\mathbf{X},\mathbf{Z} \right) =\ln \mathbf{P}\left( \mathbf{X},\mathbf{Z}|\mathbf{\Theta } \right) LL(Θ∣X,Z)=lnP(X,Z∣Θ)
由于Z是隐变量,上式无法直接求解。此时我们可以通过对Z计算期望,来最大化已观测数据的对数“边际似然”(marginal likelihood)(这个思想,非常非常重要!):
L L ( Θ ∣ X ) = ln P ( X ∣ Θ ) = ln ∑ Z P ( X , Z ∣ Θ ) \mathbf{LL}\left( \mathbf{\Theta }|\mathbf{X} \right) =\ln \mathbf{P}\left( \mathbf{X}|\mathbf{\Theta } \right) =\ln \sum_{\mathbf{Z}}{\mathbf{P}\left( \mathbf{X},\mathbf{Z}|\mathbf{\Theta } \right)} LL(Θ∣X)=lnP(X∣Θ)=lnZ∑P(X,Z∣Θ)
核心部分:期望最大化算法(Expectation Maximum)
以初始值 θ 0 \mathbf{\theta }^0 θ0为起点(就是为需要估计的θ、μ等原始参数设定初始值),可迭代执行以下步骤直至收敛:
- 基于 θ t \mathbf{\theta }^{\mathbf{t}} θt推断隐变量Z的期望,记为 Z t \mathbf{Z}^{\mathbf{t}} Zt。(E步)
- 基于已观测变量X和 Z t \mathbf{Z}^{\mathbf{t}} Zt对参数 θ \mathbf{\theta } θ做极大似然估计,记为 θ t + 1 \mathbf{\theta }^{\mathbf{t}+1} θt+1。(M步)
- 这就是EM算法的原型。
实例:EM求解“三硬币”模型的完整推导及解释
原问题:

简化版:

由上图的分析可知,我们已有的数据为B/C的投掷结果,但是不知道具体属于B/C,而分类B/C取决于A的结果,A为正面,则该结果是B的投掷结果;A为反面,则结果是C的投掷结果。
所以,本题中的隐变量Z:Z=(z1 ,…,zN) 且 z 只有两种可能取值1和0,zj表示第j次试验,A的投掷结果;此外,实验结果Y:Y=(y1,…,yN),yj代表第j次实验B/C的投掷结果;θ表示参数π,ρ,q。
- 对于第j次试验,这里的z为变量, θ \mathbf{\theta } θ和 y j \mathbf{y}_{\mathbf{j}} yj看作已知常量:
P ( y i ∣ θ ) = ∑ z P ( y j , z ∣ θ ) = ∑ z P ( z ∣ y j , θ ) P ( y j ∣ z , θ ) = P ( z = 1 ∣ y j , θ ) P ( y j ∣ z = 1 , θ ) + P ( z = 0 ∣ y j , θ ) P ( y j ∣ z = 0 , θ ) = { π p + ( 1 − π ) q , i f y j = 1 π ( 1 − p ) + ( 1 − π ) ( 1 − q ) , i f y j = 0 = π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j \mathbf{P}\left( \mathbf{y}_{\mathbf{i}}|\mathbf{\theta } \right) =\sum_{\mathbf{z}}{\mathbf{P}\left( \mathbf{y}_{\mathbf{j}},\mathbf{z}|\mathbf{\theta } \right)}\,\, \\ \,\, =\sum_{\mathbf{z}}{\mathbf{P}\left( \mathbf{z}|\mathbf{y}_{\mathbf{j}},\mathbf{\theta } \right) \mathbf{P}\left( \mathbf{y}_{\mathbf{j}}|\mathbf{z},\mathbf{\theta } \right) \,\,} \\ \,\, =\mathbf{P}\left( \mathbf{z}=1|\mathbf{y}_{\mathbf{j}},\mathbf{\theta } \right) \mathbf{P}\left( \mathbf{y}_{\mathbf{j}}|\mathbf{z}=1,\mathbf{\theta } \right) +\mathbf{P}\left( \mathbf{z}=0|\mathbf{y}_{\mathbf{j}},\mathbf{\theta } \right) \mathbf{P}\left( \mathbf{y}_{\mathbf{j}}|\mathbf{z}=0,\mathbf{\theta } \right) \,\, \\ \,\, =\left\{ \begin{array}{c} \mathbf{\pi p}+\left( 1-\mathbf{\pi } \right) \mathbf{q}, \mathbf{if}\,\,\mathbf{y}_{\mathbf{j}}=1\\ \mathbf{\pi }\left( 1-\mathbf{p} \right) +\left( 1-\mathbf{\pi } \right) \left( 1-\mathbf{q} \right) , \mathbf{if}\,\,\mathbf{y}_{\mathbf{j}}=0\\ \end{array} \right. \\ \,\, =\mathbf{\pi p}^{\mathbf{y}_{\mathbf{j}}}\left( 1-\mathbf{p} \right) ^{1-\mathbf{y}_{\mathbf{j}}}+\left( 1-\mathbf{\pi } \right) \mathbf{q}^{\mathbf{y}_{\mathbf{j}}}\left( 1-\mathbf{q} \right) ^{1-\mathbf{y}_{\mathbf{j}}}\,\, P(yi∣θ)=z∑P(yj,z∣θ)=z∑P(z∣y

最低0.47元/天 解锁文章
9万+

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



