-->

机器学习40讲_41_39_隐变量下的参数学习EM方法与混合模型

你好,我是王天一。

今天我和你分享的主题是隐贝亮下的参数,学习EM方法与混合模型。

前面我曾介绍过隐马尔可夫和线性动态系统这一类隐变量的模型。

所以演变量呢表示的其实是数据的不完整性,也就是训练数据并不能给出关于模型结果的全部信息。

因此呢只能对模型当中未知的状态做出概率性的预测。

在今天这一讲里,我将和你分享一种在演变量模型的参数学习中发挥重要作用的方法,那就是期望最大化算法。

期望最大化算法简称叫EM.算法是用于计算最大自然估计或者是最大后验估计的迭代方法。

其中的期望步骤呢利用当前的参数来生成关于隐变量概率的期望函数最大化步骤则寻找让期望函数最大的一组参数,并将这组参数应用到下一轮的期望步骤中。

如此循环往复,算法就可以估计出演变量的这个概率的分布。

Em算法,它可以在不能直接求解方程的情况下,找到统计模型的最大似然的参数。

但是呢不能保证收敛到全局的最优。

一般来说,似然函数的最大化会涉及对所有未知的参量进行求导,这在演变量模型当中呢是无法实现。

那EM算法的解决方法呢是将求解过程转化为一组互锁的方程。

它们就像联动的齿轮一样,通过待求解的参数和未知的状态变量,两者不断的迭代,不断的交叉使用来求解最大的那个似然。

具体的做法呢是给两组未知数中的一组,选择任意的取值。

使用它们来估计另一组,然后使用这些更新的取值呢来找到前一组,更好的估计在两者之间进行交替的这个操作,直到得到的值都收敛到一个固定的点。

Em算法的实现方法,可以通过一个简单的实例加以阐释。

这个例子来源于期刊自然生物技术第二十六卷第八期上的论文。

何为期望最大化算法?考虑到之前关于贝叶斯统计的教程,也是来源于这个期刊概率推断,与机器学习在生命科学中的重要性便不言而喻了。

点击文稿,你可以看到解释EM算法的一个示例问题,假定有两枚不同的硬币a和b它们的重量分布西塔a和西塔b是未知的那这个数值到底等于多少呢?可以通过抛掷之后计算正反面各自出现的次数来加以估计。

具体的估计方法呢是在每一轮中我随机的抽一枚硬币抛掷十次,再将这个过程执行五轮。

根据这五十次投币的结果来计算,西塔a和西塔b的最大自然估计,在文稿中,图片所表示的单次实验当中可以看到硬币a呢是被抽到了三次三十次投掷当中,总共出现了二十四次的正面。

那么硬币b被抽到两次,二十次投掷里出现了九次的正面,那用最大自然估计就可以计算出来啊。

西塔a它的估计值等于零点八,那么西塔b呢就等于零点四五,这样的问题显然没有什么挑战性。

可是如果作为观测者的,我们只能知道每一轮当中出现的正反面,结果却不能得知到底选取的硬币是a还是b的话,问题可就没那么简单了。

这里的硬币选择就是不能直接观测的这个演变量啊或者叫状态。

如果把这个也没量扔到一边,不管呢,就没有办法估计未知的参数。

可是如果要确定这一组页变量的话,又得基于硬币的重量分布,也就是未知的参数来进行这个最大自然估计。

这样一来呢,问题就进入了这个鸡生蛋,还是蛋生鸡这个死胡同里面。

毛主席曾经教导我们自己动手丰衣足食。

既然数据当中的信息是不完整的那就人为的给他补充完整。

在这个问题当中,隐藏的硬币选择和待估计的重量分布,两者确定一个就可以确定。

另一个由于这个观测结果呀,也就是正反面出现的次数,直接给出了重量分布的信息,那就不妨人为的设定一组这个初始化的参数。

戴帽子的c at a和戴帽子的CTB,用这一组猜测的重量分布去倒推每一轮使用的到底是哪个硬币,也就是隐藏的状态。

计算出来的硬币选择呢会被用来对原来随机产生的初始化的未知参数进行更新。

如果硬币选择的结果是正确的那就可以利用最大自然估计更新出新的参数。

而更新的参数呢又可以应用在观测结果上,对硬币的选择做出修正,从而呢就形成了一个批评到自我批评这样的循环的过程。

这个过程会持续到隐藏变量和未知参数的取值都不再发生变化。

