美文网首页机器学习Python
机器学习笔记 - 19. EM算法(讲师:邹博)

机器学习笔记 - 19. EM算法(讲师:邹博)

作者: blade_he | 来源:发表于2018-10-07 20:24 被阅读22次

前言

EM算法,在学术界的重视程度,要高于在工业界。
它是一个做数据优化的方法。
比如现在如果遇到问题,如果想对问题做优化,大家或许只会用最大似然估计(MLE)写目标函数,当然也可以换成最大熵模型的目标函数。
但是如果遇到参数的个数比目标函数的值还要多的时候,没有办法进行求解,即数据中存在隐变量,即存在不可观测变量,还想对参数求极值,但有些隐变量y不知道,只知道x,即需要求解(x, y, θ)中的参数θ,当然顺便想求解隐变量y本身。
这种时候,可以尝试期望最大化算法,即EM算法

主要内容

2018-10-07 20_05_15-【邹博_chinahadoop】机器学习升级版VII(七).png

该算法的提出时间为1977年。

EM算法可以解决很多问题,比如估计身高。


2018-10-07 20_07_52-【邹博_chinahadoop】机器学习升级版VII(七).png

此节课的内容分两部分:
第一部分:使用欧拉(Euler)式的方法来讨论
可能并不是对的,但很直观,了解即可。
第二部分:使用高斯(Gauss)式的方法来讨论。
非常严格,过程一步一步,一环扣一环。但是需要掌握

名词解释

EM算法本身是一个求解带隐变量y,以及含有模型参数θ的模型,当然,往往是要求取给定的样本x,即P(x|y, θ)
但是落地的时候,说的模型是假设数据服从混合高斯模型(GMM),利用EM算法,求解混合高斯模型的参数。
亦即有两个或多个高斯模型:
如均值是μ1, 方差是σ12,即α1N(μ1, σ12)
此外还有:
α2N(μ2, σ22)
...
αkN(μk, σk2)
即k个高斯模型。
将这些高斯模型混在一起,形成高斯混合模型,即GMM
其实在讲解K均值(K-Means)时,已经谈到过,即:
方差:σ12 = σ22 = ... = σk2,并且它们都是对角阵,其实就可以使用K均值算法,对每个样本做簇的标记。
但是如果方差不相等的话,推广为一般的高斯分布,那么K均值可能并不适用
那么此时可以尝试EM算法
注意: EM,即期望最大化,是需要解释说明的算法(Algorithm);GMM,高斯混合模型,是需要落地的模型(Model)

课堂问答

问:EM算法主要运用在哪一块?是自然语言处理么?
答:不见得只是用于自然语言处理。有可能会用在哪呢?比如如果想用于主题模型,比如有一些文档,每个文档有若干个词,这些都是已知的。我们希望了解每个文档有哪些topic,即这些Topic是什么?(Topic Model),拿天龙八部为例,比如“契丹”,即主题或许是政治;“王语嫣”,即主题或许偏向爱情。
即可以得到统计:
文档:天龙八部;武侠主题比重0.8,爱情比重0.15,历史、政治。。。这些主题的比重各是多少?
这相当于主题分布,有多少个主题就是多少个类别。
然后每一个主题,比如:P(大理|武侠),即武侠这个主题当中,大理出现的比例是多少?假定有10万个词,在下图中的p(Wj|Zk),即10万点分布。
下面的模型的意义在于:
通过文档->得到N个主题->主题对应N个词,任何节点D,任何节点Z,任何节点W都是随机变量,并且给定文档时候的主题,其概率是多项分布,给定文档的词也是多项分布。
当给定多篇文档的时候,比如M篇文档,文档本身我们知道,词本身我们也知道,但是每一个文档包含的主题是什么,每一个主题所对应的词分布是什么,是未知的,但是通过文档看到词的概率是已知的。
因为文档是已给定的,我们只需要通过频率去统计一下。我们认为频率的极限是概率,总是可以去解释的。
主要问题在于我们不知道隐变量Z,然后我们现在有的是文档和词语,将文档与词语的配对,记为样本数据,即X向量:(D, W)。
P(z|d)与P(w|z),我们认为目的是求参数θ,Z本身是隐变量主题模型,这其实就是:P(θ, Z|X),即X有了,但是隐变量Z不清楚,我们的参数θ想估计一个这个问题。
EM算法即可以解决这种P(θ, Z|X)类似的问题。
这个并不是高斯混合模型(GMM),这其实是两个多项分布。

虽然EM算法落地可以通过高斯混合模型来讲,但是本质来说,高斯混合模型与EM算法并没有什么关系。
邹博老师举的例子:比如小龙女与王语嫣本身没关系,但是演过小龙女的演员,或许也可以演王语嫣,就感觉这两个人很像。

2018-10-07 20_29_23-【邹博_chinahadoop】机器学习升级版VII(七).png

问:EM算法能用在金融领域么?
答:不清楚,至少邹博目前在金融领域没有用到EM算法。

