郭松林, 丘斯帆
(黑龍江科技大學 電氣與控制工程學院, 哈爾濱 150022)
現有的信號處理技術有很多,Fast-ICA是其中一種常用的信號處理技術,用于從混合信號中分離出獨立成分[1]。獨立成分是指在統計上相互獨立的信號,這些信號可以描述原始信號中的特征,如聲音信號和圖像信號等,其在分離非高斯信號方面具有很好的性能[2]。Fast-ICA算法在信號處理、圖像處理、生物醫學、金融等領域中有廣泛的應用[3],是當前獨立成分分析領域的研究熱點之一。然而,Fast-ICA算法中存在一些問題,如收斂速度慢、分離精度不高等[4],這些問題限制了該算法在實際應用中的表現。
為此,筆者改進Fast-ICA算法,在原算法的基礎上,通過在Fast-ICA算法與原函數之間的誤差進行四次樣條插值,提高算法的精度,通過理論分析和實驗驗證,將探討改進算法的性能和優越性,為實際應用提供了更為可靠的解決方案。
現有三個不同物理源發出的信號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,以此達到將源信號分離的效果。
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)的根,應用牛頓迭代法求解得:
則
經過代數簡化后可以得:
常見的求解方程f(x)=0方法有牛頓迭代法[8],其迭代公式為
文獻[9]提出了一種四階牛頓迭代法,形式為
則可推得,Fast-ICA算法公式為
文獻[9]對上述算法進行了詳細的收斂性證明,算法的誤差方程為
常見的插值方法有牛頓插值、拉格朗日插值及樣條插值[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),則有: 最終得出四次樣條函數為 分析構造的四次樣條函數的誤差,對一個給定的步長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)對分離結果進行四次樣條插值。 利用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%的提升。證明改進算法收斂速度與精確性都優于原算法。 (1)基于Fast-ICA算法提出的四階牛頓迭代法,通過四次樣條插值,使算法的收斂速度與精度進一步提升,給出平均迭代次數與算法PI均值的證明。 (2)通過仿真實驗對比了兩組算法分離語音信號的性能,仿真結果顯示,改進后的Fast-ICA算法收斂速度更快,較原算法有35%的提升;精度較原算法有24%的提升,分離出的信號更接近于源信號。2.3 誤差分析
3 仿真實驗與結果分析
4 結 論