收敛之后,这个结果就是最终的输出,将上面的思路啊应用到文稿当中。

下一个图的投掷结果当中就可以看到EM算法。

它的一个出境两个初始的参数被随机的设定为戴帽子的西塔a等于零点六。

那么戴帽子西塔b等于零点五,这都是第一轮次啊初始化的参数,也就是第一轮次的参数。

在这两个参数之下啊,出现第一轮的结果,也就是五正五反的概率可以由文稿中的公式来进行计算。

那对计算出来的两个自然概率进行归一化,可以得到后验概率多少呢?零点四五和零点五五。

这说明如果初始的这个随机参数它是准确的话,那第一轮的结果更可能是由硬币b生成。

也就是说我扔的这个硬币啊,选择的这个硬币是b同样的道理呢,也可以计算出其他四轮的结果,来自于不同硬币的后验概率。

那么点击文告,你可以看到结果的图示。

在已知硬币的选择的时候呢,所有正反面的结果都有明确的归属,它要么来自于a要么来自于b这时候利用后验概率就可以直接对硬币的选择来做出判断。

结果是什么呢?一四两轮使用的是硬币b二三五,这三轮使用的是硬币a既然硬币的选择已经确定,这时候呢就可以利用最大自然估计因为这个隐藏的状态已经确定下来了啊,它不再隐藏了。

这时候结果和前文当中最大自然估计的结果是相同的。

那么利用这一组更新之后的参数呢,CDA和c to b又可以重新计算每一轮次抽取不同硬币的一个后验概率。

也就是我用估计的参数反过来再去估计隐藏的变量。

那么你可以自己计算一下。

虽然这种方法呀它能够实现演变量和参数的动态更新,但它呢还不是真正的EM算法,而是硬输出的k均值聚类。

真正的EM算法,它并不会将后验概率最大的值直接去赋给隐变量,而是考虑它所有可能的取值。

也就是考虑它的概率分布在概率的框架下来进行分析。

在前面例子当中,由于第一轮投掷硬币a的可能性是我们计算出来的后验概率等于零点四五。

那么硬币a对正反面出现次数的贡献就是零点四五。

哎,就是说正反面里面我可以认为都有百分之四十五的次数是由a来贡献的。

所以呢在五次正面的结果当中,来源于a的就等于多少呢?五乘以零点四五,那等于二点二五次来源于硬币b的,就是二点七五次。

同样的道理,可以计算出其他轮次当中a和b各自的贡献。

贡献的比例呢都和计算出来的后验概率是对应计算出a和b在不同轮次当中的贡献,就可以对未知参数做出更加精确的估计。

在五十次的投掷当中,硬币a它贡献了二十一点三次正面和八点六次反面啊,计算出来的值有零有整啊。

这时候它的参数估计值就等于零点七一,西塔a等于零点七一。

硬BB呢则是贡献了十一点七次正面和八点四次反面,它的c塔b的估计值就等于零点五八。

那利用这组参数继续迭代更新呢,我相当于使用整个的概率分布去估计,也可以计算出最终的估计值。

那么在这儿呢就不算了,上面的实例给出来的,只是对EM算法一个直观的理解。

那么在数学上呢,EM算法是通过不断的局部逼近,来解决似然概率最大化的问题。

假定模型当中未知的参数是西塔,隐藏的状态变量是z.那么输出的结果啊或者叫输出的因变量是y那么三者呢就可以形成从c的到z到y这样的一个马尔可夫链啊,定义了它们之间的依赖关系。

Em算法呢相当于是通过PZ杠西塔,也就是给定参数的情况下演变量的条件概率。

它的最大化来简化PY杠西塔,也就是给定演变量的条件下输出的条件概率的最大化,听起来挺复杂。

下面呢我将以算法在高斯混合模型当中的应用来说明这个过程。

顾名思义,高斯混合模型是由k个高斯分布混合而成的模型。

这个模型呢在前面的第二十讲当中曾经有所提及啊,你可以往前翻一翻。

回顾一下。

在高斯混合模型当中,每个高斯分布的系数派k可以看成是它出现的概率模型,生成的每个样本呢都只能来自于混合模型里的唯一一个成分,不能既来自a又来自b就像在每一轮的投掷当中啊,我只能扔一枚硬币一样。

作为一个生成模型,高速混合,首先按照概率派k来选择出DK个高斯分布,也就是DK个成分。

再按照这个分布的概率密度采出来一个样本。

