若是咱们定义观测变量和潜在变量的一个联合几率分布,那么对应的观测变量自己的几率分布能够经过求边缘几率的方法获得。这使得观测变量上的复杂的边缘几率分布能够经过观测与潜在变量组成的扩展空间上的更加便于计算的联合几率分布来表示。
所以,潜在变量的引入使得复杂的几率分布能够由简单的份量组成。 html
除了提供一个构建更复杂的几率分布的框架以外,混合模型也能够用于数据聚类,或者说聚类是混合模型一种特定形式。
咱们从这小结开始,尝试从“数据聚类问题”切入对混合模型的讨论,咱们来讨论数据点集合中的聚类的问题。算法
咱们首先使用一个非几率的方法解决这个问题,即K均值算法。
在咱们后面谈到混合几率分布的潜在变量的时候,其中离散潜在变量能够被看做将数据点分配到了混合几率分布具体成分当中。K均值算法对应于用于高斯混合模型的EM算法的一个特定的非几率极限apache
咱们考虑寻找多维空间中数据点的分组或聚类的问题。假设咱们有一个数据集,它由 D 维欧几里德空间中的随机变量 x 的 N 次观测(N次独立分布采样)组成。咱们的目标是将数据集划分为 K 个类别。现阶段咱们假定 K 的值是给定的。
网络
直观上讲,咱们会认为由一组数据点构成的一个聚类中,聚类内部点之间的距离应该小于数据点与聚类外部的点之间的距离。框架
为了形式化地说明这个概念,引入一组 D 维向量,其中 k = 1,2,....,K,且
是与第 k 个聚类关联的一个表明,咱们能够认为
表示了聚类的中心。咱们的目标是找到数据点分别属于的哪个
类,使得每一个数据点和与它最近的向量
之间的偏差评估函数(例如平方和)最小。函数
咱们定义一些记号来描述数据点的聚类状况,对于每一个数据点,咱们引入一组对应的二值指示变量
,其中k = 1,2,....,K 表示数据点
属于 K 个聚类中的哪个,从而若是数据点
被分配到类别 k,那么
=1,且对于 j != k,有
=0。这其实就是一种”“one-hot”编码方法。优化
以后咱们能够定义一个目标函数,也即损失函数(loss function):编码
它表示每一个数据点与它被分配的向量之间的距离的平方和。咱们的目标是找到
和
的值,使得 J 达到最小值。
spa
咱们能够用一种迭代的方法完成K均值的目标函数,其中每次迭代涉及到两个连续的步骤,分别对应于和
的最优化。.net
1)首先,咱们为选择一些初始值。即随机选择一些初始的质心。
2)而后,在第一阶段,咱们关于最小化 J,保持
固定。对
求偏导咱们就会发现,最优化公式能够转化为
。很显然,即在现有质心的前提下,将数据点归类为距离最近的聚类点,即便 J 最小。
3)在第二阶段,咱们关于最小化 J,保持
固定。目标函数 J 是
的一个二次函数,直接求导求极值便可,
,能够很容易地解出
,即
。这个表达式有一个简单质朴的含义,即在现有聚类几率分布的前提下,从新计算各种中新的质心(取均值),这样即便得 J 最小。
4)不断重复这个二阶段优化直到收敛(直到聚类的分配不改变,或直到迭代次数超过了某个最大值)。
咱们看到,更新和更新
的两个阶段分别对应于 EM 算法中的 E(指望)步骤和 M(最大化)步骤。
因为每一个阶段都减少了目标函数 J 的值,所以算法的收敛性获得了保证。
K均值算法的基础是将平方欧几里德距离做为数据点与表明向量之间不类似度的度量,这不只限制了可以处理的数据变量的类型(例如离散标签状况),并且使得聚类中心的肯定对于异常点不具备鲁棒性。
咱们能够这样推广K均值算法:引入连个向量 x 和 x′ 之间的一个更加通常的不类似度的度量,而后最小化以下的失真度量(损失函数):
与普通的K均值同样
1)对于给定的聚类表明,E步骤涉及到为每一个数据点分配聚类,使得与对应的聚类集中数据点间的不类似程序最小。这一步的计算代价为
,与标准的K均值算法的情形相同。
2)对于不类似程度度量的通常选择,M步骤一般比K均值的情形更加复杂,所以一般会将聚类原型限制为等于某个分配到那个聚类的数据向量,由于这使得算法能够适用于任何不类似程度的度量,
只要它可以被计算。所以,对于每一个聚类 k,M步骤涉及到在分配到那个聚类的个点上的离散搜索,这须要
次对于
的计算。
K均值算法的一个值得注意的特征是,在每次迭代中,每一个数据点都被分配到一个惟一的聚类中,这友类相似经典决策树每层叶子的硬划分。虽然某些数据点与其聚类中心的距离远小于其余中心的聚类,可是也存在其余的数据点,位于两个聚类中心的大概中间的位置。在后一种情形中,强行将数据点分配到最近的聚类不是最合适的。
相似于XGboost对决策树的改进(采用权值的方式代替决策树的硬分类),经过对K均值采用几率的方法,咱们能够获得对数据点聚类的“软分配”,它反映了在最合适聚类分配上的不肯定性,这个几率形式带来了一些数值计算上的优点。
咱们知道,高斯混合模型能够当作高斯份量的简单线性叠加,目标是提供一类比单独的高斯分布更强大的几率模型(多峰分布几率分布)。更进一步探求本质,咱们可使用离散潜在变量来描述高斯混合模型,这会让咱们更加深入地认识混合高斯模型,也会让咱们了解指望最大化算法。
让咱们引入一个 K 为二值随机变量 z,这个变量采用了“1-of-K”表示方法,其中一个特定的元素等于1,其他全部的元素都等于0。
咱们看到的值知足几率分布的要求,即
,咱们根据边缘几率分布
和条件几率分布
定义联合几率分布
。
z 的边缘几率分布根据混合系数进行赋值,即:
,其中
以及
所以,给定 z 的一个特定的值(即选定一个特定的基模型),x 的条件几率分布是一个高斯分布:
联合几率分布为,从而 x 的边缘几率分布能够经过将联合几率分布对全部可能的 z 求和的方式获得,即:
对于每一个观测数据点,存在一个对应的潜在变量
这很是关键,由于这意味着潜在变量不在是一个未知的变量,咱们能够将其转化为对 x 的计算优化过程当中(例如求导)。
获得这个联合几率分布的好处体如今几个方面:
这么作的意义在于,咱们如今可以对联合几率分布操做。而不是对边缘几率分布
操做,这会产生极大的计算上的简化,后面咱们将要讨论的指望最大化(EM)算法,将会看到这点。
咱们能够用表示
,它的值可使用贝叶斯定理求出:
咱们将当作
=1的先验几率
将当作观测到 x 以后,对应的后验几率,也能够理解为份量 k 对于“解释”观测值 x 的“责任”(responsibility)
假设咱们有一个观测的数据集,咱们但愿使用混合高斯模型来对数据进行建模。咱们能够将这个数据集表示为一个
的矩阵
,其中第 n 行为
。相似地,对应的隐含变量会被表示一个
的矩阵
,其中第 n 行表示为
。
若是咱们假定数据点独立地从几率分布中抽取,那么咱们可使用下图所示的图模型来表示这个独立同分布数据集的高斯混合模型。
它对应的对数似然函数为:
最大化高斯混合模型的对数似然函数,比单一的高斯分布的情形更加复杂。困难的来源在于公式中,对 k 的求和出如今对数计算内部,从而对数函数再也不直接做用于高斯分布。若是咱们令对数似然函数的导数等于零,那么咱们不会获得一个解析解,这给求导计算带来很大的困难。
一种方法是使用基于梯度的优化方法。虽然梯度的方法是可行的,而且梯度方法在混合密度网络的计算中起到了重要做用。可是咱们这里讨论另外一种主流的算法,被称为EM算法。它具备普遍的适用性,同时也是变分推断的基础。
一种优雅而且强大的,用于寻找带有潜在变量的模型的最大似然解方法,被称为指望最大化算法(expectation-maximization algorithm),或者EM算法 。实际上,EM算法是能够推广到更通常化的变分推断框架中的,可是咱们在这小结不着急,咱们从高斯混合模型做为切入点,给出EM算法的一种非形式化的描述。
首先,让咱们写下似然函数的最大值必须知足的条件,令公式中
关于高斯份量的均值
的均值等于零,咱们有:
值得注意的是,后验几率(或者说是“责任”)很天然地出如今了等式右侧分母中。两侧同乘
(假设矩阵是非奇异的),整理,可得:
,其中
咱们能够将看做分配到聚类 k 的数据点的有效数量。仔细观察这个公式会发现,第 k 个高斯份量的均值
经过对数据集里全部的数据点求加权平均的方式获得,而这里所谓的权因子又是由后验几率
给出,而
表示份量 k 对生成
的责任(也能够理解为数据集分布的几率分布)。
若是咱们对关于
的导数为零,而后用一个相似的推理过程,使用单一高斯分别协方差矩阵的最大似然结果,咱们有:
这与一元高斯分布的对应的结果具备相同的函数形式,可是所不一样的是,每一个数据点都有一个本身的权值(不像K均值那样是硬划分),权值等于对应的后验几率,分母为与对应份量相关联的数据点的有效数量(分类集中的样本数量)。
最后,咱们关于混合系数最大化
,把限制条件考虑进去,即混合系数的累加和等于1。使用拉格朗日乘数法,最大化下面的量:
求导可得:
在右侧分母中,咱们再次看到了“责任”这一项。将两侧乘以
,对 k 求和,会发现
。使用这个结果消去
,整理可得:
。
一个很是质朴的表征含义:第 k 个份量的混合系数为那个份量对于解释数据点的“责任”的平均值。
值得注意的是,上式并无给出混合模型参数的一个解析解,由于“责任”在公式
中是以一种复杂的方式依赖这些参数。
然而,这些结果给出了一个简单的迭代方法来寻找问题的最大似然解。整个迭代过程是EM算法应用于高斯混合模型的一个实例。
1)咱们首先为均值、协方差
、混合系数
选择一个初始值,计算对数似然函数的初始值。
2)而后,咱们交替进行两个更新,被称为
2.1)E步骤(使用当前参数值计算责任):在E步骤中,咱们使用参数的当前计算公式给出的后验几率(也被称为责任)
2.2)M步骤(使用当前的责任从新估计参数):而后在M步骤中,咱们将E步骤计算出的几率用于最大化步骤,从新对模型参数(均值、协方差、混合系数)进行估值。,
,
。而后使用新的模型参数进入下一轮E步骤
3)计算对数似然函数::检查参数或者对数似然函数的收敛性,若是没有知足收敛的准则,则返回第2)步。
每次经过E步骤和接下来的M步骤对参数的更新确保了对数似然函数的增大,在实际应用中,当对数似然函数的变化量或者参数的变化量地域某个阈值时,咱们就认为算法收敛。
上图给出了将两个⾼斯分布组成的混合几率分布的EM算法应⽤于⽼忠实间歇喷泉数据集的情形。这⾥,咱们使⽤了两个⾼斯分布的混合(K=2)。
分布中⼼的初始值与图中的K均值算法使⽤了相同的初始值,精度矩阵被初始化为正⽐于单位矩阵。
图(a)⽤绿⾊标记出了数据点,以及初始的混合模型的配置,其中两个⾼斯份量的⼀个标准差位置的轮廓线分别⽤红⾊圆圈和蓝⾊圆圈标记。
图(b)给出了初始E步骤的结果,其中每一个数据点的颜⾊中,蓝⾊所占的⽐重等于由蓝⾊份量⽣成对应数据点的后验几率,红⾊所占的⽐重等于由红⾊份量⽣成对应数据点的后验几率。所以,对于属于两个聚类的后验几率都较⼤的数据点来讲,颜⾊看起来是紫⾊的。
图(c)给出了第⼀个M步骤以后的结果,其中蓝⾊⾼斯分布的均值被移⾄数据点的均值,同时根据属于蓝⾊类别的每一个数据点的几率进⾏加权。换句话说,它被移到了蓝⾊标记数据点的质⼼。相似地,蓝⾊⾼斯分布的协⽅差被设置为蓝⾊标记数据点的协⽅差。红⾊份量的情形与此相似。图(d),(e)和(f)分别给出了2次、5次、20次完整的EM循环以后的结果。在图(f)中,算法接近收敛。
注意:
1. 与K均值算法相比,EM算法在达到(近似)收敛以前,经历了更屡次的迭代,每一个迭代须要更多的计算量。所以,一般运行K均值算法找到高斯混合模型的一个合适的初始化值,输入EM,接下来使用EM算法进行微调节。 2. 协方差矩阵能够初始化为经过K均值算法找到的聚类的样本协方差。 3. 混合系数能够被设置为分配到对应类别中的数据点所占的比例。
咱们继续讨论EM算法的另⼀种观点,其中潜在变量起着重要的做。咱们⾸先使⽤⼀种抽象的⽅式讨论这种⽅法,而后咱们再次考虑⾼斯混合模型的例⼦,来具体说明这个模型。
EM算法的目标是找到具备潜在变量的模型的最大似然解。
咱们将全部观测数据的集合记做,其中第 n 行表示
,全部潜在变量的集合记做
,对应的行为
。全部模型参数的集合被记做
。
所以对数似然函数为:,该式一样适用于连续潜在变量的情形,只须要对
的求和替换为积分便可。
一个关键的现象是,对于潜在变量的求和位于对数的内部。即便联合几率分布属于指数族分布,可是因为这个求和式的存在,求和获得的结果边缘几率分布
一般也不是指数族分布。求和式的出现阻止了对数运算直接做用于联合几率分布,使得最大似然接的形式更加复杂。
如今假设对于中的每一个观测,咱们都有潜在变量
的对应值。咱们将
称为完整(completely)数据集,而且咱们称实际的观测数据集
是不完整的(incomplete)。
完整数据集的对数似然函数的形式为,而且咱们假定对这个完整数据的对数似然函数进行最大化是很容易的。然而遗憾的是,在实际应用中,咱们没有完整数据集
(事实上若是有完整数据集就不要建模预测了),只有不完整的数据
。咱们关于潜在变量
的取值的知识仅仅来源于后验几率分布
。
1)因为咱们不能使用完整数据的对数似然函数,所以咱们反过来考虑使用当前的参数值,在潜在变量的后验几率分布
下,使用这个后验几率分布计算完整数据对数似然函数对于通常的参数值
的指望。这个指望被记做
,这对应于EM算法中的E步骤:
2)在接下来的M步骤中,咱们最大化该式:来肯定修正后的参数估计
。若是当前对于参数的估计为
,那么一次连续的E步骤和M步骤会产生一个修正的估计
。
注意,在的定义中,对数操做直接做用于联合几率分布
,所以根据假设,对应的M步骤的最大化是能够计算的。
每一个EM循环都会增大不完整数据的对数似然函数(除非已经达到局部极大值),EM的迭代过程是由数据集自己的几率分布驱动的,若是数据集自己存在局部最优区域,EM算法就有可能在EM过程当中落入该区域。
咱们继续考虑将EM算法的潜在变量的观点应用于高斯混合模型例子。咱们知道,在高斯混合模型的求解中,咱们的目标是最大化对数似然函数:
(1)
它是使用观测数据集进行计算的,咱们看到这个计算比单一高斯分布的情形更加困难,由于对 k 的求和出如今对数运算内部。
如今考虑对完整数据进行最大化。根据公式
和公式
,似然函数的形式为:
,其中
表示
的第 k 个份量。取对数,咱们有:
(2)
(2)公式和(1)公式对比,咱们看到在 k 上的求和与对数运算的顺序交换了。对数运算如今直接做用于高斯分布上,而高斯分布自己是指数族分布的一个成员,这个方法产生了最大似然问题的一个简单得多的解。
所以咱们看到,完整数据的对数似然函数能够用一种简单的方法求出最大值的解析解。然而,在实际应用中,咱们并无潜在变量的值,所以,与以前讨论的同样,咱们考虑完整数据对数似然函数关于潜在变量后验几率分布的指望,形式为:
。
所以后验几率分布能够在 n 上进行分解,从而是独立的,指示值
的指望为:
它就是 k 份量对于数据点的“责任”,因而,完整数据的对数似然函数的指望值为:
,接下来可使用EM步骤进行迭代求解。在后面的讨论中,咱们会继续深刻讨论完整数据的对数似然函数的指望的做用。
高斯模型的EM算法和K均值算法,在本质上有很强的类似性。
1. K均值算法对数据点的聚类进行了“硬”分配,即每一个数据点只属于惟一的聚类。 2. 而EM算法基于后验几率分布,进行了一个“软”分配
实际上,咱们能够将K均值算法当作高斯混合模型的EM算法的一个特殊的极限状况。下面咱们来讨论这种状况:
考虑一个稍微特殊的高斯混合模型,其中混合份量的协方差矩阵为,
是一个被全部份量共享的方差参数,
是单位矩阵,从而:
。
咱们如今考虑K个这种形式的高斯分布组成的混合模型的EM算法,其中咱们将看做一个固定的常数,而不是一个须要从新评估的参数。
对一个特定的数据点,后验几率(“责任”)为:
。
若是咱们考虑极限状况(全部的数据点都有且只属于一个分类,不存在几率分布,则方差为0),那么咱们看到,在分母中,
最小的项将会慢慢地趋近于零,所以对于数据点
,只有项 j 的“责任”
趋近于1,其余的项的责任都趋近于0.
所以,在这种极限状况下,咱们获得对数据点聚类的一个硬分类,与K均值算法相同,从而,所以,每一个数据点都被分配为距离最近的均值的聚类。这样,EM重估计就简化为了K均值的结果。
最后,在极限的状况下,公式
给出的完整数据的对数似然函数变成了:
。
所以在极限的状况下,最大化完整对数似然函数的指望等价于最小化K均值算法的失真度量J。
咱们以前的讨论集中在由混合高斯模型描述的连续变量的几率分布上,为了更加泛化的讨论混合模型(混合模型不依赖具体的几率分布先验假设),咱们如今讨论由伯努利分布描述的离散二值变量的混合,这个模型也被称为潜在分布(latent class analysis)。这个模型不只具备实际应用的价值,仍是咱们讨论离散变量上的马尔科夫模型的基础。
考虑D个二值变量组成的集合,其中
,每一个变量都由一个参数为
的伯努利分布控制,即:
,其中,
,且
。咱们看到,在给定
的条件下,各个变量
是独立的。
所以,在独立同分布状况下,这个分布的均值和方差能够很容易求得:。
咱们先来尝试讨论这种分布的有限混合,即:,其中,
,且
。
这个混合分布的均值和方差为:,其中
。
因为协方差矩阵再也不是对角矩阵,所以混合分布能够描述变量之间的相关性,这与单一的伯努利分布不一样。
若是咱们有一个数据集,那么这个模型的对数似然函数为:
。
和在高斯混合模型中一开始的状况同样,咱们看到求和运算位于对数运算内部,从而最大似然解没有解析解。
为了解决这个问题,咱们须要引入混合伯努利分布的最大化似然函数的EM算法。
咱们首先引入一个潜在变量 z,它与 x 的每一个实例相关联。与高斯混合模型的情形相同,是一个二值 K 维变量,其中只有一个元素等于1,其他元素等于0。这样,给定潜在变量,咱们能够写出 x 的条件几率分布,形式为:
。
而潜在变量的先验几率分布与高斯混合模型的形式相同,即:。
若是咱们将和
相乘,而后对 z 求和,咱们一样获得该公式:
为了推导EM算法,咱们首先写出完整数据的对数似然函数,形式为:
,其中
。
接下来咱们取完整数据对数似然函数关于潜在变量后验几率分布的指望,得:
,其中
是给定数据点
的条件下,份量 k 的后验几率分布,或者“责任”。
在E步骤中,这些后验几率使用贝叶斯定理计算,形式为:
在上面关于潜在变量后验几率分布的指望公式中,咱们能够看到,若是咱们对 n 求和,“责任”只出如今两项中,这两项能够写成:
,其中
是与份量 k 的均值组成的集合等于数据的加权平均值,权系数为份量 k 对于数据点的“责任”。对于关于
的最大化,咱们须要引入一个拉格朗日乘数来知足限制条件
。采用与高斯混合模型中相似的步骤,咱们有:
,即份量 k 的混合系数等于数据集里那个份量的数据点所占的比例,
伯努利分布参数的共轭先验是Beta分布。咱们已经看到一个Beta先验分布等价于引入 x 的额外的有效观测。相似地,咱们能够引入伯努利混合模型的先验分布,而后使用EM算法最大化后验几率分布。
Relevant Link:
http://sklearn.apachecn.org/cn/stable/modules/mixture.html
指望最大化算法,或者EM算法,是寻找具备潜在变量的几率模型的最大似然解的一种通用的方法。
这里,咱们考虑一个几率模型,其中咱们将全部的观测变量联合起来记做,将全部的隐含变量记做
。联合几率分布
由一组参数控制,记做
。咱们的目标是最大化似然函数:
这里,咱们假设是离散的,可是当
是连续变量或者离散变量与连续变量的组合时,方法是彻底相同的,只须要把求和换成适当的积分便可。
咱们假设直接优化比较困难,可是最优化完整数据似然函数
就容易得多。接下来,咱们引入一个定义在潜在变量上的分布
。咱们观察到,对于任意的
,下面的分解成立:
注意,是几率分布
的一个泛函,而且是参数
的一个函数。
根据上式,咱们看到是
和后验几率分布
之间的Kullback-Leibler散度。咱们知道,Kullback-Leibler散度知足
,当且仅当
时等号成立。所以,根据公式
咱们得
。换句话说,
是
的一个下界,以下图:
EM算法是一个两阶段的迭代优化算法,用于寻找最大似然解。咱们可使用公式来定义EM算法,证实它确实最大化了对数似然函数。
假设参数向量的当前值为
在E步骤中,下界关于
被最大化,而
保持固定。最大化问题的解很容易看出来。咱们注意到
不依赖于
,所以
的最大值出如今Kullback-Leibler散度等于0的时候,换句话说,最大值出如今
与后验几率分布
相等的时候。此时,下界等于对数似然函数,以下图所示:
在接下来的M步骤中,分布保持固定,下界
关于
进行最大化,获得了某个新值
。这会使得下界
增大(除非已经达到了极大值),这会使得对应的对数似然喊增大。因为几率分布 q 由旧的参数值肯定,而且在M步骤中保持固定,由于它不会等于新的后验几率分布
,从而KL散度非零。因而,对数似然函数的增大量大于下界的增长量,以下图所示:
此时,下界的形式为:
其中,常数就是分布 q 的熵,所以与无关。从而在M步骤中,最大化的量是完整数据对数似然函数的指望,正如咱们在以前的混合高斯模型的情形中看到的同样。
EM算法的计算也能够被看做参数空间中的运算,以下图所示:
红色曲线表示(不完整数据)对数似然函数,它的最大值是咱们想要获得的。咱们首先选择某个初始的参数值,而后在第一个E步骤中,咱们计算潜在变量上的后验几率分布,获得
的一个更小的下界,它的值等于在
处的对数似然函数值,用蓝色曲线表示。注意,下界与对数似然函数在
处以切线的方式链接,所以两条曲线的梯度相同。这个界是一个凹函数,对于指数族分布的混合分布来讲,有惟一的最大值。
在M步骤中,下界被最大化,获得新的值,这个值给出了比
处更大的对数似然函数只。
接下来的E步骤构建了一个新的下界,它在处与对数似然函数切线链接,用绿色线白哦是。如此循环往复。