联系我们
- 地 址:北京市海淀区北四环西路9号 ,主 营:人脸识别,活体检测,身份证识别,银行卡识别,名片识别,车牌识别,OCR识别等及智能识别技术。
- 电 话:13146317170 廖经理
- 传 真:
- 邮 箱:398017534@qq.com
高斯混合模型GMM
高斯混合模型GMM
高斯混合模型GMM是一个十分根底并且应用很广的模型。关于它的透彻了解十分重要。网上的关于GMM的大多材料引见都是大段公式,而且符号表述不太分明,或者文笔十分僵硬。本文尝试用浅显的言语全面引见一下GMM,缺乏之处还望各位指正。
首先给出GMM的定义
这里援用《统计学习办法》上的定义,如下图:
这里写图片描绘
定义很好了解,高斯混合模型是一种混合模型,混合的根本散布是高斯散布而已。
第一个细节:为什么系数之和为0?
PRML上给出过一张图:
这里写图片描绘
这图显现了具有三个高斯重量的一个维度的GMM是如何由其高斯重量叠加而成。这张图曾经一度对我了解GMM形成了搅扰。由于假如是这样的话,那么这三个高斯重量的系数应该都是1,这样系数之和便为3,才会有这样直接叠加的效果。而这显然不契合GMM的定义。因而,这张图只是在方式上展示了GMM的生成原理而并不准确。
那么,为什么GMM的各个高斯重量的系数之和必需为1呢?
其实答案很简单,我们所谓的GMM的定义实质上是一个概率密度函数。而概率密度函数在其作用域内的积分之和必然为1。GMM整体的概率密度函数是由若干个高斯重量的概率密度函数线性叠加而成的,而每一个高斯重量的概率密度函数的积分必然也是1,所以,要想GMM整体的概率密度积分为1,就必需对每一个高斯重量赋予一个其值不大于1的权重,并且权重之和为1。
第二个细节:求解GMM参数为什么需求用EM算法
总所周知,求解GMM参数运用EM算法。但是为什么呢?这样是必需的吗?
首先,相似于其他的模型求解,我们先运用最大似然估量来尝试求解GMM的参数。如下:
这里写图片描绘
这里写图片描绘
能够看出目的函数是和的对数,很难展开,优化问题费事,难以对其停止求偏导处置。因而只能寻求其它办法。那就是EM算法。
第三个细节:求解GMM的EM算法隐变量的了解
运用EM算法必需明白隐变量。求解GMM的时分想象观测数据x是这样产生的:首选依赖GMM的某个高斯重量的系数概率(由于系数取值在0~1之间,因而能够看做是一个概率取值)选择到这个高斯重量,然后依据这个被选择的高斯重量生成观测数据。然后隐变量就是某个高斯重量能否被选中:选中就为1,否则为0。
依照这样的想象:隐变量是一个向量,并且这个向量中只要一个元素取值为1,其它的都是0。由于假定只要一个高斯重量被选中并产生观测数据。但是我们的GMM的一个观测数据在直观上应该是每个高斯重量都有产生,而不是由一个高斯重量单独生成,只是重要性不同(由系数控制)。那么,这样的隐变量假定合理吗?
答案是合理,只是了解起来比拟“费力”而已。
首先明白一点:GMM的观测数据是啥,GMM的函数结果又是啥。假如是一个一维的GMM,那么其观测数据就是恣意一个实数。而GMM这个概率密度函数在输入这个观测数据之后输出的是这个实数被GMM产生的概率而已。
接着,如今我们不晓得GMM详细的参数值,想要依据观测数据去求解其参数。而GMM的参数是由各个高斯重量的参数再加上权值系数组成的。那么我们就先假定,假如这个观测值只是由其中一个高斯重量产生,去求解其中一个高斯重量的参数。我们假定不同的观测值都有一个产生本人的独一归宿,就像K-means算法一样。然后在后面的迭代过程中,依据数据整体似然函数的优化过程,逐步找到一个最优的分配计划。但是,不同于K-means算法的是,我们最终给出的只是某一个观测是由某一个高斯重量独一生成的概率值,而不是肯定下来的属于某一类。每个高斯重量其实都能够产生这个观测数据只是输出不同而已,即产生观测数据的概率不同。最后,依据每个高斯重量产生观测数据的可能性不同,分离其权值汇总出整个GMM产生这个观测数据的概率值。
终极了解:运用EM算法求解GMM参数
1、定义隐变量
我们引入隐变量,它的取值只能是1或者0。
取值为1:第个观测变量来自第个高斯重量
取值为0:第个观测变量不是来自第个高斯重量
那么关于每一个观测数据都会对应于一个向质变量,那么有:
其中,为GMM高斯重量的个数,为第个高斯重量的权值。由于观测数据来自GMM的各个高斯重量互相独立,而刚好能够看做是观测数据来自第个高斯重量的概率,因而能够直接经过连乘得到整个隐变量的先验散布概率。
2、得到完整数据的似然函数
关于观测数据,当已知其是哪个高斯重量生成的之后,其服从的概率散布为:
由于观测数据从哪个高斯重量生成这个事情之间的互相独立的,因而能够写为:
这样我们就得到了已知的状况下单个观测数据的后验概率散布。分离之前得到的的先验散布,则我们能够写出单个完整观测数据的似然函数为:
最终得到一切观测数据的完整数据似然函数为:
取对数,得到对数似然函数为:
3、得到各个高斯重量的参数计算公式
首先,我们将上式中的依据单高斯的向量方式的概率密度函数的表达方式展开:
假定我们曾经晓得隐变量的取值,对上面得到的似然函数分别对和求偏导并且偏导结果为零,能够得到:
由于在上面两式的第二个求和符号是对求和,而在求和过程中只要以此取到1,其它都是0,因而上面两式能够简化为:
如今参数空间中剩下一个还没有求。这是一个约束满足问题,由于必需满足约束。我们运用拉格朗日乘子法分离似然函数和约束条件对求偏导,能够得到:
将上式的左右两边分别对求和,能够得到:
将代入,最终得到:
至此,我们在隐变量已知的状况下得到了GMM的三品种型参数的求解公式。
4、得到隐变量的估量公式
依据EM算法,如今我们需求经过当前参数的取值得到隐变量的估量公式也就是说隐变量的希冀的表达方式。即如何求解。
5、运用EM算法迭代停止参数求解
熟习EM算法的朋友应该曾经能够从上面的推导中找到EM算法的E步和M步。
GMM和K-means直观比照
最后我们比拟GMM和K-means两个算法的步骤。
GMM:
先计算一切数据对每个分模型的响应度
依据响应度计算每个分模型的参数
迭代
K-means:
先计算一切数据关于K个点的间隔,取间隔最近的点作为本人所属于的类
依据上一步的类别划分更新点的位置(点的位置就能够看做是模型参数)
迭代
能够看出GMM和K-means还是有很大的相同点的。GMM中数据对高斯重量的响应度就相当于K-means中的间隔计算,GMM中的依据响应度计算高斯重量参数就相当于K-means中计算分类点的位置。然后它们都经过不时迭代到达最优。不同的是:GMM模型给出的是每一个观测点由哪个高斯重量生成的概率,而K-means直接给出一个观测点属于哪一类。
首先给出GMM的定义
这里援用《统计学习办法》上的定义,如下图:
这里写图片描绘
定义很好了解,高斯混合模型是一种混合模型,混合的根本散布是高斯散布而已。
第一个细节:为什么系数之和为0?
PRML上给出过一张图:
这里写图片描绘
这图显现了具有三个高斯重量的一个维度的GMM是如何由其高斯重量叠加而成。这张图曾经一度对我了解GMM形成了搅扰。由于假如是这样的话,那么这三个高斯重量的系数应该都是1,这样系数之和便为3,才会有这样直接叠加的效果。而这显然不契合GMM的定义。因而,这张图只是在方式上展示了GMM的生成原理而并不准确。
那么,为什么GMM的各个高斯重量的系数之和必需为1呢?
其实答案很简单,我们所谓的GMM的定义实质上是一个概率密度函数。而概率密度函数在其作用域内的积分之和必然为1。GMM整体的概率密度函数是由若干个高斯重量的概率密度函数线性叠加而成的,而每一个高斯重量的概率密度函数的积分必然也是1,所以,要想GMM整体的概率密度积分为1,就必需对每一个高斯重量赋予一个其值不大于1的权重,并且权重之和为1。
第二个细节:求解GMM参数为什么需求用EM算法
总所周知,求解GMM参数运用EM算法。但是为什么呢?这样是必需的吗?
首先,相似于其他的模型求解,我们先运用最大似然估量来尝试求解GMM的参数。如下:
这里写图片描绘
这里写图片描绘
能够看出目的函数是和的对数,很难展开,优化问题费事,难以对其停止求偏导处置。因而只能寻求其它办法。那就是EM算法。
第三个细节:求解GMM的EM算法隐变量的了解
运用EM算法必需明白隐变量。求解GMM的时分想象观测数据x是这样产生的:首选依赖GMM的某个高斯重量的系数概率(由于系数取值在0~1之间,因而能够看做是一个概率取值)选择到这个高斯重量,然后依据这个被选择的高斯重量生成观测数据。然后隐变量就是某个高斯重量能否被选中:选中就为1,否则为0。
依照这样的想象:隐变量是一个向量,并且这个向量中只要一个元素取值为1,其它的都是0。由于假定只要一个高斯重量被选中并产生观测数据。但是我们的GMM的一个观测数据在直观上应该是每个高斯重量都有产生,而不是由一个高斯重量单独生成,只是重要性不同(由系数控制)。那么,这样的隐变量假定合理吗?
答案是合理,只是了解起来比拟“费力”而已。
首先明白一点:GMM的观测数据是啥,GMM的函数结果又是啥。假如是一个一维的GMM,那么其观测数据就是恣意一个实数。而GMM这个概率密度函数在输入这个观测数据之后输出的是这个实数被GMM产生的概率而已。
接着,如今我们不晓得GMM详细的参数值,想要依据观测数据去求解其参数。而GMM的参数是由各个高斯重量的参数再加上权值系数组成的。那么我们就先假定,假如这个观测值只是由其中一个高斯重量产生,去求解其中一个高斯重量的参数。我们假定不同的观测值都有一个产生本人的独一归宿,就像K-means算法一样。然后在后面的迭代过程中,依据数据整体似然函数的优化过程,逐步找到一个最优的分配计划。但是,不同于K-means算法的是,我们最终给出的只是某一个观测是由某一个高斯重量独一生成的概率值,而不是肯定下来的属于某一类。每个高斯重量其实都能够产生这个观测数据只是输出不同而已,即产生观测数据的概率不同。最后,依据每个高斯重量产生观测数据的可能性不同,分离其权值汇总出整个GMM产生这个观测数据的概率值。
终极了解:运用EM算法求解GMM参数
1、定义隐变量
我们引入隐变量,它的取值只能是1或者0。
取值为1:第个观测变量来自第个高斯重量
取值为0:第个观测变量不是来自第个高斯重量
那么关于每一个观测数据都会对应于一个向质变量,那么有:
其中,为GMM高斯重量的个数,为第个高斯重量的权值。由于观测数据来自GMM的各个高斯重量互相独立,而刚好能够看做是观测数据来自第个高斯重量的概率,因而能够直接经过连乘得到整个隐变量的先验散布概率。
2、得到完整数据的似然函数
关于观测数据,当已知其是哪个高斯重量生成的之后,其服从的概率散布为:
由于观测数据从哪个高斯重量生成这个事情之间的互相独立的,因而能够写为:
这样我们就得到了已知的状况下单个观测数据的后验概率散布。分离之前得到的的先验散布,则我们能够写出单个完整观测数据的似然函数为:
最终得到一切观测数据的完整数据似然函数为:
取对数,得到对数似然函数为:
3、得到各个高斯重量的参数计算公式
首先,我们将上式中的依据单高斯的向量方式的概率密度函数的表达方式展开:
假定我们曾经晓得隐变量的取值,对上面得到的似然函数分别对和求偏导并且偏导结果为零,能够得到:
由于在上面两式的第二个求和符号是对求和,而在求和过程中只要以此取到1,其它都是0,因而上面两式能够简化为:
如今参数空间中剩下一个还没有求。这是一个约束满足问题,由于必需满足约束。我们运用拉格朗日乘子法分离似然函数和约束条件对求偏导,能够得到:
将上式的左右两边分别对求和,能够得到:
将代入,最终得到:
至此,我们在隐变量已知的状况下得到了GMM的三品种型参数的求解公式。
4、得到隐变量的估量公式
依据EM算法,如今我们需求经过当前参数的取值得到隐变量的估量公式也就是说隐变量的希冀的表达方式。即如何求解。
5、运用EM算法迭代停止参数求解
熟习EM算法的朋友应该曾经能够从上面的推导中找到EM算法的E步和M步。
GMM和K-means直观比照
最后我们比拟GMM和K-means两个算法的步骤。
GMM:
先计算一切数据对每个分模型的响应度
依据响应度计算每个分模型的参数
迭代
K-means:
先计算一切数据关于K个点的间隔,取间隔最近的点作为本人所属于的类
依据上一步的类别划分更新点的位置(点的位置就能够看做是模型参数)
迭代
能够看出GMM和K-means还是有很大的相同点的。GMM中数据对高斯重量的响应度就相当于K-means中的间隔计算,GMM中的依据响应度计算高斯重量参数就相当于K-means中计算分类点的位置。然后它们都经过不时迭代到达最优。不同的是:GMM模型给出的是每一个观测点由哪个高斯重量生成的概率,而K-means直接给出一个观测点属于哪一类。
上一条:深度学习知识总结
下一条:人像比对算法,人脸活体检测辨认