问:K-Means仅适用于各个变量呈正态分布的情况,而EM算法对数据的要求没有要求是么?
答:EM算法对数据分布要求是先有先验判定,比如我们将数据建模为多个多项分布或者高斯混合分布,即人工先建模,然后推公式,再迭代。
而K-Means算法必然是服从混合高斯分布的。

问:K-Means的数据不一定需要呈现正态分布?
答:从理论上说,K-Means算法需要满足混合高斯分布,但不等同于高斯分布。如果不满足的话,效果不一定非常差,但是不够符合理论。

问:EM算法解决的事情有隐藏的东西,需要求参数也要求中间隐藏东西?
答:是的。

问:貌似θ才是隐变量,Z是观测值?
答:Z是隐变量啊,即主题模型,因为不看文档,只根据词汇,完全不知道主题是什么。所以Z是观测不到的隐变量。

使用欧拉(Euler)式的方法来讨论

2018-10-07 21_02_11-【邹博_chinahadoop】机器学习升级版VII(七).png 2018-10-07 21_02_51-【邹博_chinahadoop】机器学习升级版VII(七).png 2018-10-07 21_03_28-【邹博_chinahadoop】机器学习升级版VII(七).png

如图,K-Means算法无法给出某个样本属于该簇的后验概率。
如果需要计算后验概率,就需要使用EM算法。

最大似然估计

2018-10-07 21_05_19-【邹博_chinahadoop】机器学习升级版VII(七).png 2018-10-08 19_54_23-【邹博_chinahadoop】机器学习升级版VII(七).png 2018-10-08 19_58_33-【邹博_chinahadoop】机器学习升级版VII(七).png

MLE(Maximum likelihood estimation)即最大似然估计的缩写:


2018-10-08 20_01_44-【邹博_chinahadoop】机器学习升级版VII(七).png

对似然概率取对数,化简:


2018-10-08 20_13_23-【邹博_chinahadoop】机器学习升级版VII(七).png

对μ与σ分别求偏导,并且偏导等于0,其中μ为均值,σ为伪方差(因为方差应该是除以n-1)。通过样本得到均值与方差,就能得到估计值,这就是最大似然估计的最终结论:


2018-10-08 20_15_19-【邹博_chinahadoop】机器学习升级版VII(七).png

设定一个场景,解释EM算法:


2018-10-08 20_20_04-【邹博_chinahadoop】机器学习升级版VII(七).png 2018-10-08 20_22_02-【邹博_chinahadoop】机器学习升级版VII(七).png
延伸,用于解释问题是什么:
接上图,Σi有可能是数字,也可能是nxn的矩阵,μi有可能是数字,也可能是n维的向量。
关键在于样本是一元还是多元的。
举例:
如果设定有数据身高=h,体重=w,腰围=r,则构成(h, w, r),任何一个样本给定了3x3维度的正定对称的方阵(如身高与身高的方差,身高与体重的方差,身高与腰围的方差。。。):
Σ =
hh2 σhw2 σhr2
σwh2 σww2 σwr2
σrh2 σrw2 σrr2)

现在估计参数π1π2...πk是什么,估计μ以及Σ是什么

课堂问答

问:神经网络能不能做无监督学习?
答:我们现在其实是利用输出的值去做,但是可以做自编码。如果假定没有y,输入是x,输出其实还是x。我们来调整中间网络权值,得到自编码,最后把x扔了。这样倒数第二列是x的特征,这个时候我们可以认为实现了无监督学习。但是是用有监督的方式,做无监督的事。

问:做最大似然估计是不是要求目标函数必须是凸函数?
答:不要求。比如,K-Means算法其实给定目标函数也是最大似然估计所给的,但并不是凸函数。因为K-Means对初值敏感,有多个极值,所以不会是凸函数。
只是我们与大家所见到的函数,大多是指数族分布,如果有极值,只有一个,所以感觉是凸函数。

问:μ与Σ是可观测变量还是隐变量?π是隐变量么?
答:这里μ,Σ与π都是我们想去求解的未知的值,如果一定要区分,比如男性,女性的性别是隐变量,μi与π都是参数θ。

求解的过程:
首先建立目标函数


2018-10-08 20_43_47-【邹博_chinahadoop】机器学习升级版VII(七).png

N(xik, Σk),这个是一个给定了某个均值,方差之后,第i个样本的概率密度。
本质上是这个(一元的),只是 把μ替换为μk,把σ替换为 σk

2018-10-08 20_47_23-Start.png

只要μk与σk是已知的,那么给定一个样本xi的时候,概率密度的值是可以计算的。
此时如果有先验概率πk,则下述式子是可以计算出来的(即第i个样本发生的概率):

2018-10-08 20_52_06-Start.png

课堂问答

问:隐变量有多少如何确定?
答:隐变量有多少,与K均值取几个类似,不容易判定。至于有多少,需要根据样本的特定,进行尝试,即隐变量其实是超参数。

