第二章 獨立成分分析法(Independent Component Analysis ,ICA)之原理
2.4 ICA 之演算法
這也就表示經過 whitening matrix 轉換過後之 mixing matrix 是一個正交矩陣。這 也就表示當我們在尋找 demixing matrix 時,只要尋找互相垂直的向量即可,這 對整個演算法的簡化有相當大的幫助。
2.4 ICA 之演算法
在 ICA 的演算法中,通常會先定義一個目標函數(Objective function),然後 對此目標函數算最大值或最小值。而在目標函數的定義上,我們必須定義一個我 們可以藉由對他算最大值或最小值而得到獨立元素(Independent Component)的函 數。因此,我們可以將 ICA 演算法分為兩大部分
ICA method = Objective Function + Optimization Algorithm
而目標函數與最佳化演算法的選擇也決定了 ICA 演算法的性質,其中目標函數 的選擇決定了 ICA 演算法是否強健(robustness),而最佳化演算法的選擇與 ICA 演算法的收斂速度有關。
配合 2.3 所提到的前處理,可將 ICA 整體架構描述如圖 2-3。有 correlation 的混 合訊號經過前處理後,訊號彼此為 uncorrelated,再透過目標函數之最佳化,即 可得到獨立元素[11]。
(2.19)
(2.20)
(2.21)
圖 2- 3 ICA 演算法之結構
混合訊號 X
前處理 Centering
whitening
混合訊號 Z
最佳化演算法 目標函數
獨立元素 Y
2.4.1 目標函數
如 2.2.1 所提到的,由於中央極限定理,我們可以藉由尋找一個使結果最不 gaussian 的 W(Maximization of Non-gaussianity)來分出獨立元素。所以,若我們想 要找到一個獨立元素 y 我們可以表示為
z w y= T
其中 w 為行向量。由於我們想要尋找一個使結果最 nongaussian 的 W,對於隨機 變數是否 gaussian 就需要一個量化的量測,也就是去測量(2.22)中 y 的 gaussian 程度。而一般對於 gaussian 程度典型的量測就是 kurtosis 與 neg-entropy。
kurtosis
一隨機變數 y 之 kurtosis 表示為 kurt(y),其定義如下
2 2
4} 3( { })
{ )
(y E y E y
kurt = −
若要簡化此式,我們可以假設 y 已經過調整使得其 variance 等於一,於是等式右 邊可簡化為E{y4}−3。對於 gaussian 的隨機變數 y,其E{y4}等於3(E{y2})2,所 以 kurtosis 為零。Kurtosis 的值可能為正或為負,當一隨機變數之 kurtosis 為正,
我們稱之為 supergussian;若 kurtosis 為負,稱為 subgaussian[12],其中一典型的 例子為均勻分佈(uniform distribution)其分佈如圖所示(圖中灰線是 gaussian 分佈 以做比較)
(2.22)
(2.23)
圖 2- 4 subgaussian 之統計分佈圖
因此我們可以利用 kurtosis 之絕對值或平方當作目標函數,此函數值越小代表越 接近 gaussian,相反地若此函數值越大也就越 nongaussian。
Neg-entropy
雖然我們可以藉由 kurtosis 的計算得知隨機變數的 gaussian 程度,但是 kurtosis 是四次方的量測,在如此高次方的計算之下,所計算出的值很容易受到 某些少數的值的影響,所以用 kurtosis 來量測 gaussian 程度並不穩健(robust)[13]。
另個測量 gaussian 的方法是 neg-entropy,這是由資訊理論(information theory) 發展而來之方法。一個 probability density function 為py(η)的隨機向量 y 之 entropy H 定義如下
η η
η p d
p y
H( )=−
∫
y( )log y( )而所有相同 variance 的隨機變數當中,gaussian 變數之 entropy 最大,這也就意 味著 entropy 可以用來量測一隨機變數是否 gaussian。
爲了得到一個非 gaussian 之量測,我們希望對於一個 gaussian 的隨機變數,
(2.24)
其函數值為零,且對於所有隨機變數之函數值皆大於零,於是定義了 neg-entropy J,對於隨機向量 y 之 neg-entropy 為
) ( ) ( )
(y H y H y
J = gauss −
其中ygaussian是與 y 有相同 covariance matrix 之 gaussian 隨機向量。由此式可看出
當 y 為 gaussian,則函數值為零,又 gaussian 變數之 entropy 最大,所以對所有 隨機變數函數值皆大於零。於是尋找 neg-entropy 之最大值即為尋找最
nongaussian 之隨機變數。
雖然 neg-entropy 可用以量測 gaussian 程度,但在計算上卻十分複雜,因此 在實際應用上,需採用對於 neg-entropy 較簡化的近似[14]
)}]2
( { )}
( { [ )
(y E G y E G v
J ∝ −
其中 G 為 non-quadratic function,而 v 為 gaussian random variable。實際上,若 G 函數越平緩則可得到越 robust 之估計,G 函數有以下三種選擇:
y a a
y
G 1
1
1 1 logcosh
) ( =
) 2 / exp(
)
( 2
2 y y
G =− −
4 3(y) y
G =
其中1≤ a1 ≤2。
(2.25)
(2.26)
(2.27) (2.28) (2.29)
2.4.2 針對實數之 FastICA
FastICA 是由 Aapo Hyvärinen 所提出之演算法[15]。此演算法利用 neg-entropy 做為 non-gaussian 之量測,而欲量測之y=wTz,故 2.26 式可表為
而對於 whitening 後之訊號,可做以下近似 I 下之 iteration
w
w
其收斂條件為 w 與 update 之前同方向。當有超過一個 independent component 時,
在 2.3.2 曾提到過,經過 whitening 後,在尋找 demixing matrix 時,只要尋找互 相垂直的向量即可,所以在找第 p 個 w 時,須將前 p-1 個找出之 w 之方向減去
以下利用 FastICA 分離兩個語音,聲源訊號為
圖 2- 5 聲源訊號
經過 mixing matrix
=
5525 . 0 9557 . 0
4047 . 0 5090 .
A 0 之混和,混和訊號為
利用 FastICA 所分離出之結果為
由圖中可看出分離效果佳且 FastICA 收斂速度快,本次分離僅 20 個 steps 即可收 斂。
(sec)
(sec)
(sec) (sec) (sec)
(sec)