EM算法笔记

EM算法笔记

背景

        EM(Expectation-Maximum)算法也称期望最大化算法,是最常见的隐变量估计方法,它的思想在很多算法上有所体现。例如高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐式马尔科夫算法(HMM)、LDA主题模型的变分推断、还有VAE、GAN等等。

        在机器学习算法中,一般学习包含两种数据情况,一种是完整数据(complete case )其包含我们可见的配对数据(z,x),所以我们能够直接用最大似然估计MLE的方式去估计参数,就能学习到z和x之间的表示关系。而另一种是不完整数据(incomplete case),这种情况下直接使用MLE是无法进行参数估计,这时的z就是所述的隐变量。比如我们对机器输入一段语音,机器只知道声音数据,却不知道其背后所表达的意思,这里的声音可以比作x,背后的意思可以比作z。

对于完整数据(complete case ),我们的目标函数如下:

\large L\left ( \theta \right )=log P\left ( x,z|\theta \right ) =log P\left ( z|\theta \right )+log P\left ( x|z,\theta \right )

虽然参数\large \theta未知,但是分别对\large log P\left ( z|\theta \right )\large log P\left ( x|z,\theta \right )用MLE的方式进行估计即可。(chain rule)

对于不完整数据(incomplete case ),我们的目标函数如下:

\large L\left ( \theta \right )=log P\left ( x|\theta \right )

           \large =log \sum _{z} P\left ( x,z|\theta \right ) =log \sum _{z} P\left ( z|\theta \right )\cdot P\left ( x|z,\theta \right )

因为此时的z是不可见的隐变量,所以我们通过全概率公式,将其转换,最后拆分成基于z的后验概率和x的后验概率的乘积,即,此时的参数\large \theta和z都是未知的。不过,如果我们能够通过先求得z的参数,再求x的参数,这样问他就能够迎刃而解。

EM算法推导

 给定模型参数\large \theta(未知),观测变量x(已知),以及隐变量z(未知)

目标函数即为,用最大似然估计求如下公式:

\large L\left ( \theta \right )=log P\left ( x|\theta \right )   (1)

目的就是求如下目标所求的最大参数\large \theta,(arg max 下面 是 \large \theta  我不知道怎么打)

\large \theta = arg max L\left ( \theta \right )=arg max log P\left ( x|\theta \right )  (2)

假设经过n次迭代,我们得到了第n次迭代的参数\large \theta_{n},这个时候\large \theta_{n}假定其已知,那么目标函数就可以写成如下形式,(arg max 下面 是 \large \theta  我不知道这么打):

\large \theta = arg max L\left ( \theta \right ) - L\left ( \theta_{n} \right )= log P(x|\theta ) - log P(x|\theta_{n} )  (3)

同时,在这里引入隐变量z,先把左边拆开,右边暂时不管。

\large = log \sum_{z} P(x,z|\theta ) - log P(x|\theta_{n} )   (4)

继续用全概率公式的方式进行拆解(chain rule)

\large = log \sum_{z} P(x|z,\theta )\cdot P(z|\theta) - log P(x|\theta_{n} )  (5)

在这里引入一个小小的变换,乘上1

\large = log \sum_{z} P(x|z,\theta )\cdot P(z|\theta)\cdot \frac{P(z|x,\theta_{n})}{P(z|x,\theta_{n})} - log P(x|\theta_{n} )   (6)

并进行整理,就是把位置对应的换一下

\large = log \sum_{z} P(z|x,\theta_{n})\cdot \frac{P(x|z,\theta )\cdot P(z|\theta)}{P(z|x,\theta_{n})} - log P(x|\theta_{n} )    (7)

因为在log 包含求和是比较不好算的,所以这里用优化其下届的方式进行优化,就有

\large \geq \sum_{z} P(z|x,\theta_{n})\cdot log \frac{P(x|z,\theta )\cdot P(z|\theta)}{P(z|x,\theta_{n})} - log P(x|\theta_{n} )   (8)

为什么会得到上述的公式呢?这里用到了琴生不等式((Jensen)不等式(也称为詹森不等式)),通俗来讲就是,可以通过琴生不等式对上述的情况进行近似求解。解释如下:

