独立成分分析ICA原理
一 简介
经典的鸡尾酒宴会问题(cocktail party problem): 假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音。
宴会过后,我们从n个麦克风中得到了一组数据 x(i)(x1(i),x2(i),⋯,xn(i)),i=1,⋯,m ,i 表示采样的时间顺序,也就是说共得到了 m 组采样,每一组采样都是 n 维的。我们的目标是单单从这 m 组采样数据中分辨出每个人说话的信号。
将第二个问题细化一下,有 n 个信号源 s(s1,s2,⋯,sn,s∈R) , 每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号 s,那么
X=As
X的意义在上文解释过,这里的 X不是一个向量,是一个矩阵。其中每个列向量是x(i),x(i)=As(i) 。

x(i)的每个分量都由 s(i) 的分量线性表示。A和 s 都是未知的,X是已知的,我们要想办法根据X来推出s。这个过程也称作为盲信号分离。
令W=A−1 ,则s(i)=A−1x(i) ,将W表示如下:
W=⎣⎢⎢⎢⎢⎢⎢⎡−w1T−−w2T−...−wnT−⎦⎥⎥⎥⎥⎥⎥⎤
那么,有sj(i)=wjTx(i) 。
二 ICA 算法
ICA算法归功于Bell和Sejnowski,这里使用最大似然估计来解释算法,原始的论文中使用的是一个复杂的方法Infomax principal。
我们假定每个 sj 有概率密度ps 那么给定时刻原信号的联合分布就是
p(s)=j=1∏nps(sj)
这个公式代表一个假设前提:每个人发出的声音信号各自独立。有了p(s),我们可以求得第 i 个时间段每个麦克风收集到声音的概率密度p(x)
p(x)=ps(Wx)∣W∣=∣W∣j=1∏nps(wjTx)
左边是每个采样信号X(n维向量)的概率,右边是每个原信号概率的乘积的|W|倍。
前面提到过,如果没有先验知识,我们无法求得W和s。因此我们需要知道 ps(sj),我们打算选取一个概率密度函数赋给s,但是我们不能选取高斯分布的密度函数。在概率论里我们知道密度函数p(x)由累计分布函数(cdf)F(x)求导得到。F(x)要满足两个性质是:单调递增和在[0,1]。我们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。我们假定s的累积分布函数符合sigmoid函数:
g(s)=1+e−s1
求导后
ps(s)=g′(s)=(1+es)2es
lng′(s)=1−2g(s)
ps(s) 是s的概率密度函数,这里s是实数,如果我们预先知道s的分布函数,那就不用假设了,但是在缺失的情况下,sigmoid函数能够在大多数问题上取得不错的效果。
知道了ps(s),就剩下W了。给定采样后的训练样本x(i)(x1(i),x2(i),⋯,xn(i)),i=1,⋯,m,
整个前提是每个时间段的不同生源是相互独立的,同一个生源信号接收器在不同时间段也是相互独立的。
样本对数似然估计如下:
用s的分布函数的导数表示s的概率密度函数:
p(x(i))=∣W∣j=1∏nps(wjTx(i))=∇∣W∣j=1∏ng′(wjTx(i))
求n个麦克风在各个频段收集到声音信号的概率密度:
i=1∏m∇∣W∣j=1∏ng′(wjTx(i))
线性形式的行列式的求导公式:
∂X∂det(X)=(X∗)T=det(X)(X−1)T
所以
∇∣W∣=det(W)(W−1)T=∣W∣(W−1)T⇒ln′(∣W∣(W−1)T)=(W−1)T
构造样本对数似然函数:
ℓ(W)=ln(i=1∏m(∇∣W∣j=1∏ng′(wjTx(i))))=i=1∑mln(∇∣W∣j=1∑ng′(wjTx(i)))=i=1∑m(j=1∑nlng′(wjTx(i))+ln∣W∣))
然后再用梯度上升法求W:
W:=W+α⎝⎜⎜⎜⎛⎣⎢⎢⎢⎡1−2g(w1Tx(i))1−2g(w2Tx(i))⋮1−2g(wnTx(i))⎦⎥⎥⎥⎤x(i)T+(W−1)T⎠⎟⎟⎟⎞
其中 α是梯度上升速率。当迭代求出W后,便可得到 s(i)=Wx(i)来还原出原始信号。
注意 : 我们计算最大似然估计时,假设了 x(i)与 x(j) 之间是独立的,然而对于语音信号或者其他具有时间连续依赖特性(比如温度)上,这个假设不能成立。但是在数据足够多时,假设独立对效果影响不大,同时如果事先打乱样例,并运行随机梯度上升算法,那么能够加快收敛速度。
回顾一下鸡尾酒宴会问题,s是人发出的信号,是连续值,不同时间点的s不同,每个人发出的信号之间独立 si 和sj之间独立)。s的累计概率分布函数是sigmoid函数,但是所有人发出声音信号都符合这个分布。A(W的逆阵)代表了s相对于x的位置变化,x是s和A变化后的结果。
Reference:
【机器学习-斯坦福】学习笔记16 独立成分分析(Independent Component Analysis)
吴恩达机器学习课程之ICA
独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别在哪里?(知乎)