独立成分分析ICA原理

独立成分分析ICA原理

一 简介

​ 经典的鸡尾酒宴会问题(cocktail party problem): 假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音。

​ 宴会过后,我们从n个麦克风中得到了一组数据 x ( i ) ( x 1 ( i ) , x 2 ( i ) , ⋯   , x n ( i ) ) , i = 1 , ⋯   , m x^{(i)} (x_1^{(i)},x_2^{(i)},\cdots,x_n^{(i)}),i=1,\cdots,m x(i)(x1(i),x2(i),,xn(i)),i=1,,m i i i 表示采样的时间顺序,也就是说共得到了 m m m 组采样,每一组采样都是 n n n 维的。我们的目标是单单从这 m m m 组采样数据中分辨出每个人说话的信号。

​ 将第二个问题细化一下,有 n n n 个信号源 s ( s 1 , s 2 , ⋯   , s n , s ∈ R ) s(s_1,s_2,\cdots,s_n, s \in \mathbb R) s(s1,s2,,sn,sR) , 每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号 s s s,那么
X = A s X = As X=As
X X X的意义在上文解释过,这里的 X X X不是一个向量,是一个矩阵。其中每个列向量是 x ( i ) , x ( i ) = A s ( i ) x^{(i)},x^{(i)} = As^{(i)} x(i),x(i)=As(i)
clip_image033

x ( i ) x^{(i)} x(i)的每个分量都由 s ( i ) s^{(i)} s(i) 的分量线性表示。A和 s 都是未知的,X是已知的,我们要想办法根据X来推出s。这个过程也称作为盲信号分离。

​ 令 W = A − 1 W= A^{-1} W=A1 ,则 s ( i ) = A − 1 x ( i ) s^{(i)} = A^{-1} x^{(i)} s(i)=A1x(i) ,将W表示如下:
W = [ − w 1 T − − w 2 T − . . . − w n T − ] W= \begin{bmatrix} -w_1^T- \\ -w_2^T- \\ . \\ . \\ . \\ -w_n^T- \\ \end{bmatrix} W=w1Tw2T...wnT
​ 那么,有 s j ( i ) = w j T x ( i ) s_j^{(i)} = w_j^T x^{(i)} sj(i)=wjTx(i)

二 ICA 算法

​ ICA算法归功于Bell和Sejnowski,这里使用最大似然估计来解释算法,原始的论文中使用的是一个复杂的方法Infomax principal。

​ 我们假定每个 s j s_j sj 有概率密度 p s p_s ps 那么给定时刻原信号的联合分布就是
p ( s ) = ∏ j = 1 n p s ( s j ) p(s) = \prod\limits_{j=1}^n p_s(s_j) p(s)=j=1nps(sj)

​ 这个公式代表一个假设前提:每个人发出的声音信号各自独立。有了p(s),我们可以求得第 i i i 个时间段每个麦克风收集到声音的概率密度p(x)
p ( x ) = p s ( W x ) ∣ W ∣ = ∣ W ∣ ∏ j = 1 n p s ( w j T x ) p(x) = p_s(Wx)|W| = |W|\prod\limits_{j=1}^np_s(w_j^Tx) p(x)=ps(Wx)W=Wj=1nps(wjTx)
​ 左边是每个采样信号X(n维向量)的概率,右边是每个原信号概率的乘积的|W|倍。

前面提到过,如果没有先验知识,我们无法求得W和s。因此我们需要知道 p s ( s j ) p_s(s_j) ps(sj),我们打算选取一个概率密度函数赋给s,但是我们不能选取高斯分布的密度函数。在概率论里我们知道密度函数p(x)由累计分布函数(cdf)F(x)求导得到。F(x)要满足两个性质是:单调递增和在[0,1]。我们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。我们假定s的累积分布函数符合sigmoid函数:
g ( s ) = 1 1 + e − s g(s) = \frac{1}{1+e^{-s}} g(s)=1+es1
​ 求导后
p s ( s ) = g ′ ( s ) = e s ( 1 + e s ) 2 p_s(s) = g'(s) = \frac{e^s}{(1+e^s)^2} ps(s)=g(s)=(1+es)2es

l n g ′ ( s ) = 1 − 2 g ( s ) lng'(s) = 1 - 2g(s) lng(s)=12g(s)

p s ( s ) p_s(s) ps(s) 是s的概率密度函数,这里s是实数,如果我们预先知道s的分布函数,那就不用假设了,但是在缺失的情况下,sigmoid函数能够在大多数问题上取得不错的效果。

​ 知道了 p s ( s ) p_s(s) ps(s),就剩下W了。给定采样后的训练样本 x ( i ) ( x 1 ( i ) , x 2 ( i ) , ⋯   , x n ( i ) ) , i = 1 , ⋯   , m x^{(i)} (x_1^{(i)},x_2^{(i)},\cdots,x_n^{(i)}),i=1,\cdots,m x(i)(x1(i),x2(i),,xn(i)),i=1,,m
整个前提是每个时间段的不同生源是相互独立的,同一个生源信号接收器在不同时间段也是相互独立的。
样本对数似然估计如下:

