你知道一个分布,但是不知道分布的具体参数,比如你知道学校男生身高分布服从高斯分布,但是你不知道其参数,即 θ = [ u , σ ] \theta=[u,\sigma] θ=[u,σ]。这是就可以使用最大似然来求解参数。
首先需要从该分布中采样获取数据,比如你获取了 N N N个数据,就可以得到其似然函数,如下:
L ( θ ) = L ( x 1 , … , x n ; θ ) = ∏ i = 1 N p ( x i ; θ ) L(\theta)=L(x_1,\dots,x_n;\theta)=\prod_{i=1}^Np(x_i;\theta) L(θ)=L(x1,…,xn;θ)=i=1∏Np(xi;θ)
其中,每次采样获得的 x i x_i xi都是独立同分布服从 N ( u , σ ) N(u,\sigma) N(u,σ),所以似然函数可以理解为采样获得这组数据的概率。
为了求得参数 θ ^ \hat{\theta} θ^,我们只要求:
θ ^ = arg max θ log L ( θ ) \hat{\theta}=\arg\max_\theta\log L(\theta) θ^=argθmaxlogL(θ)
那为什么 θ ^ \hat{\theta} θ^就是我们所需要的参数呢,这个就是最大似然的思想:采样得到的数据客观来讲就是概率最大数据。举个最简单的例子,从装有8个黑球和2个红球的袋子中随机取出一个球,在没看到这个球的颜色前,要你猜一个你肯定会猜是黑色的。如果还是不理解可以参考下面的链接。
EM算法是在最大似然的基础上的,就刚刚学校男生身高的例子中,如果给你采样的数据中有男生也有女生,明显男生女生身高服从不同的分布,那如何来求出我们所需要的 θ \theta θ呢?这边我们需要引入隐变量 Z Z Z。同样我们还是要最大化似然函数,为了方便我们记似然函数为:
L ( θ ) = p ( X ∣ θ ) L(\theta)=p(X|\theta) L(θ)=p(X∣θ)
这个和上面的似然函数的表达式是等价的, X X X就是我们采样得到的数据。
目标:
θ ^ = arg max θ log p ( X ∣ θ ) \hat{\theta}=\arg\max_\theta\log p(X|\theta) θ^=argθmaxlogp(X∣θ)
log p ( X ∣ θ ) = log p ( X , Z ∣ θ ) − log p ( Z ∣ X , θ ) = log p ( X , Z ∣ θ ) q ( Z ) − log p ( Z ∣ X , θ ) q ( Z ) ( 引 入 概 率 密 度 q ( Z ) 不 为 0 ) \begin{aligned} \log p(X|\theta)&=\log p(X,Z|\theta)-\log p(Z|X,\theta) \\ &=\log \frac{p(X,Z|\theta)}{q(Z)}-\log \frac{p(Z|X,\theta)}{q(Z)}(引入概率密度q(Z)不为0) \end{aligned} logp(X∣θ)=logp(X,Z∣θ)−logp(Z∣X,θ)=logq(Z)p(X,Z∣θ)−logq(Z)p(Z∣X,θ)(引入概率密度q(Z)不为0)
等号两边都乘以 q ( Z ) q(Z) q(Z),然后对 Z Z Z积分,得到:
log p ( X ∣ θ ) = E L B O + K L ( q ∣ ∣ p ) \log p(X|\theta)=ELBO+KL(q||p) logp(X∣θ)=ELBO+KL(q∣∣p)
K L ( q ∣ ∣ p ) = ∫ Z q ( Z ) log p ( Z ∣ X , θ ) q ( Z ) d Z ≥ 0 KL(q||p)=\int_Zq(Z)\log \frac{p(Z|X,\theta)}{q(Z)}dZ\ge0 KL(q∣∣p)=∫Zq(Z)logq(Z)p(Z∣X,θ)dZ≥0,可以用jensen不等式证明。
补充jensen不等式:
如果 f ( x ) f(x) f(x)为凸函数,则 E [ f ( x ) ] ≥ f ( E [ x ] ) E[f(x)]\ge f(E[x]) E[f(x)]≥f(E[x]),凹函数则相反。上式等号成立时, p ( Z ∣ X , θ ) q ( Z ) \frac{p(Z|X,\theta)}{q(Z)} q(Z)p(Z∣X,θ)取常数,即 p ( Z ∣ X , θ ) q ( Z ) = c \frac{p(Z|X,\theta)}{q(Z)}=c q(Z)p(Z∣X,θ)=c, ∫ Z p ( Z ∣ X , θ ) d Z = c ∫ Z q ( Z ) d Z ⇒ c = 1 \int_Zp(Z|X,\theta)dZ=c\int_Zq(Z)dZ\Rightarrow c=1 ∫Zp(Z∣X,θ)dZ=c∫Zq(Z)dZ⇒c=1,所以得 q ( Z ) = p ( Z ∣ X , θ ( t ) ) q(Z)=p(Z|X,\theta^{(t)}) q(Z)=p(Z∣X,θ(t))。
我们取 q ( Z ) = p ( Z ∣ X , θ ( t ) ) q(Z)=p(Z|X,\theta^{(t)}) q(Z)=p(Z∣X,θ(t)),EM算法为迭代算法, θ ( t ) \theta^{(t)} θ(t)为上一轮得到的 θ ^ \hat{\theta} θ^。
那么我们要求使得 log p ( X ∣ θ ) \log p(X|\theta) logp(X∣θ)最大的 θ \theta θ值,而ELBO是其下届,我们只要不断最大化下届即可,如下式:
θ ^ = arg max θ E L B O = arg max θ ∫ Z p ( Z ∣ X , θ ( t ) ) log p ( X , Z ∣ θ ) p ( Z ∣ X , θ ( t ) ) d Z = arg max θ ∫ Z p ( Z ∣ X , θ ( t ) ) log p ( X , Z ∣ θ ) d Z \begin{aligned} \hat{\theta}&=\arg\max_\theta ELBO\\ &=\arg\max_\theta\int_Zp(Z|X,\theta^{(t)})\log\frac{p(X,Z|\theta)}{p(Z|X,\theta^{(t)})}dZ\\ &=\arg\max_\theta\int_Zp(Z|X,\theta^{(t)})\log p(X,Z|\theta)dZ \end{aligned} θ^=argθmaxELBO=argθmax∫Zp(Z∣X,θ(t))logp(Z∣X,θ(t))p(X,Z∣θ)dZ=argθmax∫Zp(Z∣X,θ(t))logp(X,Z∣θ)dZ
最后的EM算法总结为:
E-step:
q ( Z ) = p ( Z ∣ X , θ ( t ) ) q(Z)=p(Z|X,\theta^{(t)}) q(Z)=p(Z∣X,θ(t))
M-step:
θ ^ = arg max θ ∫ Z p ( Z ∣ X , θ ( t ) ) log p ( X , Z ∣ θ ) d Z \hat{\theta}=\arg\max_\theta\int_Zp(Z|X,\theta^{(t)})\log p(X,Z|\theta)dZ θ^=argmaxθ∫Zp(Z∣X,θ(t))logp(X,Z∣θ)dZ
循环E-step,M-step,直到参数 θ \theta θ收敛。
目标函数还是一样的,但是处理方式不同,如下:
log p ( X ∣ θ ) = log ∫ Z p ( X , Z ∣ θ ) d Z = log ∫ Z p ( X , Z ∣ θ ) q ( Z ) q ( Z ) d Z = log E q ( Z ) [ p ( X , Z ∣ θ ) q ( Z ) ] ( 使 用 j e n s e n 不 等 式 ) ≥ E q ( Z ) [ log p ( X , Z ∣ θ ) q ( Z ) ] \begin{aligned} \log p(X|\theta)&=\log \int_Zp(X,Z|\theta)dZ \\ &=\log \int_Z\frac{p(X,Z|\theta)}{q(Z)}q(Z)dZ\\ &=\log E_{q(Z)}[\frac{p(X,Z|\theta)}{q(Z)}](使用jensen不等式)\\ &\ge E_{q(Z)}[\log\frac{p(X,Z|\theta)}{q(Z)}] \end{aligned} logp(X∣θ)=log∫Zp(X,Z∣θ)dZ=log∫Zq(Z)p(X,Z∣θ)q(Z)dZ=logEq(Z)[q(Z)p(X,Z∣θ)](使用jensen不等式)≥Eq(Z)[logq(Z)p(X,Z∣θ)]
等号成立时, p ( X , Z ∣ θ ( t ) ) = c q ( Z ) p(X,Z|\theta^{(t)})=cq(Z) p(X,Z∣θ(t))=cq(Z),两边对 Z Z Z积分得:
∫ Z p ( X , Z ∣ θ ( t ) ) d Z = c ∫ Z q ( Z ) d Z ⇒ c = p ( X ∣ θ ( t ) ) q ( Z ) = p ( X , Z ∣ θ ( t ) ) c = p ( X , Z ∣ θ ( t ) ) p ( X ∣ θ ( t ) ) = p ( Z ∣ X , θ ( t ) ) \begin{aligned} &\int_Z p(X,Z|\theta^{(t)})dZ=c\int_Zq(Z)dZ\\ &\Rightarrow c=p(X|\theta^{(t)})\\ &q(Z)=\frac{p(X,Z|\theta^{(t)})}{c}=\frac{p(X,Z|\theta^{(t)})}{p(X|\theta^{(t)})}=p(Z|X,\theta^{(t)}) \end{aligned} ∫Zp(X,Z∣θ(t))dZ=c∫Zq(Z)dZ⇒c=p(X∣θ(t))q(Z)=cp(X,Z∣θ(t))=p(X∣θ(t))p(X,Z∣θ(t))=p(Z∣X,θ(t))
结论和上面一致。
参考:
https://blog.csdn.net/zouxy09/article/details/8537620
https://www.bilibili.com/video/av31906558/?p=1