在信号处理中,独立分量分析(ICA)是一种将多变量信号分离成相加子分量的计算方法。这是通过假设子分量是非高斯信号并且它们彼此在统计上是独立的来实现的。ICA是盲源分离的一种特殊情况。一个常见的例子是在嘈杂的房间里听一个人的演讲时的“鸡尾酒会问题”。

Independent Component Analysis/ICA简介

独立分量分析试图将多变量信号分解成独立的非高斯信号。例如,声音通常是由来自多个源的信号在每个时刻t的数值相加组成的信号。接下来的问题是,是否有可能将这些贡献的源与观测到的总信号分开。当统计独立性假设正确时,对混合信号进行盲ICA分离可以得到很好的结果。[引文需要]它也用于不应该通过混合产生用于分析的信号。

ICA的一个简单应用是“鸡尾酒会问题”,其中基本语音信号与由在房间内同时讲话的人组成的样本数据分离。通常通过假设没有时间延迟或回声来简化问题。注意,经过滤波和延迟的信号是相关分量的副本,因此不违反统计独立性假设。

需要考虑的一个重要注意事项是,如果存在{textstyle N}{textstyle N}源,则需要至少{textstyle N}{textstyle N}观测来恢复原始信号。这构成了矩阵是正方形的情况({textstyle J=D}{textstyle J=D},其中{textstyle D}{textstyle D}{textyleD}是数据的输入维度,{textstyle J}{textyleJ}是模型的维度)。研究了未确定({textstyle J>D}{textstyle J>D})和超确定({textstyle J<D}{textstyle J<D})的其他情况。


基于混合源信号的两个假设和三种效应,对混合信号进行ICA分离可以得到很好的结果。两个假设:


源信号彼此独立。


每个源信号中的值具有非高斯分布。


三混合信号源的影响:


独立性:根据假设1,源信号是独立的;然而,它们的信号混合不是。这是因为信号混合物共享相同的源信号。


正态性:根据中心极限定理,具有有限方差的独立随机变量和的分布趋向于高斯分布。


松散地说,两个独立的随机变量之和通常具有比两个原始变量中的任何一个更接近高斯的分布。在这里,我们考虑每个信号的值作为随机变量。


复杂性:任何信号混合物的时间复杂度大于其最简单的组成源信号。


这些原则有助于ICA的基本建立。如果我们碰巧从一组混合信号中提取的信号是像源信号一样独立的,并且具有非高斯直方图或者像源信号一样具有低复杂度,那么它们必须是源信号。

盲源信号分离问题

引入:鸡尾酒会问题

设想在一个鸡尾酒会中,所有的人都在交谈,而我们所希望听到的可能只是其中一个人到谈话内容,这时候我们就会将注意力集中到这个人说话到声音中,辨析出他说话的内容。对于人类的听觉系统可能这并非特别难到事情,但是这却是语音识别领域的一个较为困难的课题。

盲源信号分离

实际上,这就是一个信源盲源分离(Blind Source Seperation)的问题,如图所示:



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第1张 


x是我们接收到到信号,而我们希望得到的是s中到某一项。x 和 s 之间存在一个线性映射关系A,称为“混合矩阵”(mixing matrix) ,即 x = As ,如果在鸡尾酒会的场景下,a11 等元素可能表达的是说话人跟听话人距离的远近,越远则声音中这个分量就越小。之所以是“盲”分离,是因为我们对于矩阵A不知道,对于s也不知道,因此我们需要同时估计出A和s,从而将s找到。(如果A是可逆方阵则可以是 s=A1x )我们可以利用到的先验知识即这些 s 应该尽量不相关。



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第2张 


PCA 和 ICA

