申晨宇,刘增力
(昆明理工大学 信息工程与自动化学院,云南 昆明 650500)
盲源分离是20世纪末发展起来的一个新兴领域,是人工神经网络、统计信号处理以及信息理论相结合的产物,在很多领域已经得到了广泛应用。盲源分离是在不知道源信号的组成成分以及传输通道或只知道其少量先验知识(如非高斯性、统计独立性等)的情况下,仅从观测信号中恢复或分离感兴趣的源信号,即需要找到一个分离矩阵,从观测信号中提取出各个源信号。一个典型的例子就是“鸡尾酒会”问题[1],即在一个房间里听到的是混合在一起的嘈杂的声音,应如何把混合在一起的声音分离开的问题。当前,国内外研究者提出了各种各样的分离算法,且各有利弊。例如,基于独立分量分析的盲源分离算法[2-4],是盲源分离算法中非常经典有效的方法。它需要假设前提条件,即源信号满足非高斯分布且相互统计独立。这些算法存在一些弊端,一是无法让分离后的信号与混合前的信号一一对应,二是无法恢复混合前信号的真实幅度[5],但这些缺点对于最终分离的目的来说在可接受范围内。还有一些近年来新兴的算法,如稀疏成分分析[6]。它可以在独立分量分析方法失效的情况下,对观测信号进行分离。此外,还有非负矩阵分解[7-8]算法。它同样没有信源相互独立且符合非高斯分布的限制,只是增加了分解矩阵中元素非负的约束。上述这些方法大都以某种准则建立代价函数,然后对其进行迭代优化而得到分离矩阵。Stone J V提出了基于时域预测的盲源分离算法[9],用两个误差的比值构建目标函数,即信号的长预测分量作分子,信号的短预测分量作分母,然后对目标函数进行优化,即广义特征值求解[10]。这类算法具有较低的复杂度,于是之后Cheung Y M等人在此基础上又提出了全局最优化盲源分离算法。在此基础上,张小兵等人又提出了基于最大信噪比的盲源分离算法[11],但算法存在一定的缺陷:一是信噪比越大,分离效果越好,在较低信噪比下,分离效果变差甚至失效;二是对源信号的估计问题,即用估计信号的滑动平均来代替源信号,一定程度上会导致误差或算法在某种条件下失效。针对这些不足,后面的研究者提出了改进的最大信噪比的盲源分离算法,对源信号的估计采用干扰重构算法[12]。还有直接采用估计信号,并对信号的参数用最小均方误差进行估计[13]。本文提出用小波包滤波后的观测信号代替估计信号的滑动平均,然后再代入信噪比函数进行计算、特征值分解等,得到需要的分离矩阵。与观测信号相乘得到分离信号后,再经过平滑滤波得到降噪后的源信号。本算法相比于原算法,不仅提高了分离效果,而且对源信号进行了降噪。
假设有N个统计独立的源信号经过线性瞬时混合后被M个传感器接受,则每个观测信号是这N个信号的一个线性组合[14],即:
式 中,aji是 混 合 参 数(i∈ {1,2,…,N},j∈ {1,2,…,N});si(t)是源信号(i∈ {1,2,…,N);xj(t)是观测信号(j∈{1,2,…,N})。式(1)也可用矢量形式表示为:
式中,A∈Rm×n为混合矩阵;S(t)∈Rn属为信源向量,它的元素对应于变换矩阵的基础系数。
上述情况只是假设的理想情况,实际应用中,周围环境以及传感器本身都会产生噪声附着到信号上,因而需要考虑噪声。此时,式(2)中的混合系统变为:
式中,n(t)=[n1(t),n2(t),…,nM(t)]T是噪声向量。
假设观测信号为:
源信号为:
混合矩阵为A,即混合模型为:
目标是找到一个分离矩阵W,使得X与W的乘积Y无限接近于S,即:
可知,Q必须要尽量接近单位矩阵,也就是说W为H的逆矩阵,即:
盲源分离算法一般都是基于某种准则(如最大非高斯性、非线性相关性等)建立目标函数[15],然后对其进行优化得到需要的结果。该算法是基于最大信噪比准则建立目标函数,是把源信号s和估计信号y的误差作为噪声信号(e=s-y),然后建立目标函数,即:
实际生活中,源信号一般是带噪声的,所以必须考虑噪声。这里用的是估计信号的滑动平均来代替源信号,于是式(9)变为:
其中:
由于噪声的特性未知,所以p可随之选取(p可为小于100的整数)。由于实测信号都是带噪声的,所以为了方便,用小波去噪后的信号Y代替估计信号的滑动平均,于是有:
为了得到Y,需要对源信号s进行降噪处理。直接对源信号进行降噪处理是为了提高信噪比,从而提高算法的分离效果。小波消噪的出发点是小波系数具有以下两个特征:一是对空间分布不均匀的函数,只有少数点上的小波系数较大,而大部分点上的小波系数都很小;二是白噪声对所有点上的小波系数的影响是一样的。利用小波包对信号消噪的关键是如何选取阈值和阈值量化问题。
对观测信号进行小波消噪可分为三步。
步骤1:对观测信号进行小波包[16]分解。
选择一个正交小波进行分解并确定分解的层数。算法中采用dB3小波进行3层分解。在高频段,小波的频率分辨率较差;在低频段,小波的时间分辨率较差。为了克服这一缺点,这里采用小波包分解,提高了信号的时频分辨率,是一种更加精细的信号分析方法。算法由{dlj+1,n}求{dlj,2n}和{dlj,2n+1},即:
步骤2:小波包分解系数的阈值选取[17]。
具体地,即选择一个恰当的阈值来对每一个小波包系数进行量化处理。它的原理就是抑制小波变换细节分量中较小的系数,并置为0。本算法采用自适应阈值,即:
或:
式中,σn为噪声标准方差,N为信号的长度。
步骤3:对观测信号进行小波包重构[18]
以最底层的小波包分解系数和经过处理的系数为准进行小波包重构,即由{}和{求{}:
式中,h表示分析滤波器,与尺度函数有关,g表示重构滤波器;表示信号的模糊分量;表示信号的细节分量。
经过小波包的分解与重构得到估计信号Y后,以信噪比最大化准则建立目标函数:
其中:C=X·XT,=(X-x)·(X-x)T为相关矩阵;V=w·C·wT;U=w··wT。
(1)为了评价本改进算法的分离效果,用源信号与分离信号的相关系数作为评价指标[19],即:
式中yi=ksi,k为常数时,ζij=1,表明第i个分离输出信号和第j个源信号完全相同,分离后的信号和源信号只是在幅度上不一致,但是分离完成后的ζij的值只能接近于1,因此在实际生活中存在不可避免的噪声。若yi和si相互统计独立,则ζij等于0,说明分离并未完成,即存在一个相似矩阵,它的每行和每列有且仅有一个元素是接近于1,其余的元素都无限接近0。若是这个矩阵符合这个条件,则认为分离效果比较理想。
(2)另一个评价标准是性能指数[20]:
式中,gij为全局矩阵G的元素;maxj|gij|表示G的第i行元素的绝对值中的最大值;maxj|gji|表示第i列元素绝对值中的最大值。当信号精确分离时,即分离出的估计信号有y(t)与源信号是s(t)波形完全相同时,PI=0。实际中,精确分离不可能做到,所以认为当PI接近10-2时,说明该算法分离性能已经相当好。
仿真实验中,混合前选取的信号源为两路频率为22 050 Hz、时长1.3 s的音频信号,每路源信号的采样点有28 655个,第一路音频信号是动物的叫声,第二路音频信号是人的一段语音,然后进行混合得到实验分析所需要的观测信号。随机产生三个混合矩阵分别为对源信号进行混合,然后验证两种算法。经过计算机仿真分别得到原算法和本文改进的算法的三组仿真实验结果,如图1~图7所示。其中,图1为源信号,图2、图3为第一组实验分离结果,图4、图5为第二组实验分离结果,图6、图7为第三组实验分离结果。
图1 源信号
图2 原算法分离结果(第一组)
图3 本文改进算法分离结果(第一组)
图4 原算法分离结果(第二组)
图5 本文改进算法分离结果(第二组)
图6 原算法分离结果(第三组)
图7 本文改进算法分离结果(第三组)
表1中,SNRς表示原算法分离结果与源信号的相关系数,PSNRς表示改进算法分离结果与源信号的相关系数。数据对比可以看出,改进后的算法要好于原来的算法,验证了改进算法的正确性。需要说明的是,虽然改进算法较原来的算法性能提升不大,但是上述数据均是在无噪声情况下获得的源信号与分离信号的相关系数。
表1 相关系数对比表格
在实际生活中,噪声不可避免。所以,可以在相同噪声条件下验证两种算法的分离效果。为了方便,采用上述实验的源信号,并随机产生一组混合矩阵进行混合,然后给混合信号加上噪声进行仿真实验,信噪比25 dB,实验结果如图8~图10所示。
图8 加噪混合信号
图9 原算法分离结果
图10 本文改进算法分离结果
因为相关系数是研究变量之间线性相关程度的量,所以加噪声后对于两种算法的评价,仅凭相关系数已经不能说明算法分离性能的好坏。为了评价原算法与改进算法在相同噪声条件下的性能,用均方差来表示分离结果与各个源信号之间的偏离程度,即均方差值越小,表示分离信号与源信号的偏离程度越小;反之,表示分离信号与源信号的偏离程度越大。
表2中σ表示均方差值,s1和s2表示实验中所用的两个源信号,ys1与ys2是分离信号。σSNR表示原来的算法分离结果与源信号的均方差值,σPSNR表示本文改进的算法分离结果与源信号的均方差值。由数据对比可以发现,改进后的算法在同样的噪声环境中,分离信号与各个源信号的均方差值要小于原算法的均方差值,说明改进算法仿真的分离信号与源信号更加接近,即改进算法的分离效果要好于原有的算法。
表2 均方差值对比
4 结 语对含噪观测信号分离的不彻底在于噪声的干扰,会导致信号分离效果变差。所以,本文直接用小波去噪后的信号代替原算法估计信号的滑动平均。仿真结果证明,改进算法具有有效性和正确性,
相对原有算法提高了分离效果。虽然本文对原有算法进行了改进,但是还有一些不足需要改进,如分离过程中源信号的个数发生变化时该如何应对,分离后怎么恢复源信号的真实幅度,以及如何把分离的信号和各个源信号一一对应等,这些将是下一步的研究方向。