APP下载

四次样条插值的改进Fast-ICA算法

2024-01-08郭松林丘斯帆

黑龙江科技大学学报 2023年6期
关键词:盲源迭代法四阶

郭松林, 丘斯帆

(黑龙江科技大学 电气与控制工程学院, 哈尔滨 150022)

0 引 言

现有的信号处理技术有很多,Fast-ICA是其中一种常用的信号处理技术,用于从混合信号中分离出独立成分[1]。独立成分是指在统计上相互独立的信号,这些信号可以描述原始信号中的特征,如声音信号和图像信号等,其在分离非高斯信号方面具有很好的性能[2]。Fast-ICA算法在信号处理、图像处理、生物医学、金融等领域中有广泛的应用[3],是当前独立成分分析领域的研究热点之一。然而,Fast-ICA算法中存在一些问题,如收敛速度慢、分离精度不高等[4],这些问题限制了该算法在实际应用中的表现。

为此,笔者改进Fast-ICA算法,在原算法的基础上,通过在Fast-ICA算法与原函数之间的误差进行四次样条插值,提高算法的精度,通过理论分析和实验验证,将探讨改进算法的性能和优越性,为实际应用提供了更为可靠的解决方案。

1 盲源分离算法

1.1 盲源分离的基本原理

现有三个不同物理源发出的信号s1(t)、s2(t)、s3(t),分布在不同位置的三个传感器所测得的信号为x1(t)、x2(t)、x3(t),每个传感器所获得的信号应是每个源信号的加权和,即

x1(t)=a11s1(t)+a12s2(t)+a13s3(t),

x2(t)=a21s1(t)+a22s2(t)+a23s3(t),

x3(t)=a31s1(t)+a32s2(t)+a33s3(t)。

盲源分离模型[5]可以描述为

x(t)=As(t),

式中:x(t)=[x1(t),x2(t),…,xm(t)]T——m维观察列向量;

s(t)=[s1(t),s2(t),…,sn(t)]T——n维源信号;

A——一个随机且未知的混合矩阵。

盲源分离的一般过程[6]如图1所示。

图1 盲源分离过程

从图1可以看出,盲源分离首先通过混合矩阵A得到观测信号x(t),接着寻求非线性映射G,以此达到将源信号分离的效果。

1.2 Fast-ICA算法

Fast-ICA算法也称为固定点算法,其中最常见的形式有采用四阶累积量和基于负熵的固定点算法,由于负熵作为Gauss性度量更能发挥其优越性,因此,应用负熵的Fast-ICA算法覆盖面更广[7]。

当负熵是判据时,

J(yi)∝{E[F(yi)]-E[F(v)]}2,

将J(yi)对ui求导,

式中:F(yi)——目标函数的非线性函数;

f(yi)——其一阶导数。

当稳态时,Δui=0,因此可以得Fast-ICA算法的两步算式为

(1)

经过多次实验分析,该算法在收敛性上存在一定缺陷,采用牛顿迭代算法,将式(1)的第一个式子等效为

(2)

求式(2)的根,应用牛顿迭代法求解得:

经过代数简化后可以得:

2 改进Fast-ICA算法

2.1 四阶牛顿迭代法

常见的求解方程f(x)=0方法有牛顿迭代法[8],其迭代公式为

文献[9]提出了一种四阶牛顿迭代法,形式为

则可推得,Fast-ICA算法公式为

文献[9]对上述算法进行了详细的收敛性证明,算法的误差方程为

2.2 四次样条插值

常见的插值方法有牛顿插值、拉格朗日插值及样条插值[10],文中基于三次样条插值,构造出四次样条插值函数。

设a=x0

s(x)=ai+bit+cit2+dit3+eit4,

式中,x=xi+th,0≤t≤1。

由s(xi)、s′(xi)、s″(xi)、s‴(xi)、s″(xi+1)的值,可以得:

进而可以得,s(x)的表达式为

则有:

再由文献[11]中引理2.2.1可以得:

2s(xi)+s(xi-1)]。

记Dis(x)=s(i)(x),则有:

最终得出四次样条函数为

2.3 误差分析

分析构造的四次样条函数的误差,对一个给定的步长h和无限可微的y(x),定义为

Ehy(x)=y(x+h),Dy(x)=y′(x),

此外,有:

式中,Eh=ehD。

因此,定义:

Eh1Eh2y(x)=y(x+h1+h2),

