最近在學(xué)習(xí)數(shù)據(jù)降維的一些方法(有關(guān)數(shù)據(jù)降維的其他內(nèi)容請看這篇文章),雖然獨立成分分析不算是嚴(yán)格意義上的降維方法,但是它和PCA有著千絲萬縷的聯(lián)系,所以打算專門寫一篇文章來學(xué)習(xí)ICA的相關(guān)知識,看了挺多的關(guān)于ICA的博文,有些文章講的比較詳細(xì)。有句話是這么說的:“論文是詳細(xì)版的知識講解”,也就是說如果想深入詳細(xì)的了解某個知識,那么去讀相關(guān)論文,所以閱讀了一篇經(jīng)典的ICA論文,作者是A. Hyva¨rinen,整篇論文對ICA做出了詳細(xì)的解釋。這篇文章按照原論文的結(jié)構(gòu),對原論文進行了翻譯概括。 目錄 2. 獨立成分分析(independent component analysis) 2.2 ICA的不明確性(Ambiguities of ICA) 2.3 圖解ICA(Illustration of ICA) 3. 什么是獨立性(What's independence?) 3.1 定義和基本屬性(Definition and fundamental properties) 3.2 不相關(guān)變量是部分獨立的(Uncorrelated variables are only partly independent) 3.3 為什么獨立成分不能是高斯變量(Why Gaussian variables are forbidden) 4 ICA估計原理(Principles of ICA estimation) 4.1 非高斯獨立(“Non-Gaussian is independent”) 4.2 非高斯性的度量(Measures of non-Gaussianity) 4.2.3 負(fù)熵的近似(Approximations of negentropy) 4.3 互信息最小化(Minimization of mutual information) 4.3.2 通過互信息定義ICA(Defining ICA by mutual information) 4.4 最大似然估計(Maximum likelihood estimation) 4.4.2 信息最大原則(The infomax principle) 4.4.3 互信息連接(Connection to mutual information) 4.5 ICA與投影跟蹤(ICA and projection pursuit) 5 ICA的預(yù)處理(Preprocessing of ICA) 5.3 進一步的預(yù)處理(Further preprocessing) 6 FastICA算法(The FastICA algorithm) 6.1 單元FastICA(FastICA for one unit) 6.2 多元FastICA(FastICA for several unit) 6.3 FastICA 和最大似然(FastICA and maximum likelihood) 6.4 FastICA的屬性(Properties of the FastICA algorithm) 1. 動機(Motivation)想象兩個人在意見房間內(nèi)同時說話,有兩個位于房間不同位置的麥克風(fēng)記錄時間信號,記錄的時間信號分別用 其中 以圖1和圖2的波形為例,圖1表示的波形是原始語音信號,圖2表示的波形是混合后即麥克風(fēng)記錄的信號。我們要做的就是通過圖2中的信號來恢復(fù)圖1中的信號。實際上,如果我們知道參數(shù) 其中一種方法是我們可以應(yīng)用信號 2. 獨立成分分析(independent component analysis)2.1 ICA的定義(Definition of ICA)為了嚴(yán)格定義ICA,我們可以使用統(tǒng)計隱變量模型。假設(shè)我們從n個獨立成分觀察到n個線性混合信號 假設(shè)每一個 用向量-矩陣法表示前面的和式是非常方便的,我們用x表示隨機向量,其元素為 有時,我們需要矩陣的列向量,用 我們稱(4)式表示的統(tǒng)計模型為獨立成分分析或ICA模型。ICA模型是生成模型,它描述了觀測數(shù)據(jù)是如何通過混合元素 ICA的出發(fā)點是非常簡單的一個假設(shè):成分 ICA是和“盲源分離”(BSS)非常相近的一種方法?!霸础笔侵冈夹盘?,也就是獨立成分,比如雞尾酒宴會中的說話者的語音信號;“盲”是因為我們可知的信息非常少,不知道混合矩陣 2.2 ICA的不明確性(Ambiguities of ICA)在ICA模型,也就是式(4)中,我們很容易看到ICA的一些不太明確的地方: 1. 我們不能確定獨立成分的方差(能量) 原因是, 2. 我們不能確定獨立成分的順序 原因同樣是 2.3 圖解ICA(Illustration of ICA)為了用統(tǒng)計學(xué)術(shù)語來闡明ICA模型,我們假設(shè)兩個獨立分量服從下面的均勻分布: 選擇均勻分布的取值范圍,使得均值為0,方差為1。 現(xiàn)在混合這兩個獨立成分,我們?nèi)∠旅娴幕旌暇仃嚕?/p> 這得出了兩個混合變量, 我們可以看到,隨機變量 現(xiàn)在估計ICA模型中數(shù)據(jù)的問題變成了用包含在 然而,實際上,這將是一種非常差的方法,因為它僅適用于具有完全均勻分布的變量。 而且,它在計算上會非常復(fù)雜。 我們需要的是一種適用于獨立成分的任何分布的方法,并且可以快速可靠地工作。 接下來,在開始開發(fā)用于估計ICA模型的方法之前,我們將考慮獨立性的確切定義。 3. 什么是獨立性(What's independence?)在這一小節(jié)我們將會解決兩個關(guān)鍵的問題:為什么要假設(shè)獨立成分是統(tǒng)計獨立的?為什么獨立成分必須是非高斯變量 3.1 定義和基本屬性(Definition and fundamental properties)為了定義獨立性,首先考慮兩個常量隨機變量 對于 式(10)對n個隨機變量同樣適用,此時聯(lián)合概率密度函數(shù)等于n個部分的邊緣概率密度函數(shù)的乘積。該定義可用于推導(dǎo)獨立隨機變量的一個最重要的性質(zhì)。給定h1和h2兩個函數(shù),我們總是有: 其證明過程如下: 3.2 不相關(guān)變量是部分獨立的(Uncorrelated variables are only partly independent)弱化的獨立是不相關(guān)。如果兩個隨機變量 獨立一定不相關(guān),但是不相關(guān)不一定獨立。例如,假設(shè) 由式(11)可以得出隨機變量
3.3 為什么獨立成分不能是高斯變量(Why Gaussian variables are forbidden)在ICA中對獨立成分最基礎(chǔ)的限制是:獨立成分必須為非高斯變量。接下來我們看看為什么高斯變量對ICA不適用,我們假設(shè)混合矩陣 其分布如圖6所示: 此圖顯示了密度的完全對稱性,因此它不包含混合矩陣 4 ICA估計原理(Principles of ICA estimation)4.1 非高斯獨立(“Non-Gaussian is independent”)直觀的說,非高斯分布是ICA估計的關(guān)鍵,實際上,沒有非高斯性,估計是不可能完成的,正如3.3 中所說的那樣。這也可能是ICA后期復(fù)蘇的主要原因:在傳統(tǒng)統(tǒng)計學(xué)理論中,大多假設(shè)隨機變量服從高斯分布,因此這將任何與ICA有關(guān)的方法都排除在外了。中心極限定理是概率論中的經(jīng)典,它表明在一定條件下,獨立隨機變量之和的分布傾向于高斯分布。 因此,兩個獨立隨機變量的總和通常具有比兩個原始隨機變量中的任何一個更接近高斯的分布。 現(xiàn)在假設(shè)數(shù)據(jù)向量 為了了解這如何引出ICA估計的基本原理,讓我們換一下變量,定義 最大化 4.2 非高斯性的度量(Measures of non-Gaussianity)為了在ICA估計中使用費高斯性,我們必須對隨機變量 4.2.1 峰度(Kurtosis)非高斯性的傳統(tǒng)度量方式是峰度和四階累積量。 實際上,我們假設(shè)過 其概率密度函數(shù)如圖7所示: 亞高斯隨機變量通常具有“平坦”概率密度函數(shù),其在零附近相當(dāng)恒定,并且對于較大的變量值而言非常小。 典型的例子是的均勻分布。非高斯性通常通常通過峰度的絕對值或平方來度量,高斯隨機變量的峰度為了,而非高斯 峰度或其絕對值在ICA或其它領(lǐng)域度量非高斯性時廣泛應(yīng)用。主要原因是它的計算和理論分析都比較簡單:計算簡單是因為峰度只需要計算樣本數(shù)據(jù)的四階矩;而理論分析簡單是因為以下的線性特性: 其中 這在幾何上意味著 當(dāng)向量 但是,峰度在實際應(yīng)用中也存在一些缺陷,主要原因是峰度對異常值非常敏感。其值可能僅取決于分布尾部的少數(shù)觀測值,這可能是錯誤的或不相關(guān)的觀測。 換句話說,峰度是一種不穩(wěn)定的非高斯性度量。接下來,介紹另一種比峰度優(yōu)越的非高斯性度量方法:負(fù)熵。 4.2.2 負(fù)熵(Negentropy)負(fù)熵是另一種非常重要的非高斯性量度。 負(fù)熵是信息論中熵量的一種概念。熵是信息論中的基本概念,隨機變量的熵可以被解釋為觀察變量包含的信息量。變量越隨機,越不可預(yù)測,那么它的熵越大,更嚴(yán)格的說,熵和隨機變量的編碼長度相關(guān),實際上在某些簡單的假設(shè)下,熵就是隨機變量的編碼長度。隨機變量 其中 在信息論中有個基本的結(jié)論:在所有方差相等的隨機變量中,高斯變量的熵最大。這意味著熵可以作為非高斯性的一種度量,實際上,這表明高斯分布是所有分布中最“隨機”的。隨機變量的分布越集中,其熵越小。為了獲得對于高斯變量為零并且總是非負(fù)的非高斯性度量,通常使用負(fù)熵。負(fù)熵
4.2.3 負(fù)熵的近似(Approximations of negentropy)像上面提到的,負(fù)熵的計算非常困難,因此對比函數(shù)仍然是理論函數(shù)。所以在實際應(yīng)用中經(jīng)常會使用一些負(fù)熵的近似,接下來介紹具有不錯性質(zhì)的負(fù)熵的近似。 傳統(tǒng)的負(fù)熵近似是使用高階矩,像下面這種形式: 假設(shè) 其中 如果 其中 4.3 互信息最小化(Minimization of mutual information)另外一種基于信息論的估計ICA的方法是互信息最小化。接下來將解釋這種方法,并說明它跟上面描述尋找大多數(shù)非高斯方向的方法相似。 4.3.1 互信息(Mutual information)根據(jù)差分熵的概念,我們定義m個隨機變量 互信息是衡量隨機變量之間獨立性的方法,事實上,它等于聯(lián)合密度 互信息一個重要的特性是:我們有一個可逆的線性變換 我們試想一下如果 這意味著 其中 4.3.2 通過互信息定義ICA(Defining ICA by mutual information)因為互信息是信息論中隨機變量獨立性的度量方式,我們可以用它作為尋找ICA變換的準(zhǔn)則。此方法是模型估計的替代方法,我們將隨機向量 4.4 最大似然估計(Maximum likelihood estimation)4.4.1 似然(The likelihood)一種非常流行的估計ICA模型的方法是最大似然估計,它和信息最大化原則相似。接下來將討論這種方法,并表明它的本質(zhì)是和最小化互信息是一樣的。在無噪聲的ICA模型中可以直接表示似然,然后通過最大似然估計來估計模型。 其中 4.4.2 infomax原則(The infomax principle)另一個相關(guān)的對比函數(shù)是從神經(jīng)網(wǎng)絡(luò)的觀點中推導(dǎo)出來的。這是基于最大化具有非線性輸出的神經(jīng)網(wǎng)絡(luò)的輸出熵(或信息流)。假設(shè) 如果 4.4.3 互信息連接(Connection to mutual information)為了研究似然和互信息之間的關(guān)系,考慮log似然函數(shù)的期望,如下: 如果 在實際情況下,我們有很多關(guān)于獨立成分的先驗知識,我們不需要根據(jù)數(shù)據(jù)來估計它們的性質(zhì)。在任何情況下,如果獨立成分的性質(zhì)是錯誤了,那么最大似然估計也會給完全錯誤的結(jié)果。 4.5 ICA與投影跟蹤(ICA and projection pursuit)如何明確ICA與投影跟蹤之間的聯(lián)系。投影跟蹤是在統(tǒng)計學(xué)中發(fā)展起來的一種技術(shù),用于發(fā)現(xiàn)多維數(shù)據(jù)的“有趣的”投影。這樣的投影可用于數(shù)據(jù)的最佳可視化,以及密度估計和回歸等目的。在基本的(1-D)投影跟蹤中,我們試圖找到方向,使數(shù)據(jù)在這些方向上的投影具有有趣的分布,即顯示某種結(jié)構(gòu)。研究者認(rèn)為,高斯分布是最沒有意思的分布,最有趣的方向是那些顯示最低高斯分布的方向,而這正是我們估計ICA模型的方法。 在圖8中可以看到找到這種投影的有用性,其中投影追蹤方向上的投影是水平的,清楚地顯示了數(shù)據(jù)的聚類結(jié)構(gòu)。 在第一個主成分(垂直方向)上的投影沒有顯示出這種結(jié)構(gòu)。 在一般公式中,投影跟蹤可以看做是ICA的變體。特別是,投影追蹤使我們能夠解決獨立分量 5 ICA的預(yù)處理(Preprocessing of ICA)在上一節(jié)中,我們討論了ICA方法的基本統(tǒng)計原理。 基于這些原理的實用算法將在下一節(jié)中討論。 但是,在對數(shù)據(jù)應(yīng)用ICA算法之前,進行一些預(yù)處理通常非常有用。 在本節(jié)中,我們將討論一些預(yù)處理技術(shù),這些技術(shù)可以使ICA估計問題更簡單,條件更好。 5.1 中心化(Centering)最基礎(chǔ)也是最有必要的預(yù)處理是對 5.2 白化(whitening)ICA另一個有用的預(yù)處理策略是對觀測數(shù)據(jù)白化。這意味著在應(yīng)用ICA算法之前(中心化之后),我們對觀測數(shù)據(jù) 一種比較流行的白化的方法是協(xié)方差矩陣 其中 通過白化將混合矩陣轉(zhuǎn)換為 白化的作用在于可以使新的混合矩陣 我們可以看到,通過白化減少了要估計的參數(shù)的數(shù)量,現(xiàn)在我們不需要估計原始矩陣 圖9對圖5中的數(shù)據(jù)進行了白化,如下所示: 定義分布的正方形現(xiàn)在顯然是圖4中原始正方形的旋轉(zhuǎn),剩下的就是估計給出旋轉(zhuǎn)的單個角度。 在接下來的分析中,我們都假設(shè)數(shù)據(jù)經(jīng)過了預(yù)處理:中心化和白化。為了簡單起見,預(yù)處理的數(shù)據(jù)就用 5.3 進一步的預(yù)處理(Further preprocessing)給定數(shù)據(jù)集的ICA成功與否可能會跟特定應(yīng)用的預(yù)處理步驟有關(guān)。比如數(shù)據(jù)中包含時間信號,那么帶通濾波也將會是很有用的。如果我們對觀測信號 現(xiàn)在, 這表明ICA模型依然有效。 6 FastICA算法(The FastICA algorithm)在前面的小節(jié)中,介紹了非高斯性的不同度量方式,也就是ICA估計的目標(biāo)函數(shù)。在實際中,還需要一種最大化對比函數(shù)的算法,如式(25)那樣。這一小節(jié)介紹一種非常有效的最大化方法,這里假設(shè)數(shù)據(jù)都是經(jīng)過預(yù)處理的。 6.1 單元FastICA(FastICA for one unit)首先來看單元FastICA,通過“單元”,我們指的是計算單元,最終是人工神經(jīng)元,具有神經(jīng)元能夠通過學(xué)習(xí)規(guī)則更新的權(quán)值向量 其中 1. 選擇初始的權(quán)值向量 2. 令 3. 令 4. 如果不收斂,就返回步驟2 收斂是指 FastICA推導(dǎo)如下,首先 用牛頓法來解上面的等式,令等式左邊為 為了簡化矩陣,我們對上式中的第一部分取近似,由于數(shù)據(jù)是球形的,一個合理的近似是 通過對上式兩邊同時乘以 6.2 多元FastICA(FastICA for several unit)前面講的單單元算法只是估計一個獨立成分或者一個投影追蹤的方向,為了估計幾個獨立成分,我們需要使用具有權(quán)重向量 實現(xiàn)去相關(guān)的簡單方法是基于類似Gram-Schmidt的去相關(guān)的放縮方案。這意味著需要一個個的估計獨立成分,當(dāng)我們已經(jīng)估計了 然而,在某些應(yīng)用程序中,可能需要使用對稱的去相關(guān),其中沒有向量比其他向量具有“特權(quán)”,這可以通過矩陣平方根法做到,令: 其中 1. 令 重復(fù)步驟2直到收斂 2. 令 步驟一中的范數(shù)可以使用矩陣的任意范數(shù),比如2-范數(shù)。 6.3 FastICA 和最大似然(FastICA and maximum likelihood)最后,給出FastICA和最大似然估計的聯(lián)系。如果我們使用式(43)中的中間公式表達(dá)FastICA,并以矩陣形式寫,我們看到FastICA采用以下形式: 其中 其中 6.4 FastICA的屬性(Properties of the FastICA algorithm)與現(xiàn)有的ICA方法相比,F(xiàn)astICA算法和底層對比度函數(shù)具有許多所需的特性。 1. 在ICA數(shù)據(jù)模型的假設(shè)下,收斂是立方的(或至少是二次的)。 這與基于(隨機)梯度下降方法的普通ICA算法形成對比,其中收斂僅是線性的。 這意味著非常快速的收斂,正如通過對真實數(shù)據(jù)的模擬和實驗所證實的那樣 2. 與基于梯度的算法相反,沒有選擇步長參數(shù)。這意味著該算法易于使用。 3. 該算法使用任何非線性g直接找到(實際上)任何非高斯分布的獨立分量。 這與許多算法形成對比,其中必須首先獲得概率分布函數(shù)的一些估計,并且必須相應(yīng)地選擇非線性。 4. 可以通過選擇合適的非線性g來優(yōu)化該方法的性能。 特別地,可以獲得穩(wěn)健和/或最小方差的算法。 實際上,式(40)中的兩個非線性具有一些最佳性質(zhì) 5. 可以逐個估計獨立分量,這大致相當(dāng)于進行投影追蹤。 這在探索性數(shù)據(jù)分析中很有用,并且在僅需要估計某些獨立組件的情況下減少了該方法的計算負(fù)荷 6. FastICA具有神經(jīng)算法的大部分優(yōu)點:它是并行的,分布式的,計算簡單的,并且需要很少的存儲空間。 只有在不斷變化的環(huán)境中需要快速適應(yīng)性時,隨機梯度法似乎才是優(yōu)選的。 原論文中還涉及到了ICA算法的應(yīng)用:在腦磁圖去除數(shù)據(jù)偽跡中的應(yīng)用;在金融數(shù)據(jù)中發(fā)現(xiàn)隱藏因子;為自然圖像去噪。有興趣的可以去閱讀原文。 參考文獻(xiàn)1. Independent component analysis: algorithms and applications 2. 一個簡單的FastICA示例 http://www./wordpress/2009/11/22/a-simple-fastica-example/ |
|