比方说,要求解\large log\left \{ \sum _{z}f(z) \right \},但这种形式求解是不很好求,但是如果我们求\large log\left \{ \prod _{z}f(z) \right \}的话,却比较好解决,所以,琴生不等式,就将\large log\left \{ \sum _{z}f(z) \right \}转化成了\large \sum _{z} log f(z)的情形,其具体形式和条件如下:

\large log \sum _{i=1} ^{n}\lambda _{i}\cdot x_{i}\geq \sum _{i=1} ^{n}\lambda _{i}\cdot log x_{i}  并且 要求   \large \sum _{i=1} ^{n}\lambda _{i} = 1

回到公式(7)我们就会发现,这样正好符合上述的不等式要求,即\large P(z|x,\theta_{n})可以类比成 \large \lambda _{i},后面那部分就对应另一部分,因为在给定x和参数\large \theta_{n}的情况下,\large \sum_{z} P(z|x,\theta_{n}) = 1

接着,继续从(8)继续往下,因为\large \sum_{z} P(z|x,\theta_{n}) = 1,所以我们把\large log P(x|\theta_{n} )直接合并到前面去,(log 相减 等于 log 里面相除)得到:

\large = \sum_{z} P(z|x,\theta_{n})\cdot log \frac{P(x|z,\theta )\cdot P(z|\theta)}{P(z|x,\theta_{n})\cdot log P(x|\theta_{n} )} = \Delta (\theta | \theta_{n})  (9)

那么最终,就是从公式(3)转换到如下式子:

\large L\left ( \theta \right ) \geq L\left ( \theta_{n} \right ) + \Delta (\theta | \theta_{n})   (10)

那么第n+1 次迭代后的参数\large \theta_{n+1}的求解就可以写成如下形式(arg max 下面 是 \large \theta  我不知道这么打):

\large \theta_{n+1} = arg max \left [ L\left ( \theta_{n} \right ) + \Delta (\theta | \theta_{n}) \right ]    (11)

即,最后优化其下届,就能够做到不断优化的作用。由于只需要求\large \theta的优化,所以其他无关项都可以舍去,\large L\left ( \theta_{n} \right )可以直接划去,\large \Delta (\theta | \theta_{n})中,和\large \theta无关的项也都可以舍去,参照公式(9),得到最终的优化目标:

\large = arg max \left \{ \sum_{z} P(z|x,\theta_{n})\cdot log P(x|z,\theta )\cdot P(z|\theta) \right \}   (12)

再对其进行整理,得到:

\large = arg max \left \{ \sum_{z} P(z|x,\theta_{n})\cdot log P(x,z|\theta ) \right \}    (13)

即,最终的目标为求在给定x和\large \theta_{n}的情况下,求z的期望,并乘上\large log P(x,z|\theta )就是最后的优化目标,得到下式:

\large = arg max \left \{E_{z|x,\theta_{n}}\left [ log P(x,z|\theta ) \right ] \right \}     (14)

那么,最后的优化就分为两步:

1.先求出z在给定参数x和\large \theta_{n}的情况下,关于在\large log P(x,z|\theta )的期望值,也称为E步,即求期望

\large E_{z|x,\theta_{n}}\left [ log P(x,z|\theta ) \right ]   (15)

2.求得关于z的期望之后,可以认为此时z为已知,这个时候就是上述的完整数据(complete case )的情形,所以可以用MLE的方式去优化求解参数\large \theta,就可以求解最大化\large log P(x,z|\theta ),也称为M步,即最大化目标函数:

\large Maximize \left [ log P(x,z|\theta ) \right ]    (16)

最后总结就是,从整个优化过程来看

1.在E步的时候,假设参数\large \theta已知,来求解隐变量z

2.在求得隐变量z之后,再假设z已知,来求解参数\large \theta,这里用MLE 的方式进行优化

如此往复,就能求得最终的参数 。

EM算法性质

1.EM算法并不是全局最优的,所以使用的时候,要重复多次,找到最优的结果,(隐变量模型他本身不是凸函数)。

2.EM的趋势,其最大似然的估计过程,最大化的过程一定是严格递增的,即一定能够收敛,如下图所示

\large L\left ( \theta \right ) - L\left ( \theta_{n} \right )

图1,EM算法 极大似然优化过程的曲线图

暂时写到这,

欢迎批评指正

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值