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

转载 2013年12月03日 10:05:58
1. 问题:

     1、上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢?

     2、经典的鸡尾酒宴会问题(cocktail party problem)。假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音。宴会过后,我们从n个麦克风中得到了一组数据clip_image002,i表示采样的时间顺序,也就是说共得到了m组采样,每一组采样都是n维的。我们的目标是单单从这m组采样数据中分辨出每个人说话的信号。

     将第二个问题细化一下,有n个信号源clip_image004clip_image006,每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么

     clip_image008

     x的意义在上文解释过,这里的x不是一个向量,是一个矩阵。其中每个列向量是clip_image010clip_image012

     表示成图就是

     clip_image014

     这张图来自

     http://amouraux.webnode.com/research-interests/research-interests-erp-analysis/blind-source-separation-bss-of-erps-using-independent-component-analysis-ica/

     clip_image033

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

     令clip_image039,那么clip_image041

     将W表示成

     clip_image042

     其中clip_image044,其实就是将clip_image046写成行向量形式。那么得到:

     clip_image048

2. ICA的不确定性(ICA ambiguities)

     由于w和s都不确定,那么在没有先验知识的情况下,无法同时确定这两个相关参数。比如上面的公式s=wx。当w扩大两倍时,s只需要同时扩大两倍即可,等式仍然满足,因此无法得到唯一的s。同时如果将人的编号打乱,变成另外一个顺序,如上图的蓝色节点的编号变为3,2,1,那么只需要调换A的列向量顺序即可,因此也无法单独确定s。这两种情况称为原信号不确定。

     还有一种ICA不适用的情况,那就是信号不能是高斯分布的。假设只有两个人发出的声音信号符合多值正态分布,clip_image050,I是2*2的单位矩阵,s的概率密度函数就不用说了吧,以均值0为中心,投影面是椭圆的山峰状(参见多值高斯分布)。因为clip_image052,因此,x也是高斯分布的,均值为0,协方差为clip_image054

     令R是正交阵clip_image056clip_image058。如果将A替换成A’。那么clip_image060。s分布没变,因此x’仍然是均值为0,协方差clip_image062

     因此,不管混合矩阵是A还是A’,x的分布情况是一样的,那么就无法确定混合矩阵,也就无法确定原信号。

3. 密度函数和线性变换

     在讨论ICA具体算法之前,我们先来回顾一下概率和线性代数里的知识。

     假设我们的随机变量s有概率密度函数clip_image064(连续值是概率密度函数,离散值是概率)。为了简单,我们再假设s是实数,还有一个随机变量x=As,A和x都是实数。令clip_image066是x的概率密度,那么怎么求clip_image066[1]

     令clip_image039[1],首先将式子变换成clip_image068,然后得到clip_image070,求解完毕。可惜这种方法是错误的。比如s符合均匀分布的话(clip_image072),那么s的概率密度是clip_image074,现在令A=2,即x=2s,也就是说x在[0,2]上均匀分布,可知clip_image076。然而,前面的推导会得到clip_image078。正确的公式应该是

     clip_image080

     推导方法

     clip_image082

     clip_image084

     更一般地,如果s是向量,A可逆的方阵,那么上式子仍然成立。

4. ICA算法

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

     我们假定每个clip_image086有概率密度clip_image088,那么给定时刻原信号的联合分布就是

     clip_image090

     这个公式代表一个假设前提:每个人发出的声音信号各自独立。有了p(s),我们可以求得p(x)

     clip_image092

     左边是每个采样信号x(n维向量)的概率,右边是每个原信号概率的乘积的|W|倍。

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

     clip_image096

     求导后

     clip_image098

     这就是s的密度函数。这里s是实数。

     如果我们预先知道s的分布函数,那就不用假设了,但是在缺失的情况下,sigmoid函数能够在大多数问题上取得不错的效果。由于上式中clip_image100是个对称函数,因此E[s]=0(s的均值为0),那么E[x]=E[As]=0,x的均值也是0。

     知道了clip_image100[1],就剩下W了。给定采样后的训练样本clip_image002[1],样本对数似然估计如下:

     使用前面得到的x的概率密度函数,得

     clip_image101

     大括号里面是clip_image103

     接下来就是对W求导了,这里牵涉一个问题是对行列式|W|进行求导的方法,属于矩阵微积分。这里先给出结果,在文章最后再给出推导公式。

     clip_image105

     最终得到的求导后公式如下,clip_image107的导数为clip_image109(可以自己验证):

     clip_image110

     其中clip_image112是梯度上升速率,人为指定。

     当迭代求出W后,便可得到clip_image114来还原出原始信号。

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

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

