【机器学习算法】11、高斯混合模型算法+语音识别项目实战

技术

简介

高斯混合模型(Gaussian Mixture Model, GMM) 是一种应用广泛的聚类算法。该方法通过对多个高斯模型做线性组合,对样本数据的概率密度分布进行估计,以达到聚类的目的。

高斯混合模型的**主要思想** 是使用高斯分布作为参数模型,并使用期望最大化(EM)算法进行参数估计。其中,每个高斯分布代表一个类。我们将样本数据分别在几个高斯分布上投影, 就得到数据在各个类别上的概率值最大的类作为估计结果。








从中心极限定理的角度来看,把混合模型假设为高斯模型是较为合理的。当然,也可以根据实际数据假设为任何分布类型的混合模型,不过假设为高斯模型较容易计算和推导。另外,理论上,我们也可以通过增加模型的个数,使高斯混合模型近似任何类型的概率分布。

高斯混合模型的应用领域

(1) 数据集分类;

(2) 图像分割及特征提取,如医学图像中将直方图的多峰特征看作多个高斯分布的叠加,以解决图像的分割问题;

(3) 语音分割及特征提取,如从噪声中提取某个人的声音、 从音乐中提取背景音乐等;

(4) 视频分析及特征提取,如智能监控系统中对运动目标检测的检测提取。

高斯混合模型算法流程

picture.image

高斯混合模型算法具体步骤

(1)构建高斯混合模型;

首先,需要对高斯混合模型的形式进行改写,以便于使用 EM 算法估计模型参数。高斯混合模型的原始形式如下:

picture.image

其中,K 表示高斯分布模型的个数,K 个模型就对应 K 个聚类。πk为第 k 个模型的权重,也可以看成第 k 类被选中的概率, 引入一个新的 K 维随机变量 z,zk只能取 0 或 1 两个值。zk=1 表示第 k 类被选中的情况,即 p(zk=1)=πk;zk=0 表示第 k 类未被选中的情况。zk 满足以下两个条件:

picture.image

假设 zk 之间是独立同分布的,可以写出 z 的联合概率分布形式:

picture.image

每一类中的数据都服从高斯分布, 用条件概率的形式表示如下:

picture.image

进而可以写出如下的形式:

picture.image

根据条件概率公式, 可以求出 p(x)的形式:

picture.image

式(6)为改进后的高斯混合模型,可以看出该式与原始模型有一样的形式。式(6)中引入了新的变量 z,但 zk=0 的项为 1,省略。变量 z 通常称为隐变量。“隐变量” 的意思是:随机选择一个数据点,但是不知道该数据点属于哪一类,数据点的归属观察不到,因此引入隐变量 z 来描述这一现象。








在贝叶斯的思想下,能够求得后验概率 p(z|x):

picture.image

(2)EM 算法估计模型参数:

假设样本数据X={x1,x2,...,xN},高斯混合模型有3个参数需要估计,分别是πk、μk 和Σk。为了估计折3个参数,需要分别求解出这3个参数的最大似然函数。

①初始化模型数目K,对每个模型k设置πk、μk和Ck的初始值。

方案1: 将协方差矩阵Ck设置为单位矩阵,每个模型的权重πk=1/K,均值μk设为随机数;

方案2: 用K-Means聚类算法对样本进行聚类,得到K值,然后利用各类的均值作为μk,并计算协方差矩阵Σk,πk 取各类样本占样本总数的比例。

②估计步骤(E-Step),计算后验概率γ (znk):

根据当前的πk、μk 和Σk,计算后验概率γ(znk)

picture.image

③最大化步骤(M-Step), 更新参数:

根据E-Step中计算的γ(znk)再计算新的πk、μk 和Σk

picture.image

N表示样本数量的量,γ(znk)表示数据n属于聚类k的后验概率。Nk表示属于第k个聚类的数据的量。μknew表示第k类数据的加权平均,每个样本数据的权值式γ(znk),跟第 k 个聚类有关。

④收敛条件

计算模型的对数似然函数:

picture.image

检查参数是否收敛或对数似然函数是否收敛,收敛则推出迭代,否则返回第②步。

算法的改进与优化

因提出时间较早,随着其他技术的不断更新和完善,高斯混合模型的诸多不足之处也逐渐显露,因此许多高斯混合模型的改进算法也应运而生。高斯混合模型是用高斯概率密度函数精确地量化事物,它是一个将事物分解为若干基于高斯概率密度函数形式的模型。在这个过程中,容易出现K值固定导致估计参数不具有最优性的问题。针对以上算法的不足之处,算法的改进主要为自适应调整K的值。








高斯混合模型保持固定不变的高斯混合模型的个数K,会造成系统运算资源的浪费。一种改进方法式利用最大似然估计提出高斯混合模型个数的选择方法,引入了负的先验概率,当权值小于阈值时,减少高斯混合模型的个数。另一种改进方法是消除混合分量,在此判断 K 的最优值,从而使高斯混合模型对数据集进行最佳拟合。如果两个混合分量有相同的参数,在混合分量中采用竞争原则,将不必要的分量消除。

SKLearn实践(部分)

GMM函数

picture.image

picture.image

picture.image

主函数

picture.image

picture.image

执行结果:

picture.image

picture.image

汉语语音识别项目实践

项目目录

picture.image

picture.image

picture.image

picture.image

picture.image

注册语音:

python speaker-recognition.py -t enroll -i "./data_zh_1/*/" -m model.out

picture.image

语音识别结果:100%

python speaker-recognition.py -t predict -i "./data_zh_test_1/*/" -m model.out

picture.image

公众号回复【高斯混合模型算法 】即可获取该文章的PDF文件和SKLearn的GMM实践代码和语音识别项目实践代码

推荐阅读:

【机器学习】Python标准库

【机器学习】Numpy常用函数集锦

【机器学习】Pandas函数总结

【机器学习】Matplotlib数据可视化

【机器学习】Scipy模块函数

【机器学习算法】1、线性回归——深层理解

【机器学习算法】2、逻辑回归——从来源说起

【机器学习算法】3、K-近邻算法

【机器学习算法】4、降维算法之PCA(深入理解与实践)

【机器学习算法】5、支持向量机算法

【机器学习算法】6、K-Means流程结束要不要多问几个为什么呢?

【机器学习算法】7、聚类算法之Mean-Shift

【机器学习算法】8、聚类算法之DBSCAN

【机器学习算法】9、EM算法与K-Means算法的收敛性证明

【机器学习算法】10、朴素贝叶斯算法+中文分词项目实战

常见概率分布知多少——13个常用概率分布的介绍

参考:

《Python大战机器学习》——数据科学家的第一个小目标

《Python机器学习算法》

《Python机器学习》

声明:转载请说明出处

下方为小生公众号,还望包容接纳和关注,非常期待与您的美好相遇,让我们以梦为马,砥砺前行。

希望技术与灵魂可以一路同行

长按识别二维码关注一下

更多精彩内容可回复关键词

每篇文章的主题即可

picture.image

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
IDC 大模型应用落地白皮书
大模型技术已深度融入业务实践,各企业期望其释放更大商业价值。 但大模型落地之路面临许多挑战和顾虑。 如何精准对接业务需求与发展蓝图,制定切实可行的大模型落地策略? IDC发布首个大模型应用策略与行动指南 一为您揭晓一
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论