用s的分布函数的导数表示s的概率密度函数:
p ( x ( i ) ) = ∣ W ∣ ∏ j = 1 n p s ( w j T x ( i ) ) = ∇ ∣ W ∣ ∏ j = 1 n g ′ ( w j T x ( i ) ) p(x^{(i)}) = |W|\prod\limits_{j=1}^np_s(w_j^Tx^{(i)}) \\ = \nabla_{|W|}\prod\limits_{j=1}^ng'(w_j^Tx^{(i)}) \\ p(x(i))=Wj=1nps(wjTx(i))=Wj=1ng(wjTx(i))
求n个麦克风在各个频段收集到声音信号的概率密度:
∏ i = 1 m ∇ ∣ W ∣ ∏ j = 1 n g ′ ( w j T x ( i ) ) \prod\limits_{i=1}^{m} \nabla_{|W|}\prod\limits_{j=1}^ng'(w_j^Tx^{(i)}) i=1mWj=1ng(wjTx(i))
线性形式的行列式的求导公式:
∂ d e t ( X ) ∂ X = ( X ∗ ) T = d e t ( X ) ( X − 1 ) T \frac{\partial{det(X)}}{\partial{X}} = (X^*)^T = det(X)(X^{-1})^T Xdet(X)=(X)T=det(X)(X1)T
所以
∇ ∣ W ∣ = d e t ( W ) ( W − 1 ) T = ∣ W ∣ ( W − 1 ) T ⇒ l n ′ ( ∣ W ∣ ( W − 1 ) T ) = ( W − 1 ) T \nabla_{|W|} = det(W)(W^{-1})^T = |W|(W^{-1})^T \\ \Rightarrow ln'(|W|(W^{-1})^T) =(W^{-1})^T W=det(W)(W1)T=W(W1)Tln(W(W1)T)=(W1)T
构造样本对数似然函数:
ℓ ( W ) = l n ( ∏ i = 1 m ( ∇ ∣ W ∣ ∏ j = 1 n g ′ ( w j T x ( i ) ) ) ) = ∑ i = 1 m l n ( ∇ ∣ W ∣ ∑ j = 1 n g ′ ( w j T x ( i ) ) ) = ∑ i = 1 m ( ∑ j = 1 n l n g ′ ( w j T x ( i ) ) + l n ∣ W ∣ ) ) \ell (W) = ln(\prod\limits_{i=1}^{m}( \nabla_{|W|}\prod\limits_{j=1}^ng'(w_j^Tx^{(i)}) ) )\\ = \sum\limits_{i=1}^m ln(\nabla_{|W|}\sum\limits_{j=1}^ng'(w_j^Tx^{(i)})) \\ = \sum\limits_{i=1}^m (\sum\limits_{j=1}^nln g'(w_j^Tx^{(i)}) + ln|W| )) \\ (W)=ln(i=1m(Wj=1ng(wjTx(i))))=i=1mln(Wj=1ng(wjTx(i)))=i=1m(j=1nlng(wjTx(i))+lnW))
然后再用梯度上升法求W:
W : = W + α ( [ 1 − 2 g ( w 1 T x ( i ) ) 1 − 2 g ( w 2 T x ( i ) ) ⋮ 1 − 2 g ( w n T x ( i ) ) ] x ( i ) T + ( W − 1 ) T ) W := W + \alpha \left( \begin{array}{ccc} \begin{bmatrix} 1 - 2g(w_1^Tx^{(i)}) \\ 1 - 2g(w_2^Tx^{(i)}) \\ \vdots \\ 1 - 2g(w_n^Tx^{(i)}) \end{bmatrix} \end{array}x^{(i)T } + (W^{-1})^T \right) W:=W+α12g(w1Tx(i))12g(w2Tx(i))12g(wnTx(i))x(i)T+(W1)T
​ 其中 α \alpha α是梯度上升速率。当迭代求出W后,便可得到 s ( i ) = W x ( i ) s^{(i)} = W x^{(i)} s(i)=Wx(i)来还原出原始信号。

注意 : 我们计算最大似然估计时,假设了 x ( i ) x^{(i)} x(i) x ( j ) x^{(j)} x(j) 之间是独立的,然而对于语音信号或者其他具有时间连续依赖特性(比如温度)上,这个假设不能成立。但是在数据足够多时,假设独立对效果影响不大,同时如果事先打乱样例,并运行随机梯度上升算法,那么能够加快收敛速度。

​ 回顾一下鸡尾酒宴会问题,s是人发出的信号,是连续值,不同时间点的s不同,每个人发出的信号之间独立 s i s_i si s j s_j sj之间独立)。s的累计概率分布函数是sigmoid函数,但是所有人发出声音信号都符合这个分布。A(W的逆阵)代表了s相对于x的位置变化,x是s和A变化后的结果。

Reference:

【机器学习-斯坦福】学习笔记16 独立成分分析(Independent Component Analysis)

吴恩达机器学习课程之ICA

独立成分分析 ( ICA ) 与主成分分析 ( PCA ) 的区别在哪里?(知乎)

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值