5. 实例

     clip_image122

     s=2时的原始信号

     clip_image124

     观察到的x信号

     clip_image126

     使用ICA还原后的s信号

6. 行列式的梯度

     对行列式求导,设矩阵A是n×n的,我们知道行列式与代数余子式有关,

     clip_image127

     clip_image129是去掉第i行第j列后的余子式,那么对clip_image131求导得

     clip_image132

     adj(A)跟我们线性代数中学的clip_image134是一个意思,因此

     clip_image135

斯坦福大学机器学习——主成份分析(Principal Components Analysis)

主成份分析就是求出原始数据矩阵的协方差矩阵对应的特征值和特征向量,对特征值进行由大而小的排序,再根据特征值对应的特征向量进行线性变换,得到新的向量(新的向量间相互正交)。通过设定阈值可以用低维的新向量...
  • linkin1005
  • linkin1005
  • 2014年12月26日 14:28
  • 4104

【机器学习-斯坦福】学习笔记14 主成分分析(Principal components analysis)-最大方差解释

在这一篇之前的内容是《Factor Analysis》,由于非常理论,打算学完整个课程后再写。在写这篇之前,我阅读了PCA、SVD和LDA。这几个模型相近,却都有自己的特点。本篇打算先介绍PCA,至于...
  • u012409883
  • u012409883
  • 2013年12月03日 09:57
  • 1451

因子分析、主成分分析(PCA)、独立成分分析(ICA)——斯坦福CS229机器学习个人总结(六)

因子分析是一种数据简化技术,是一种数据的降维方法。 因子分子可以从原始高维数据中,挖掘出仍然能表现众多原始变量主要信息的低维数据。此低维数据可以通过高斯分布、线性变换、误差扰动生成原始数据。 因子...
  • sinat_37965706
  • sinat_37965706
  • 2017年05月07日 15:44
  • 1285

因子分析、主成分分析(PCA)、独立成分分析(ICA)——斯坦福CS229机器学习个人总结(六)

因子分析是一种数据简化技术,是一种数据的降维方法。 因子分子可以从原始高维数据中,挖掘出仍然能表现众多原始变量主要信息的低维数据。此低维数据可以通过高斯分布、线性变换、误差扰动生成原始数据。 因子...
  • sinat_37965706
  • sinat_37965706
  • 2017年05月07日 15:44
  • 1285

斯坦福大学公开课 :机器学习课程(Andrew Ng)——14、无监督学习:Independent Component Analysis(ICA)

1)问题描述     1、上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢?     2、经典的鸡尾酒宴会问题(cocktai...
  • mmc2015
  • mmc2015
  • 2015年01月06日 19:20
  • 1099

ICA--独立成分分析(Independent Component Analysis)

1. 问题:      1、上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢?      2、经典的鸡尾酒宴会问题(coc...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2013年03月25日 18:35
  • 3598

独立成分分析(Independent Component Analysis)

独立成分分析(Independent Component Analysis) 1. 问题:      1、上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效...
  • ffeng271
  • ffeng271
  • 2012年03月14日 17:24
  • 31919

尝试理解ICA(Independent Component Analysis)独立成分分析

1.从鸡尾酒会问题(cocktail party problem)说起 ICA最早是从神经网络领域开始研究的,为了简单,我们这里从一个经典的例子开始——盲源信号分离(blind signal sepa...
  • u014485485
  • u014485485
  • 2017年11月05日 21:48
  • 184

独立成分分析(Indenpendent Components Analysis)斯坦福公开课讲义

1. 问题:      1、上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢?      2、经典的鸡尾酒宴会问题...
  • riverflowrand
  • riverflowrand
  • 2016年06月12日 14:49
  • 831

[机器学习] UFLDL笔记 - ICA(Independent Component Analysis)(Representation)

本文主要记录我在学习ICA(独立成分分析)过程中的心得笔记,对于ICA模型的理解和疑问,也纠正网络上一些Tutorial、资料和博文中的错误,欢迎大家一起讨论。...
  • walilk
  • walilk
  • 2016年01月06日 13:17
  • 2956
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【机器学习-斯坦福】学习笔记16 独立成分分析(Independent Component Analysis)
举报原因:
原因补充:

(最多只允许输入30个字)