陳秀敏 李珊君* 董興建
1(四川大學電氣信息學院 四川 成都 610065)
2(國網徐州供電公司 江蘇 徐州 221000)
盲源分離[1](Blind Source Separation,BSS),或稱為盲信號分離的具體過程如下:在信號的數學模型和源信號的具體信息未知時,從得到的已知混合信號求得各路源信號的過程。盲源分離的理想結果是找到最接近源信號的估計值。目前,解決盲分離最受歡迎的方法是獨立分量分析(Independent Component Analysis,ICA)[2-4],該方法在語音識別、圖像處理和信號分析等方面都得到了普遍的應用。
1991年,文獻[5-7]對于盲源分離問題,提出了ICA最原始的概念,至此,盲源分離得到了重大突破。在此期間,Tong等[8]也分析了盲源分離的兩大屬性:可分離性和不確定性。1994年,Comon[2]系統地分析了盲源分離中關于瞬時混合信號的問題,這一分析精確地解釋了獨立分量分析理論的形成。Hyv?rinen等研究了源信號的非高斯性,提出了一種新的算法:固定點訓練算法(fixed-point),并在1997年第一次提出了一種基于峭度的Fast-ICA算法[9]。不久,他又分析了另一種基于負熵的Fast-ICA算法[10]。

本文分析了基于負熵最大時,采用三種最典型、最常用的非線性函數構造目標函數時,相應Fast-ICA算法的性能比較,并分析總結了這三種非線性函數的圖像對比和相似之處。通過仿真實驗進行結果分析和誤差對比得出結論:當使用非線性函數y3時,算法的分離性能很好,分離精度較高,且它的平均迭代次數最少,收斂速度最快,被證明是最優的函數形式。
Fast-ICA問題的數學模型描述如下:X=AS+n。其中,X=[x1,x2,…,xm]T是觀測信號,維度為m,A為將源信號進行混疊的混合矩陣且未知,S為源信號,n=[n1,n2,…,nm]T為噪聲。Fast-ICA的目的是在源信號S和混合矩陣A都未知的情況下,僅有觀察數據X,通過對X處理得到Z,然后,找到一個分離矩陣W實現從Z中分離出源信號S,表達式為Y=WZ。其中,Y為S的估計值。
在進行獨立信號提取前,必須先找到一種判別準則來衡量分離信號的非高斯性,即獨立性。本文判別信號非高斯性的依據是負熵,同時采用非高斯性最大化的估計方法。
微分熵的定義式為:

(1)
式中:f(y)為y的概率密度函數。負熵定義為:
J(y)=H(ygauss)-H(y)
(2)
式中:ygauss與y是兩個隨機高斯變量,有著相同的方差。根據信息論理論,如果存在相同方差的兩個隨機變量,具有高斯分布的那個隨機變量有著最大的微分熵。當y是高斯分布時,在實際情況中J(y)=0;y的非高斯性越強,則J(y)越大,因此J(y)可以作為衡量隨機變量y非高斯性的一個有力的測度。為了簡化負熵的表達,在隨機變量y的概率密度函數f(y)未知的一般情況下,Hyv?rinen給出了如下近似定義方法[12]:
J(y)∝{E{G(y)}-E{G(ygauss)}}2
(3)
F(W)=E{Zg(WTZ)}-αW=0
(4)
式中:g(·)為G(·)的導函數,非線性函數g(·)的選擇直接影響著算法的性能和效率,是本文討論的重點。α為常數值,W0為W的最優值時,α可以近似表示為F(W)的雅可比矩陣J(F(W))。
(5)
牛頓迭代公式為:
(6)
F(W)的雅可比矩陣J(F(W))為:
J(F(W))=E{ZZTg′(WTZ)}-αI
(7)
式中:g′(·)為g(·)的導函數;I為單位矩陣。
由于矩陣Z是白化處理后的結果,故式(7)可簡化為:
J(F(W))=E{g′(WTZ)}I-αI
(8)
將α≈E{WTZg(WTZ)}代入公式計算,最終得到Fast-ICA的相似牛頓迭代算法公式為:
(9)
(10)
基于負熵的Fast-ICA算法的過程如下:
(1) 對觀測信號X進行均值為0的處理,即中心化處理。
(2) 對步驟(1)中心化的信號進行白化處理得到Z。
(3) 選擇估計的分量個數n,設置迭代次數i。
(4) 選擇一個具有單位范數的初始化向量Wi(可以隨機選取)。
(6) 標準化處理Wi。
(7) 判斷Wi是否收斂,如果是,則繼續算法運行;否則返回步驟(5)。
(8) 令i=i+1,如果i≤n,返回步驟(4);否則,算法結束運行。
Fast-ICA算法中非線性函數的選取,對于算法的性能和效率以及精度有著較大的影響,當選用不合適的函數代入算法中時,算法不能成功地對信號進行分離,或者得到的分離結果與工程要求的精度相差甚遠。式(9)中g(·)函數我們通常選用無記憶非線性函數,工程中常用最經典的三個非線性函數如下:
g1(y)=tanh(ay)
(11)
(12)
g3(y)=y3
(13)
式中:常數a的取值范圍一般為[1,2],通常取a=1。
從函數形式上來看,這三個函數存在著共同特性:都是奇函數,關于原點對稱;在臨近零點范圍內的取值變化平穩,接近于0。式(11)、式(12)和式(13)的3種非線性函數形成的波形圖如圖1所示。

圖1 3種非線性函數的波形比較
從三種函數的波形圖上,無法直觀地看出不同函數對算法的影響比重,接下來通過仿真的方法,對這三種函數算法進行對比和分析,得到直觀確切的結論。
在Fast-ICA算法中,評價算法分離性能的主要指標通常有相關系數、串音誤差(Cross-talk Error)、源信號與分離信號的組合散點圖等,本文采用相關系數指標。同時,在得到相同精度的分離結果的情況下,比較其迭代次數,多方面地衡量三種函數算法的性能。

