基于FastICA的盲源分离摘要:近年来,ICA(IndependentComponentAnalysis,独立成分分析)已成为处理BSS(BlindSourceSeparation,盲源分离)问题的主要手段,同时也受到人们越来越多的关注,为此讨论ICA的原理及其优越性。首先介绍ICA,然后引入FastICA算法的推导过程,最后通过MATLAB仿真将其与梯度算法、PCA(PrincipalComponentAnalysis,主成分分析)算法所得的仿真结果进行对比分析。通过算法验证,经FastICA处理得到的分离信号与源信号相关系数的绝对值不小于0.99,与其他两种算法比较可以明显地得到FastICA是一种更为有效的盲源分离方法。关键词:独立成分分析;盲源分离;主成分分析;梯度算法 中图分类号:TP301.6文献标识码:A文章编号:1673-629X(2011)12-0093-04BlindSourceSeparationBasedonFastICAAlgorithmInformationEngineering,NavalAeronauticalEngineeringInstitute,Yantai264001,China)Abstract:ICAhasbeenaprimarymethodsolvingBSSinrecentyears,andarousedmoreandmoreconcern,sodiscusstheprincipleandsuperiority.Inthispaper,introduceICAandFastICAalgorithmfirstly,thenanalyzesimulationresultbyFastICA,gradientalgorithmandPCA.Throughverification,absolutevalueofcorrelationcoefficientbetweenseparationsignalsandsourcesignalsisnotlessthan0.99.Comparedwithotheralgorithms,concludeFastICAisamoreeffectivealgorithm.Keywords:independentcomponentanalysis;blindsourceseparation;principalcomponentanalysis;gradientalgorithm0引言 ICA是盲源分离的一个重要工具,其最著名的应用就是“鸡尾酒会”问题。ICA[1~4]理论的发展可以追溯到20世纪90年代中期,法国学者C.Jutten和J.Herault等人首次提出了ICA的概念。然而,当时正是神经网络研究的高潮期,ICA理论的研究只是在小范围内进行,并未受到广泛重视。直到90年代中期,ICA的理论和算法研究才真正得以发展,并受到国际信号处理界的广泛关注,P.Comon于1994年第一个将独立成分分析方法应用于盲源分离。之后,ICA就处于蓬勃发展中。文中引入FastICA算法[5~9],研究其原理及推导过程。通过MATLAB仿真,将FastICA与梯度算法、PCA两种算法得到的仿真结果进行分析。通过分析,FastICA是一种比梯度算法[10]和PCA算法[11,12]更为有效的算法。收稿日期:2011-04-26;修回日期:2011-07-28 基金项目:国家自然科学基金(61032001,60972159,61002006) 作者简介:王建雄(1987-),男,山西临汾人,硕士研究生,主要研究领域为盲信号处理;张立民,博士,教授,主要研究领域为信号与信息处理。1独立成分分析 基本ICA模型是一个生成模型,它描述所观测的数据是如何由一个混合过程所产生。假设有n个统计独立的随机变量s1,s2,...,sn,其线性组合生成n个随机变量x1,x2,...,xn,即xi=ai1s1+ai2s2+...+ainsni=1,2,...,n (1)式中aij(i,j=1,2,...,n)是实系数。令x=[x1,x2,...,xn]T,s=[s1,s2,...,sn]T和A是元素为aij的矩阵,式(1)用向量-矩阵方式表示为: x=As(2)为了确保基本ICA模型是可解的,必须作出如下假设和约束[13]: (1)独立成分是统计独立的; (2)独立成分具有非高斯分布; (3)未知混合矩阵是方阵,即独立成分数等于观测混合信号数。若独立分量数小于观测信号数时,可对观测信号进行白化,从而降低数据维数。当满足以上三个假设条件后,可以考虑对上述混合矩阵求逆,而表示成一种线性求和的形式:s=A-1x(3)因此,为了估计其中一个独立成分,考虑对xi进行某种线性组合。用y=bTx=∑bixi表示该组合,其中b为待确定的向量。则由式(2)可得:y=bTx=bTAs=qTs=∑qsiii22.1FastICA算法中心化和白化(4)进行ICA之前,需要对信号进行中心化和白化。中心化就是观测矢量x减去它的均值,变成零均值矢量。白化的含义是将观测变量x进行线性变换Q,得到v=Qx,其中v的各分量vi互不相关,且具有单位方差(即E{vvT}=I)。1v=Qx=E-2UTx(5)式中:E=diag(d1,d2,...,dn),是相关阵Rx=E{xxT}的n个最大特征值组成的对角阵;U∈Cm×n,是n个相应的特征矢量组成的矩阵。变换之后,v和s之间的关系为:v=Qx=QAs=Bs。因为独立分量si有单位方差,E{vvT}=BE{ssT}BT=BBT=I,B为正交阵。因此一旦B求出后,就可以采用FastICA算法去实现盲源分离。由于两个独立分量之和分布的高斯型比原始变量更强,因此y=qTs应该比任何一个si的高斯性更强,只有当y恰好是si中的一个时y的高斯性最弱。然而,实际情况中我们并不知道q的值,但根据式(4),可以让b变化并观察bTx的分布变化情况。也就是说,通过极大化bTx的非高斯性,就可以得到其中一个独立成分。2.2非高斯性判决准则 为了在ICA估计中使用非高斯性,必须对随机变量的非高斯性定义一个定量化的指标。而最经典的非高斯性度量是有关随机变量的四阶累积量,即峭度。y的峭度kurt(y)定义为:kurt(y)=E{y4}-3(E{y2})2(6)这里进一步假定y已被标准化过,其方差为1。因此式(6)被简化表示为:kurt(y)=E{y4}-3(7)对高斯分布,四阶矩等于3(E{y2})2,高斯随机变量的峭度为零。所以,利用峭度度量非高斯性,通过变换使峭度最大化就是最简单的ICA估计方法。尽管用峭度对非高斯性进行度量简单方便,然而它对野值却极其敏感。这里引入非高斯性的另一个度量负熵。随机变量y的负熵定义为:J(y)=H(ygauss)-H(y)(8)然而使用负熵所遇到的问题使计算非常困难,因此对它取近似:J(y)≈k1(E(G1(y)))2+k2(E(G2(y)))2-E(G2(v))2(9)式中G1和G2是非二次函数,k和k是正常数,v12是零均值单位方差的高斯变量。如果仅使用一个非二次函数G,相应的近似变为:J(y)∝[E{G(y)}-E{G(v)}]2(10)其中G为任意的非二次函数。特别地,当G(y)=y4,就会得到基于峭度的近似式。这样得到了能在峭度和负熵两个经典的非高斯性度量间取得很好折中的负熵近似估计,其概念简单、计算量小,并且具有良好的统计特性。 2.3算法推导首先引入一种定点迭代方法: w=E{vg(wTv)}(11)其中v为式(5)得到的白化数据,g为非二次函数G的导数,一般选取g:g1(y)=tanh(a1y)g2(y)=yexp(-y2/2)g3(y)=y3(12)(13)(14)式(12)中常数a取在1≤a≤2范围内,通常取111。 将式(11)两边加上αw,得 (1+α)w=E{vg(wTv)}+αw(15)其中系数α可通过近似牛顿法来寻找。按照ku-hn-Tucker条件,在约束E{(wTv)2}=‖w‖2=1下,E{G(wTv)}的最优值在点E{yg(wTv)}+βw=0(16)处,式中β是常数。将式(16)左边项记作F其雅可比矩阵为:J{F(w)}=E{vvTg'(wTv)}+βI(17)因为对数据已做过白化处理,式(17)第一项近似为:E{vvTg'(wTv)}≈E(vvT)E(g'(wTv))=E{g'(wTv)}I(18)数g因此,得到了近似的牛顿迭代算法:w←w-[E{zg(wTv)}+βw]/[E{g'(wTv)}+β](19)式(19)两边同时乘以β+E{g'(wTv)},简化为:w←E{vg(wTv)}-E{g'(wTv)}w(20)式(20)就是FastICA的基本公式。 至此,将FastICA算法过程综合如下: (1)对数据进行中心化使其均值为0;(2)白化数据,得到v; (3)选择一个具有单位范数的初始化向量w;(4)更新w←E{vg(wTv)}-E{g'(wTv)}w,函的定义如式(12)至式(14);(5)标准化w,w←w/‖w‖;(6)如尚未收敛返回到步骤(4)。3仿真结果与分析为了验证上面提出算法的有效性,选取下面5路典型的信号进行分离实验: (1)符号信号:sign(cos(2π*155t/fs)) (2)高频正弦信号:sin(2π*800t/fs) (3)低频正弦信号:sin(2π*90t/fs) (4)幅度调制信号:sin(2π*9t/fs)sin(2π*300t/fs) (5)随机噪声:1-2*rand(1,t)这里选取采样频率为10kHz,并选取4000个数据点。图1~图5为这五种信号分别通过FastICA、梯度算法、PCA三种算法分离信号的仿真结果。由仿真结果及表1可知,FastICA算法与梯度算法、PCA算法相比,更加有效,所得的分离信号与源信号的相关系数不小于0.99。FastICA不仅比梯度算法、PCA算法更有效,而且图1源信号图2混和信号图3FastICA分离信号图4梯度算法分离信号图5PCA分离信号还具有很多优点:(1)FastICA是按立方收敛的,而梯度算法仅是按线性收敛的,因此,FastICA收敛速度更快;(2)FastICA不需要选择步长参数,同时也不需要估计源信号的概率密度函数,因此,算法更加简单、易用;(3)FastICA在算法实现时仅需要设置合适的非线性函数g即可,更易实现;(4)FastICA在估计源信号时是依次得到独立成分的,因此在遇到只需分离部分源信号的问题时,可以根据需求选择性地分离信号,大大减少计算量。表1源信号S1不同算法分离后所得信号与源信号之间的相关系数源信号S1不同算法分离后所得信号与源信号之间的相关系数源信号S1S2S3S4S5ICAY2Y3Y4Y1Y5 ρ1-0.99840.99580.99890.9906-0.9997梯度算法Y3Y2Y4Y5Y1 ρ2-0.97050.98490.95740.9865-0.9684PCAY1Y3Y2Y5Y4ρ30.8219-0.7024-0.72710.83150.78594结束语文中就瞬时混合的线性模型展开讨论,采用FastI-CA算法对观测信号进行盲分离,并将仿真结果与通过梯度算法、PCA算法仿真的结果进行比较。从仿真结果看,FastICA是一种比梯度算法、PCA算法更加有效的算法。然而,FastICA算法对于瞬时混合的线性模型很实用,但对于非线性模型却并不适用,所以之后的研究工作将主要集中在有关非线性模型的问题上。参考文献:-nalysis[M].SanDiego:AWiley-IntersciencePublication,2001.2]BoscoloR.IndependentComponentAnalysisBasedonNon-parametricDensityEstimation[J].IEEETrans,2004,15(1):55-65.[3]杨竹青,胡德文.独立成分分析方法在盲源信号分离中的应用[J].计算机测量与控