众所周知,PCA(Principal Component Analysis,主成分分析)是数据处理中的一个常用方法。可以用于数据降维,提特征等,其实际上就是将在原有的特征空间中分布的数据映射到新的特征空间,或者说,将原有到正交坐标系进行旋转,使得在旋转后的坐标系下,在某几根坐标轴上数据分布的方差比较大,我们也就可以认为在这些特征上,不同数据区分度比较高,最高的我们称为第一主成份,按照大小顺序依次第二主成份,第三主成份…等等,到了最后,可能某些坐标轴上所有数据的取值都是一样的(PCA之前一般要作归一化,把数据的分布移动到以原点为中心来,这样的话,那些坐标轴几乎所有样本数据都取值为0),这就相当于在三维空间中放置了一张二维的平面,加入我们把坐标轴xyz移动到xOy与平面重合,那么法向量z就可以去掉,因为z上到值对于信息表征没有任何意义,所以对于高维数据,我们可以根据需要选择使用前面到几个最大K个特征值,而不是之前的所有特征,这就是PCA降维的原理。经过PCA分解以后的分量都是正交的,因此是不相关的,但是不能保证独立。

对于数据向量而言,PCA实际上是为了满足上面到目的,做了一个线性变换。而我们的ICA(Independent Component Analysis,独立分量分析) 实际上也是对数据在原有特征空间中做的一个线性变换。相对于PCA这种降秩操作,即可以用作压缩到降维方式,ICA并不是通过在不同方向上方差的大小,即数据在该方向上的分散程度来判断那些是主要成分,那些是不需要到特征。相反,ICA并没有设定一个所谓主要成分和次要成分,ICA认为所有的成分同等重要,而我们的目标并非将重要特征提取出来,而是找到一个线性变换,使得变换后的结果具有最强的独立性,而PCA中的不相关太弱,我们希望数据的各阶统计量都能利用,即我们利用大于2的统计量来表征。而且,ICA并不要求特征是正交的。如图所示:



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第3张 


对于两个都服从均匀分布到数据来说,PCA 和 ICA 的比较如下:



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第4张 


那么,如何才能将数据空间旋转到在轴上的分布最具有独立性呢?考虑 中心极限定理(Central Limit Theorem) : Average of many independent random variables will have a distribution that is close(r) to gaussian。也就是说,多个独立随机变量混合之后会趋向于高斯分布,那么我们可以认为,越是混合的变量,越是Gaussian,越是独立的,则Gaussian性越弱。因此,我们利用非高斯性(Nongaussianity)来度量信号之间的独立性。具体可以用峰度(kurtosis)或者KL散度。 我们知道 KL-divergence 可以用来衡量两个概率分布的相似程度,因此可以计算出当前分布与高斯的相异程度。 kurtosis (from Greek : κυρτόςkyrtos or kurtos, meaning “curved, arching”)是随机变量的四阶标准矩



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第5张 


对于单峰的分布,该统计量表征的是分布的pdf的峰的尖锐程度。(不过此处有争议,有文章指出,kurtosis表征的是尾部而非尖峰【Kurtosis tells you virtually nothing about the shape of the peak - its only unambiguous interpretation is in terms of tail extremity; i.e., either existing outliers (for the sample kurtosis) or propensity to produce outliers (for the kurtosis of a probability distribution).】)这个量有个好处,就是对于所有的正态分布,kurtosis都是3 (这也说明了ICA处理不了高斯分布之和的情况,因为高斯分布本身所蕴涵的内容太少,只要确定1和2阶矩,正态分布就能给定,所以ICA的算法在作推导的时候要假设source是非高斯的,当然还有一个自然的假设就是信源mutually independent)。因此常用 excess kurtosis 计算,即上面计算得到的kurtosis - 3。将 excess kurtosis 分成三类:等于0的叫做mesokurtic,正数的叫做leptokurtic(lepto- means slender),负数的叫做platykurtic (platy- means broad)。几个常见分布的excess kurtosis如下图:



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第6张 


ICA的优化算法有:基于Gradient method 的 “infomax”;Fixed-point algorithom 的 FastICA。此一节暂从略。给出一个FastICA的结果,感觉还不错:

开始是这样的



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第7张 


然后慢慢随着迭代,分开咯:



 独立成分分析 Independent Component Analysis/ICA 人工智能算法大全_AI算法 第8张 


问题背景以及基本原理和思路如上。之后读 Independent Component Analysis : Algorithms and Applications 并整理笔记。

THE END

参考资料:

独立分量分析(Independent Component Analysis)-CSDN

Independent component analysis - Wikipedia