问:刚刚的对数似然函数不用加负号么?
答:如果加负号就变成了取最小值,即变成了损失函数。不加负号是取最大值。通常做的时候,会取负对数似然,否则就变成取最大值。

下面要做两件事情:
PPT如下:


2018-10-08 20_59_44-【邹博_chinahadoop】机器学习升级版VII(七).png

邹博首先通过欧拉的方式来讨论:

  1. Euler:
    假定得到x1, x2, x3, ..., xm,共m个样本。
    然后希望得到各个样本的性别是男孩还是女孩:sex: boy/girl,
    即认为boy服从高斯分布:N(μ1, σ1),女孩服从高斯分布:N(μ2, σ2)。
    然后各自与π1,π2相乘后,再相加,所得到的结果:

π1·N(μ1, σ1)
2·N(μ2, σ2)

其目的就是求得其中的π1,μ1, σ1以及π2,μ2, σ2
第一步:先验知识(蒙或者猜)
比如均值μ1 = 1.75;方差σ1 = 100
均值μ2 = 1.62;方差σ2 = 80
这里是随便说的,没有什么道理。。。
π1 = π2 = 0.5
即,假定男女各半
老师的相关草稿如下:

2018-10-08 21_10_26-【邹博_chinahadoop】机器学习升级版VII(七).png

继续往下计算结果。
比如x1的值是2.26,既然已经通过先验得到假定均值与方差,那么就可以求概率密度:

2018-10-08 20_47_23-Start.png

如图,等式右侧可得到一个为常数的概率密度,假定是0.01,然后乘以π1 ,概率密度的意思:如果这个人是男孩的概率密度是几;那么π1=0.5的含义是:在m个人随机挑出一个人,是男孩的概率。

2018-10-08 21_16_37-【邹博_chinahadoop】机器学习升级版VII(七).png

下面的草稿,是将μ与σ的参数1替换为参数2的值,然后得到另外一个概率:


2018-10-08 21_23_43-【邹博_chinahadoop】机器学习升级版VII(七).png

现在对2.26这个人算出是男孩还是女孩的概率密度,做一个规划,然后将第一次计算的值,替换为规划计算之后的值:


2018-10-08 21_27_03-【邹博_chinahadoop】机器学习升级版VII(七).png

即得到:身高为2.26的人,在先验参数下,是男孩的概率是71.42%,是女孩的概率是28.57%.
这是第一个样本,即身高为2.26的情况。
同理可以选更多样本的情况,如
x2: 1.70
x3: 1.58
然后,将每个样本,都按照第一个样本的形式算一遍,分别得到各个样本在先验概率情况下,是男孩或女孩的概率:

2018-10-08 21_33_13-【邹博_chinahadoop】机器学习升级版VII(七).png

然后可以往下计算新的一种情况:
将2.26 x 0.71, 2.26 x 0.29; 1.70 x 0.51, 1.70 x 0.49....,得到下面的草图:

2018-10-10 20_41_39-【邹博_chinahadoop】机器学习升级版VII(七).png
通过概率来解释,即,2.26米的人,71%的概率是男的,29%的概率是女的。
男孩服从N(μ1, σ1)的高斯分布,如果是高斯分布,均值与方差能否按照下述公式计算?
2018-10-10 20_48_21-【邹博_chinahadoop】机器学习升级版VII(七).png
把刚刚计算的结论给代进去,即将右侧的计算结果给代进去:
μ1的估计值 = (1.6046 + 0.87 + 0.474 + 1.287) / (0.71 + 0.51 + 0.3 + ... + 0.65)
σ12的估计值可以将μ1的估计值代入公式求得。
这样,男孩的μ1的估计值与σ12的估计值就有了。
同理,可以求得女孩的μ2的估计值与σ22的估计值。
同时μ1 / m即可得到所谓的π1的估计值
同理,μ2 / m也可以得到所谓的π2的估计值

回到刚刚随便猜的地方:

2018-10-10 21_03_20-【邹博_chinahadoop】机器学习升级版VII(七).png
再回到计算得来的估计值,即得到了一定的样本信息:
2018-10-10 21_04_11-【邹博_chinahadoop】机器学习升级版VII(七).png
同时,还有先验的一些情况,可能没有收敛,但是没关系。
可以把计算出来的各个估计值,再重新做计算。
2018-10-10 21_06_08-【邹博_chinahadoop】机器学习升级版VII(七).png
即重新算男孩,女孩的均值与方差,以及参数π。
如此重复计算几十次,相信足够收敛了。
收敛之后的参数们,就是我们要求的结论。

这个过程不难,可能并不严格,而这一过程,就是欧拉式的方法
下半段,再利用严格的高斯的解法,解释这样做的结论,为什么是对的。

To Be Continued....

相关文章

网友评论

    本文标题:机器学习笔记 - 19. EM算法(讲师:邹博)

    本文链接:https://www.haomeiwen.com/subject/coxyoftx.html