欢迎来到天天文库
浏览记录
ID:51468587
大小:290.19 KB
页数:5页
时间:2020-03-25
《高斯混合模型盲信号分离方法的CUDA实现.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、电信息技术高斯混合模型盲信号分离方法的CUDA实现苏洁洪李宇(广东药学院医药信息工程学院)摘要:对一组线性瞬时混合信号,采用高斯混合模型拟合各个独立源的概率密度分布进行分离,其复杂度随信号源数量、高斯混合模型阶数的增加急剧上升。提出用统一计算设备架构(computeunifieddevicearchitecture,CUDA)对该分离方法进行设计,实现该方法的并行加速处理。实验结果表明,此加速方案可以有效降低该盲分离方法的时间复杂度。关键词:盲分离;高斯混合模型;统一计算设备架构于用GMM表示源信号与观察信号的统计分布,0引言GMM的求解EM算法是
2、个迭代运算,多个GMM的信号盲分离技术在工程界有广泛的应用,如语音求解的运算量对于一般PC的CPU而言耗时过长。混合信号分离、孕妇与胎儿心电信号的分离以及通信目前,CUDA技术受到学术界的重视,可应用于中多用户检测等。一般而言,盲分离按混合条件可以智能算法,如神经网络的实现[引。本文将GMM参数分为卷积混合与瞬时混合两种情况。求解计算在NVIDIA的CUDA平台并行设计,由于对于卷积混合信号,如语音信号的反响听觉混符合CUDA计算的显卡具有约百个并行计算单元,合,有的采用时域分离方法_I之】。更常用的处理方法是得以大大缩减运算时间。通过频域变换,将
3、卷积化为乘积再分离。这样可以采l基于GMM的盲分离]用瞬时混合来分离信号[3],但是频域变换后再分离会产生排列问题。瞬时盲分离方法是卷积频域盲分离方瞬时盲分离问题可以表示为:法的一部分,对其进行工程研究更具有普遍作用。xt·,(1)已有的瞬时盲分离方法一般对源的统计分布有其中,任意向量,=[1.fSK】代表着个在t时刻⋯t,严格的假设要求,如基于累积量方法,在求解过程的独立源信号,用一个LXK(≥)的未知混合矩中对一些参数的选值仅凭经验J,这些局限不利于工阵混合得到观察向量xt=【x1⋯xL.J。盲分离可程应用。近年来,学者对高斯混合模型(Gaus
4、sian以描述为通过估计K~L的分离矩阵(的逆矩阵)mixturemodel,GMM)应用于盲分离进行了研究L6J,来恢复源信号{)户1。这里假设源信号与观察信利用期望最大(expectationmaximization,EM)算法号的个数相等。设t时刻源信号St的联合概率密度估计源分布参数与混合矩阵,但源分布的阶数难以选(probabilitydensityfunction,PDF)为:择,对初始化依赖比较大,实现非常复杂。fs(S,;)=∑COmN(S;Pro,Cm)(2)最近,提出了一种基于GMM描述源分布的BSSm=1方法[。该方法分为两步
5、:首先通过EM算法估计观其中,m表示为均值;表示为方差;表示权察信号的分布参数,获得分离矩阵的对数似然函数的重;为高斯阶数;Ⅳ为数据点数。在t时刻观察信紧下界;然后通过最大化该紧下界求得分离矩阵。该号的联合PDF为:方法不需要初始化,复杂度相对较低,但同样用到;)=∑COmN(xt;rl,Rm)(3)EM算法求GMM分布参数,仍有较大的运算量。由术基金项目:广东省级大学生创新训练项目(1057312043);2013年第34卷第1期自动化与信息工程21广东药学院大学生创新实验项目(85)。其中,ITm-.4/.1m;RA。GMM盲分离方法线程网格的
6、形式执行。分为两步:1)通过GMM的EM算法估计x,的分布EM算法有2部分:E步建立数据模型并计算数^)据点的似然值;M步计算GMM的3类参数。EM算参数0ML;21通过联合对角化公式(4)得到分离矩法在迭代的似然值之差小于某个给定的常数时结束阵。)1M计算。图2是EM算法的CUDA核函数部分代码,Q,)∑m(4)下面结合代码描述EM算法的并行设计。m=l[1]一globalvoidEstep_kernel(float_resp_,float一frac一,[loglDIAG(BRmB)l_loglBRmB1]fl0at*data。float*mea
7、ns,float*sig,flOat*lndets,2CUDA加速实现constunsignedinthumclusts,constunsignedintnumdims,2.1CUDA简介_constunsignedintnumdata)f支持CUDA的GPU可以并行处理大量线程,如[2]一shared_floatloglike[BLOCK_SIZE];GT240显卡可以并行处理96个线程。如图1所示,【3】_resp_[rb+n】=-0.5f*(sum+lndet_k)+logffrac_k);线程在CUDA中以线程网格的形式被分割为多个大//各
8、阶T点的高斯函数[4】_resp_[rb+(knum_data)+n]=小相等的线程块,一块里面有许多线程,块与块之间ex
此文档下载收益归作者所有