美文网首页机器学习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