可以得,Eh1Eh2=e(h1+h2)D。

令i=0,1,…,n-1;0≤k≤n-1-i,可以得

接着,根据定理2.3.1[12],得:

将区间[a,b]划分为n个均匀的子区间,令h=(b-a)/n,很容易得:

据此,证明了四次样条插值函数是具有四阶收敛的,从而提高了插值曲线的精度。

设f(x)=cos8x,x∈[-2,2],利用上述四次样条插值函数对其插值,得到原函数与插值后的函数图像,如图2所示。由图2可以看出,经过四次样条插值后的函数与原函数是非常接近的,故用四次样条插值逼近原函数是非常好地选择。

图2 原函数与插值后的函数

根据上面的讨论,给出改进Fast-ICA算法的步骤如下:

(1)将数据进行中心化使其均值为0。

(2)对数据进行白化处理,得到z。

(3)选择一个初始化向量w。

(4)使用改进后的迭代公式来重新计算w。

(5)标准化w,w←w/‖w‖。

(6)判断收敛与否,若不收敛则返回(4)。

(7)对分离结果进行四次样条插值。

3 仿真实验与结果分析

利用Matlab进行仿真实验,分别用传统Fast-ICA算法与文中改进的算法对两组语音数据进行仿真,对比改进前后的仿真结果。

信号源为两组不同的语音信号,分别是男声和音乐声,如图3所示。接着利用Matlab生成一个随机混合矩阵,将两组语音信号混合,如图4所示。

图3 原始语音信号

图4 混合语音信号

得到混合语音信号后,首先用传统的Fast-ICA算法对其分离,如图5所示。可以看出,传统算法分离性能优秀,很好地分离出了原始语音信号。接着,用文中改进的Fast-ICA算法对其分离,结果如图6所示。由图6可见,改进后的算法依旧能够很好地分离出原始语音信号,尽管与传统算法分离的排列顺序不一致,但这是由于算法分离的无序性导致的,并不影响结果,具体的分离性能还需根据算法PI值来分析。

图5 Fast-ICA解混信号

图6 改进的Fast-ICA解混信号

为了进一步证明改进算法对比原算法有更快的收敛速度,文中随机选取了20个初始分离矩阵,分别对两种算法运行了20次,记录每一次的迭代次数,结果如图7所示。

图7 算法收敛速度

同时本文还比较了两种算法的分离性能,常用的有通过算法PI值来衡量,其公式为

式中:m——源信号的个数;

cij——C=WA的元素;

W——经过样条插值后,再进行一遍算法分离得到的分离矩阵。

其结果PI值越小,则证明算法具有更好的分离性能。同样对两种算法进行20次仿真,记录PI值。将平均迭代次数N与平均PI值记录如表1所示。

表1 算法PI均值、N与MSE

在评价与分析分离信号与原始信号的一致性时,常采用均方误差作为判断依据,同样本文比较了改进算法与传统算法的均方误差,其公式为

si——原始信号。

其结果MSE越小,则说明算法分离精度越高,结果如表1所示。

从图7可以看出,原算法对初始向量比较敏感,每次迭代的次数波动较大,而改进的算法则波动较小。从表1可以看出,改进算法的PI均值较原算法有29%的提升,平均迭代次数则有35%的提升,而改进算法的精度较原算法有24%的提升。证明改进算法收敛速度与精确性都优于原算法。

4 结 论

(1)基于Fast-ICA算法提出的四阶牛顿迭代法,通过四次样条插值,使算法的收敛速度与精度进一步提升,给出平均迭代次数与算法PI均值的证明。

(2)通过仿真实验对比了两组算法分离语音信号的性能,仿真结果显示,改进后的Fast-ICA算法收敛速度更快,较原算法有35%的提升;精度较原算法有24%的提升,分离出的信号更接近于源信号。

猜你喜欢

盲源迭代法四阶
四阶p-广义Benney-Luke方程的初值问题
迭代法求解一类函数方程的再研究
基于干扰重构和盲源分离的混合极化抗SMSP干扰
迭代法求解约束矩阵方程AXB+CYD=E
预条件SOR迭代法的收敛性及其应用
改进的互信息最小化非线性盲源分离算法
盲源分离技术在化探数据处理中的思考与探索
带参数的四阶边值问题正解的存在性
一种基于时频分析的欠定盲源分离算法
求解PageRank问题的多步幂法修正的内外迭代法