所以呢高斯分布的选择和样本的取值共同构成了这个混合模型的完备数据。

但是从观察者的角度来看呢,分布的选择是在生成数据的黑箱里完成的。

我观察不到,不能够直接的观察,所以需要用演变量来z的定义。

而单独的观测数据x就只能够构成一个不完备的数据。

对高斯混合模型的学习呢,实际上就是在给定不完备数据x的时候,估计模型当中所有的派k啊,还有高斯分布的均值,缪k还有方差sigma这些未知的参数呢,我可以把它统称为c塔。

那么最优的参数应该能够让数据的对数似然函数最大化啊,点击文稿。

你可以看到这个对数似然的数学表达式。

这个对数似然呢涉及到对求和项进行对数的计算,这对于求解极致来说是个非常棘手的问题。

好在我们还有演变量,虽说混合模型当中存在着若干个成分,但是落实到单个的样本之上,每个样本呢只由其中的一个高斯分布产生。

引入演变量呢就能够确定这唯一的一个分布,也就是去掉上面的表达式当中对k的一个求和,从而呢避免了对求和项复杂的对数运算。

如果已知每个样本XN所对应的演变量ZNK等于一的话,那么就是意味着第n个样本是由第k个混合成分来产生的。

利用这个信息点击文稿,你可以看到对上面表达式的一个简化。

但问题在于演变量本身也是随机变量,那不是确定的,只能用概率来进行描述。

如果将参数当前的估计值看作真实值的话,那它呢就可以和这个不完备的数据结合起来,用来呢对演变量的分布进行一个估计演变量的分布。

它可以利用贝叶斯定理来计算,将这个混合参数派k看作先验概率。

单个的高斯分布NMUK西格玛k看作似然概率,那就不难计算出演变量ZNK关于k的一个后验概率,点击文稿。

你可以看到这个表达式。

如果你对第二十讲的内容还有印象的话,就会发现这个后验概率呢实际上就是我们那里提到的这个责任。

也就是伽马NK.其实呢它就是DK个高斯分布对于样本的一个响应度。

由于这里计算出来的后验呢是随机变量,ZNK等于一的概率。

那它实际上代表的就是这个ZNK的数学期望有了隐变量的后验概率之后,就可以把它带入到基于完备信息的这个对数似然概率当中。

通过求和对隐变量进行边际化的处理,把隐变量给它消掉求出的目标。

对数自然l呢关于演变量z的数学期望,也叫做q函数,点击文稿。

你可以看到它的数学表达式,把这个对演变量求解数学期望和对每个样本对数似然求和的顺序调转一下,也就是针对每个样本求出期望之后,再将所有的期望值进行一个求和。

这时呢就可以得到完备数据下对数似然的数学期望点击文稿。

你可以看到期望步骤的最终结果,也就是上面我们求出来的数学期望。

接下来的最大化步骤呢就需要找到让上面这个表达式最大化的一个新的参数,也就是对参数做一个更新。

这只需要对里面的未知量派k缪k还有sigma k分别求偏导就可以了啊,就是一个完全的数学问题了。

在SK line当中啊,EM算法被内嵌在mixture模块里面的高性mixture类,调用这个类就相当于调用EM算法,用glhi mixture类对二十支英超球队的聚类数据进行分类啊,点击文档你可以看到分类的结果。

其中不同的高斯分布呢是用不同颜色的椭圆来表示的。

可以看出啊,每个高斯分布都由相距较近的这个点组成。

那你可以将高斯混合模型的结果,也就是EM的结果和二十讲当中k均值的结果做一个比较观察一下硬距类和软距类的区别。

今天我和你分享了期望最大化算法的基本原理,以及它在高速混合模型当中的应用,包含着以下四个要点。

第一,期望最大化算法呢是通过迭代来求解,让观测结果似然概率最大化的未知参数。

第二,期望步骤计算完备数据的自然概率,关于演变量的数学期望。

第三,最大化步骤,通过最大化期望步骤的结果来计算新的参数估计值。

第四,期望最大化算法呢主要用于高斯混合模型。

这一类含有演变量的概率模型的学习。

除了高斯混合模型之外呢,对隐马尔可夫网络的学习也需要使用EM算法。

这在前面的介绍里面呢有所提及。

在野马可夫的文献当中啊,EM算法通常被称为bang weouch算法。

两者虽然名称不同,但原理是一样的。

你可以参考维基百科等资料,了解帮weelch算法的特点,并在这里分享你的见解。