這一節(jié)的主題是獨立成分分析(Independent Components Analysis, ICA)。和PCA的降維思路不同,ICA主要解決的是找到數(shù)據(jù)背后的“獨立”成分。我們從一個雞尾酒會問題開始說起戳稽。
在一個雞尾酒會中假設有n個人同時說話,屋子里的n個麥克風記錄著這n個人說話時疊加的聲音痹仙。由于每個麥克風離人的距離不同是尔,它所采集到的聲音是不同的,但都是這n個人聲音的一種組合开仰。那么問題是根據(jù)這些采集到的聲音拟枚,我們是否可以還原每個人說話的聲音?
該問題可以形式化地描述為众弓,從n個獨立的數(shù)據(jù)源s ∈ Rn中我們觀察到了疊加數(shù)據(jù)x恩溅,其中x可以表示為:
其中A是一個未知的方陣,我們稱為混合矩陣(mixing matrix)谓娃。我們觀察到的數(shù)據(jù)是{x(i); i=1,...,n}脚乡,我們的目標是求出源數(shù)據(jù){s(i); i=1,...,n}。
在雞尾酒會問題中滨达,s(i)是個n維向量奶稠,sj(i)表示第j個人在i時刻發(fā)出的聲音。同樣捡遍,x(i)也是個n維向量锌订,xj(i)表示第j個麥克風在i時刻采集到的聲音。
令W = A-1表示解析矩陣(unmixing matrix)画株,我們只需要求出W辆飘,然后根據(jù)s(i) = Wx(i)就能求出s(i)。為了簡化描述谓传,我們用wiT表示W(wǎng)的第i行蜈项,因此W可表示為:
ICA的不確定性
如果我們對源數(shù)據(jù)和混合矩陣沒有任何先驗知識的話,在求混合矩陣的過程中會存在不確定性良拼。
第一個不確定性來自于源數(shù)據(jù)的順序战得。當源數(shù)據(jù)的順序交換后,對混合矩陣的列之間進行對應的交換能夠保證生成同樣的數(shù)據(jù)庸推。
第二個不確定性來自于對源數(shù)據(jù)的縮放常侦。假設我們用2A來替代A浇冰,0.5s(i)替代s(i),那么x(i) = 2A · 0.5s結(jié)果不變聋亡,因而s(i)和A的值不是唯一確定的肘习。
第三個不確定性來自于源數(shù)據(jù)不能是高斯分布的。如果源數(shù)據(jù)s(i)是高斯分布的坡倔,我們可以證明混合矩陣A不是唯一的漂佩。證明如下:
令R是任意正交矩陣(orthogonal matrix),因而RRT = I罪塔。令A' = AR并將A替換成A'投蝉,那么x' = A's,并且x'也是高斯分布的征堪,其均值為0瘩缆,方差為E[x'(x')T] = E[A'ssT(A')T] = E[ARssT(AR)T] = ARRTAT = AAT。也就是說佃蚜,無論是A還是A'庸娱,我們觀察到的數(shù)據(jù)都是服從N(0, AAT)的高斯分布,因此我們沒法區(qū)分混合矩陣究竟是A還是A'谐算。
密度函數(shù)和線性變換
在推導ICA算法之前熟尉,我們先討論線性變換后的密度函數(shù)。
假設隨機變量s的概率密度函數(shù)為ps(s)洲脂,另一個隨機變量x = As斤儿,其中A是一個可逆的方陣,x的概率密度函數(shù)是px腮考,那么px為:
其中W = A-1雇毫。
ICA算法
現(xiàn)在我們正式推導ICA算法,這個算法主要歸功于Bell和Sejnowski踩蔚,但我們這里使用最大似然估計法來進行解釋棚放。算法原始的版本用了一種更為復雜的方法,但對于目前我們理解ICA算法不是必要的馅闽。
假設每個源數(shù)據(jù)s(i)的概率密度函數(shù)是ps飘蚯,那么它們的聯(lián)合分布為:
這里我們假設每個源數(shù)據(jù)都是互相獨立的。再根據(jù)上一節(jié)的公式福也,由于有x = As這樣的線性變換局骤,所以:
前面提過如果沒有任何先驗知識,W和s是無法唯一確定的暴凑,因此我們這里對s的概率密度函數(shù)做一定假設峦甩,同時根據(jù)前面討論ps(s)不能是高斯分布的。我們知道密度函數(shù)可以通過對累計分布函數(shù)求導獲得,而累計分布函數(shù)必須是在0到1之間單調(diào)遞增的函數(shù)凯傲,因此我們可以選取sigmoid函數(shù)作為默認的累計分布函數(shù)犬辰。所以ps(s) = g'(s),其中g(shù)(s) = 1 / (1 + e-s)冰单。
確定了ps(s)后幌缝,W是模型里唯一需要求解的參數(shù)了。給定訓練數(shù)據(jù)集{x(i); i=1,...,n}诫欠,通過最大似然估計法可得:
對l(W)求導并且根據(jù)?W|W| = |W|(W-1)T的事實涵卵,我們可得:
其中α是學習率。
算法收斂后即可得到參數(shù)W荒叼,然后通過s(i) = Wx(i)就能還原出源數(shù)據(jù)了轿偎。
總結(jié)
- 獨立成分分析(ICA)算法可以用于求解類似雞尾酒會類型的問題,在已知疊加數(shù)據(jù)的情況下還原出源數(shù)據(jù)
參考資料
- 斯坦福大學機器學習課CS229講義 Independent Components Analysis
- 網(wǎng)易公開課:機器學習課程 雙語字幕視頻