ICA快速算法原理和matlab算法程序.pdf
- 文档编号:3432337
- 上传时间:2023-05-05
- 格式:PDF
- 页数:10
- 大小:796.40KB
ICA快速算法原理和matlab算法程序.pdf
《ICA快速算法原理和matlab算法程序.pdf》由会员分享,可在线阅读,更多相关《ICA快速算法原理和matlab算法程序.pdf(10页珍藏版)》请在冰点文库上搜索。
实验实验2:
FastICA算法算法一算法原理一算法原理:
独立分量分析(ICA)的过程如下图所示:
在信源()st中各分量相互独立的假设下,由观察()xt通过结婚系统B把他们分离开来,使输出()yt逼近()st。
图1-ICA的一般过程ICA算法的研究可分为基于信息论准则的迭代估计方法和基于统计学的代数方法两大类,从原理上来说,它们都是利用了源信号的独立性和非高斯性。
基于信息论的方法研究中,各国学者从最大熵、最小互信息、最大似然和负熵最大化等角度提出了一系列估计算法。
如FastICA算法,Infomax算法,最大似然估计算法等。
基于统计学的方法主要有二阶累积量、四阶累积量等高阶累积量方法。
本实验主要讨论FastICA算法。
1.数据的预处理数据的预处理一般情况下,所获得的数据都具有相关性,所以通常都要求对数据进行初步的白化或球化处理,因为白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。
若一零均值的随机向量TMZZZ,1满足IZZET,其中:
I为单位矩阵,我们称这个向量为白化向量。
白化的本质在于去相关,这同主分量分析的目标是一样的。
在ICA中,对于为零均值的独立源信号TNtStStS,.,1,有:
jiSESESSEjiji当,0,且协方差矩阵是单位阵IScov,因此,源信号tS是白色的。
对观测信号tX,我们应该寻找一个线性变换,使tX投影到新的子空间后变成白化向量,即:
tXWtZ0(2.1)其中,0W为白化矩阵,Z为白化向量。
利用主分量分析,我们通过计算样本向量得到一个变换TUW2/10其中U和分别代表协方差矩阵XC的特征向量矩阵和特征值矩阵。
可以证明,线性变换0W满足白化变换的要求。
通过正交变换,可以保证IUUUUTT。
因此,协方差矩阵:
IUXXEUUXXUEZZETTTTT2/12/12/12/12/12/1(2.2)再将tAStX式代入tXWtZ0,且令AAW0,有tSAtASWtZ0(2.3)由于线性变换A连接的是两个白色随机矢量tZ和tS,可以得出A一定是一个正交变换。
如果把上式中的tZ看作新的观测信号,那么可以说,白化使原来的混合矩阵A简化成一个新的正交矩阵A。
证明也是简单的:
IAAASSEAASSAEZZETTTTTT(2.4)其实正交变换相当于对多维矢量所在的坐标系进行一个旋转。
在多维情况下,混合矩阵A是NN的,白化后新的混合矩阵A由于是正交矩阵,其自由度降为2/1NN,所以说白化使得ICA问题的工作量几乎减少了一半。
白化这种常规的方法作为ICA的预处理可以有效地降低问题的复杂度,而且算法简单,用传统的PCA就可完成。
用PCA对观测信号进行白化的预处理使得原来所求的解混合矩阵退化成一个正交阵,减少了ICA的工作量。
此外,PCA本身具有降维功能,当观测信号的个数大于源信号个数时,经过白化可以自动将观测信号数目降到与源信号维数相同。
2.FastICA算法算法FastICA算法,又称固定点(Fixed-Point)算法,是由芬兰赫尔辛基大学Hyvrinen等人提出来的。
是一种快速寻优迭代算法,与普通的神经网络算法不同的是这种算法采用了批处理的方式,即在每一步迭代中有大量的样本数据参与运算。
但是从分布式并行处理的观点看该算法仍可称之为是一种神经网络算法。
FastICA算法有基于峭度、基于似然最大、基于负熵最大等形式,这里,我们介绍基于负熵最大的FastICA算法。
它以负熵最大作为一个搜寻方向,可以实现顺序地提取独立源,充分体现了投影追踪(ProjectionPursuit)这种传统线性变换的思想。
此外,该算法采用了定点迭代的优化算法,使得收敛更加快速、稳健。
因为FastICA算法以负熵最大作为一个搜寻方向,因此先讨论一下负熵判决准则。
由信息论理论可知:
在所有等方差的随机变量中,高斯变量的熵最大,因而我们可以利用熵来度量非高斯性,常用熵的修正形式,即负熵。
根据中心极限定理,若一随机变量X由许多相互独立的随机变量NiSi,.3,2,1之和组成,只要iS具有有限的均值和方差,则不论其为何种分布,随机变量X较iS更接近高斯分布。
换言之,iS较X的非高斯性更强。
因此,在分离过程中,可通过对分离结果的非高斯性度量来表示分离结果间的相互独立性,当非高斯性度量达到最大时,则表明已完成对各独立分量的分离。
负熵的定义:
YHYHYNGaussg(2.5)式中,GaussY是一与Y具有相同方差的高斯随机变量,H为随机变量的微分熵dppYHYYlg(2.6)根据信息理论,在具有相同方差的随机变量中,高斯分布的随机变量具有最大的微分熵。
当Y具有高斯分布时,0YNg;Y的非高斯性越强,其微分熵越小,YNg值越大,所以YNg可以作为随机变量Y非高斯性的测度。
由于根据式(3.6)计算微分熵需要知道Y的概率密度分布函数,这显然不切实际,于是采用如下近似公式:
2GaussgYgEYgEYN(2.7)其中,E为均值运算;g为非线性函数,可取)tanh(11yayg,或2/exp22yyyg或33yyg等非线性函数,这里,211a,通常我们取11a。
快速ICA学习规则是找一个方向以便XWYXWTT具有最大的非高斯性。
这里,非高斯性用式(3.7)给出的负熵)(XWNTg的近似值来度量,XWT的方差约束为1,对于白化数据而言,这等于约束W的范数为1。
FastICA算法的推导如下。
首先,XWT的负熵的最大近似值能通过对XWGET进行优化来获得。
根据Kuhn-Tucker条件,在122WXWET的约束下,XWGET的最优值能在满足下式的点上获得。
0WXWXgET(2.8)这里,是一个恒定值,XWXgWETT00,0W是优化后的W值。
下面我们利用牛顿迭代法解方程(3.8)。
用F表示式(3.8)左边的函数,可得F的雅可比矩阵WJF如下:
IXWgXXEWJFTT(2.9)为了简化矩阵的求逆,可以近似为(3.9)式的第一项。
由于数据被球化,IXXET,所以,IXWgEXWgEXXEXWgXXETTTTT。
因而雅可比矩阵变成了对角阵,并且能比较容易地求逆。
因而可以得到下面的近似牛顿迭代公式:
WWWXWgEWXWXgEWWTT/(2.10)这里,W是W的新值,XWXgWETT,规格化能提高解的稳定性。
简化后就可以得到FastICA算法的迭代公式:
WWWWXWgEXWXgEWTT/(2.11)实践中,FastICA算法中用的期望必须用它们的估计值代替。
当然最好的估计是相应的样本平均。
理想情况下,所有的有效数据都应该参与计算,但这会降低计算速度。
所以通常用一部分样本的平均来估计,样本数目的多少对最后估计的精确度有很大影响。
迭代中的样本点应该分别选取,假如收敛不理想的话,可以增加样本的数量。
3.FastICA算法的基本步骤:
算法的基本步骤:
1.对观测数据X进行中心化,使它的均值为0;2.对数据进行白化,ZX。
3.选择需要估计的分量的个数m,设迭代次数1p4.选择一个初始权矢量(随机的)pW。
5.令WZWgEZWZgEWTpTpp,非线性函数g的选取见前文。
6.jpjjTpppWWWWW11。
7.令pppWWW/。
8.假如pW不收敛的话,返回第5步。
9令1pp,如果mp,返回第4步。
二二MATLAB源程序及说明:
源程序及说明:
%下程序为ICA的调用函数,输入为观察的信号,输出为解混后的信号functionZ=ICA(X)%-去均值-M,T=size(X);%获取输入矩阵的行/列数,行数为观测数据的数目,列数为采样点数average=mean(X);%均值fori=1:
MX(i,:
)=X(i,:
)-average(i)*ones(1,T);end%-白化/球化-Cx=cov(X,1);%计算协方差矩阵Cxeigvector,eigvalue=eig(Cx);%计算Cx的特征值和特征向量W=eigvalue(-1/2)*eigvector;%白化矩阵Z=W*X;%正交矩阵%-迭代-Maxcount=10000;%最大迭代次数Critical=0.00001;%判断是否收敛m=M;%需要估计的分量的个数W=rand(m);forn=1:
mWP=W(:
n);%初始权矢量(任意)%Y=WP*Z;%G=Y.3;%G为非线性函数,可取y3等%GG=3*Y.2;%G的导数count=0;LastWP=zeros(m,1);W(:
n)=W(:
n)/norm(W(:
n);whileabs(WP-LastWP)&abs(WP+LastWP)Criticalcount=count+1;%迭代次数LastWP=WP;%上次迭代的值%WP=1/T*Z*(LastWP*Z).3)-3*LastWP;fori=1:
mWP(i)=mean(Z(i,:
).*(tanh(LastWP)*Z)-(mean(1-(tanh(LastWP)*Z).2).*LastWP(i);endWPP=zeros(m,1);forj=1:
n-1WPP=WPP+(WP*W(:
j)*W(:
j);endWP=WP-WPP;WP=WP/(norm(WP);ifcount=Maxcountfprintf(未找到相应的信号);return;endendW(:
n)=WP;endZ=W*Z;%以下为主程序,主要为原始信号的产生,观察信号和解混信号的作图clearall;clc;N=200;n=1:
N;%N为采样点数s1=2*sin(0.02*pi*n);%正弦信号t=1:
N;s2=2*square(100*t,50);%方波信号a=linspace(1,-1,25);s3=2*a,a,a,a,a,a,a,a;%锯齿信号s4=rand(1,N);%随机噪声S=s1;s2;s3;s4;%信号组成4*NA=rand(4,4);X=A*S;%观察信号%源信号波形图figure
(1);subplot(4,1,1);plot(s1);axis(0N-5,5);title(源信号);subplot(4,1,2);plot(s2);axis(0N-5,5);subplot(4,1,3);plot(s3);axis(0N-5,5);subplot(4,1,4);plot(s4);xlabel(Time/ms);%观察信号(混合信号)波形图figure
(2);subplot(4,1,1);plot(X(1,:
);title(观察信号(混合信号));subplot(4,1,2);plot(X(2,:
);subplot(4,1,3);plot(X(3,:
);subplot(4,1,4);plot(X(4,:
);Z=ICA(X);figure(3);subplot(4,1,1);plot(Z(1,:
);title(解混后的信号);subplot(4,1,2);plot(Z(2,:
);subplot(4,1,3);plot(Z(3,:
);subplot(4,1,4);plot(Z(4,:
);xlabel(Time/ms);三三实验结果:
实验结果:
实验结果如下所示:
其中图2为源信号的波形图,图3为观察信号(混合信号)波形图,图4为解混后的信号波形图。
从图4可以看出,执行ICA后,可以将图2中的4种信号分离出来,且误差较小(个别信号发生反相)。
与实验一相比,分离效果要提高很多。
图2-源信号图3-观察信号(混合信号)图4-解混后的信号四源信号的分布特性对分离效果的影响四源信号的分布特性对分离效果的影响:
下列3个图为源信号中含有不同个数的高斯白噪声分解后得到的相应解混信号:
其中图5源信号只含一个随机噪声,图6源信号含两个随机噪声,图7源信号含三个随机噪声。
从图5,6,7可以看出,源信号所含的高斯白噪声越多,分离后得到的信号与源信号相比误差越大,效果越差;所含高斯白噪声越少,分离效果越好。
图5-源信号只含一个随机噪声分离后得到的波形图图6-源信号含两个随机噪声分离后得到的波形图图7-源信号含三个随机噪声分离后得到的波形图下图8,9,10分别为方波信号,正弦信号和锯齿波3种信号与同一个噪声混合后,经ICA解混后得到的结果。
为便于比较,源信号中3种信号所含的能量相等。
信号的非高斯性可用四阶累积量(峰度)进行描述,0称为超高斯型,0称为亚高斯型,可用的大小作为信号距离高斯型程度的度量。
越大,表明信号距高斯型越远,即信号的非高斯性越强。
下图中3种信号在源信号中的四阶累积量分别为:
方波为-8.0,正弦波为-6.0,锯齿波为-4.8154,表明方波的非高斯性最强,锯齿波德非高斯性最弱。
经ICA分离后得到的方波、正弦波和锯齿波与源信号中对应的三种信号的相关系数依次为:
-0.9994,-0.9987,-0.9925。
可以看出,分解后得到的三种信号中方波与源信号最为接近,锯齿波与源信号差距最大。
结合四阶累积量,可以得出:
在同一个ICA系统中,信号的非高斯性越强,分离出来的信号越接近源信号,分离效果越好;反之,分离效果越差。
图8-方波信号分离后得到的波形图图9-正弦信号分离后得到的波形图图10-锯齿波信号分离后得到的波形图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ICA 快速 算法 原理 matlab 程序