(14)
式中:cov(·)表示方差。
兩個信號的相關系數的絕對值越接近于1,則認為信號越接近,算法的分離效果越好。
(2) 迭代次數。指為了逼近想要得到的目標或結果,算法中的公式重復計算的次數。在能夠得到理想結果的情況下,算法的迭代次數越少,則運行時間相對越短,收斂速度越快。
對這三種經典非線性函數的算法性能進行仿真分析。分別將這三種非線性函數代入迭代公式中,組成三個不同的迭代公式算法,并構造出兩組不同類型源信號進行實驗。
3.2.1仿真實驗一
實驗中,首先構造源信號:正弦信號s1=2sin(0.02πt),方波信號s2=2square(100t,50),鋸齒信號a=linspace(1,-1,25),s3=2[a,a,a,a,a,a,a,a]。為了更加準確地對分離效果進行對比分析,加入一個幅值大于0小于1的隨機噪聲,作為干擾信號,其中采樣頻率fs=200 Hz,圖2為源信號的波形圖。利用一個隨機矩陣將各路信號進行混合,得到混合信號即為觀測信號,如圖3所示。

圖2 正弦信號、方波信號、鋸齒信號、噪聲信號組成的源信號波形圖

圖3 觀察信號波形圖

表1 三種非線性函數算法的分離效果
結果越接近于1,表明算法分離后得到的信號和源信號相似度越高,由表1可以看出,采用g1(y)和g3(y)函數具有相近的分離結果,且它們的分離結果比采用g2(y)函數時要更好一些。因此,非線性函數g1(y)和g3(y)的算法的分離性能更佳。
為了更清晰地展示不同非線性函數算法的性能比較,表2給出實驗1 000次時不同非線性函數算法的平均迭代次數、最大迭代次數、最小迭代次數。當進行1 000次實驗時,得到的圖形結果由于密度過高影響視覺效果。為了能夠得到更加清晰的圖示,進行100次分離實驗,圖4是進行100次分離實驗所得到的迭代次數的分布結果圖。

表2 三種非線性函數算法的迭代次數比較

圖4 三種非線性函數分別進行100次盲源分離
由表2和圖4可以看出,三種非線性函數算法的平均迭代次數有較為明顯的區別。其中非線性函數g1(y)的算法的迭代次數最大,且比其他兩個非線性函數的迭代次數要大很多,而采用非線性g3(y)時,算法的迭代次數最少,平均只有85.6,比g1(y)函數少了十幾倍,說明采用非線性函數g3(y)=y3時算法收斂速度最快。
綜合表1、表2和圖4的結果,函數g1(y)和g3(y)算法的分離性能更佳,而函數g3(y)的算法收斂速度更快,最終得出采用g3(y)=y3函數的算法各項指標都比較良好,不僅有相對更高的算法精度,而且算法收斂速度更快。
圖5為三種函數分別進行盲源分離時的一個分離結果,各路信號的順序、幅度和相位發生了變化。這是因為除了已知各源信號相互獨立外,缺乏其他先驗信息,所以分離出的信號才會有不同程度的位移等變化,但這并不影響結果。同時,實驗也驗證了當給源信號設置不同的幅值時,結論依然成立。


圖5 三種非線性函數算法的分離結果
3.2.2仿真實驗二
考慮到實驗的完備性,為了能夠在不同類型的源信號條件下對這三種非線性函數進行分析比較,構造較為復雜的諧波信號作為源信號來進行仿真實驗。實驗中,構造頻率為50 Hz的基波信號以及其3次諧波信號、5次諧波信號,它們的幅值為1,并考慮一個隨機噪聲,幅值為1,如圖6所示。再利用一個隨機矩陣將各路信號混合,得到如圖7所示的混合信號,即觀測信號。

圖6 基波信號、3次諧波信號、5次諧波信號、噪聲信號組成的源信號波形圖

圖7 觀察信號波形圖

表3 三種非線性函數算法的分離效果
可以看出,選用諧波作為源信號時,算法的分離性能沒有實驗一穩定,諧波有一定的干擾功能,但不影響觀察分離結果。相較于g2(y)函數的算法,g1(y)和g3(y)函數的算法分離效果明顯更好,因此,g1(y)和g3(y)函數算法的分離性能更佳。
為了更清晰地展示不同非線性函數下算法的性能比較,表4給出實驗1 000次時不同非線性函數下算法的平均迭代次數、最大迭代次數和最小迭代次數,圖8顯示了利用三種非線性函數分別進行100次分離實驗所得到的迭代次數的分布結果圖。

表4 三種非線性函數算法的迭代次數比較

圖8 三種非線性函數分別進行1 000次盲源分離
由表4和圖8可以看出,三種非線性函數下算法的迭代次數有明顯差別,g1(y)函數的迭代次數最多,g2(y)函數次之,g3(y)函數最少,平均迭代次數只有152.6,且g1(y)和g2(y)函數的迭代次數是g3(y)函數迭代次數的倍數關系,形成非常鮮明的對比。
綜合表3、表4和圖8的結果,采用非線性函數g1(y)和g3(y)時算法的分離性能更佳,而采用非線性函數g3(y)時算法收斂速度更快,最終得出非線性函數g3(y)=y3的算法的各項指標都比較良好,不僅有相對更高的算法精度,而且算法收斂速度更快。該結論與實驗一相似。
圖9為三種函數分別進行盲源分離時的一個分離結果,可以看出,當給源信號設置不同的幅值時,結論依然成立。

圖9 三種非線性函數算法的分離結果