Independent Components Analysis:独立成分分析

1. 引言

与 PCA 类似,Independent Components Analysis(ICA)同样是要找到一组新基去表示数据。但是目标大不相同。

为了阐述动机,举一个例子,考虑“鸡尾酒会问题”。

在酒会上,有 n 个演讲者同时讲话,房间里面的每一个麦克风都会记录所有演讲者声音混合起来的音频,但是由于每一个麦克风距离每一个演讲者的距离都不一样,所以没一个麦克风记录的混合音频是不一样的,那么用这些麦克风录下来的混合音频数据,我们能否将每一个演讲者的声音都区分出来呢?

为了方便讨论,假设某个数据  是由 n 个独立的数据源而产生的。我们观察到的是:

x = As 

这里矩阵 A 是方阵,被称作混合矩阵。重复观察或者记录 m 次,就可以得到一个数据集{x(i); i = 1, 2, ... , m},我们的目标是利用已经产生的数据( x(i) = As(i) )去恢复出数据源 s(i).



在“鸡尾酒会问题”中,s(i) 是一个 n 维的向量 ,  是第 j 个演讲者在 时间点 i 所发出的声音;同样, x(i) 也是一个 n 维向量, 是第 j 个麦克风在时间点 i 所记录的音频数据。

W = A-1 为解混合矩阵. 我们的目标就是找到 W, 这样给出麦克风的录音数据 x(i) ,就可以通过 s(i) = Wx(i) 来恢复出数据源. 为了表示方便,令  表示 W 的第 i 行,所以有:

因此,,第 j 个数据源可以通过计算  恢复出来.



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

如果没有数据源和混合矩阵的先验知识,不难看出,在只给出观察数据 x 的情况下,A 中存在的一些不确定性会使得数据源不可能得到恢复.

  • 特别是,令 P 是任意一个 n×n置换矩阵(permutation matrix). 这就意味着 矩阵 P 的每一行和每一列有且只有一个元素为1,其它元素均为0. 下面是一些置换矩阵的例子:

  如果 z 是一个向量,那么 Pz 就会返回一个 z 中坐标经过置换后的版本的向量,具体如何置换取决于 1 所在 P 中位置.

  所以在只有 x 的情况下,没法区分 WPW. 所以解混合矩阵无法确定,数据源也就无法确定. 幸运的是,这种问题,即如何对应的问题在大多数应用中都无关紧要.

  • 而且,没法得到正确的混合矩阵 A,例如如果用 2A 代替 A, 然后用 0.5s(i) 代替 s(i) ,然后观测数据 x(i) = 20.5s(i) 是一样的. 也就是说我们恢复出的数据源前面的系数无法确定,可能会是真正数据源的任意倍数. 但是对于“鸡尾酒会问题”这个不确定性也不重要,因为前面的系数仅仅代表着演讲者的声音大小,不影响数据的恢复.

已经证明,只要数据源不是高斯分布的数据,ICA 的不确定性也仅仅就来源于上面讨论的两方面.

那么对于高斯数据,考虑有两个数据源,即 n = 2, s~N(0, I ). 其中 I 是 一个2×2的单位矩阵.现在,假设观察到某个数据 x = As, A是混合矩阵,显然 x 也服从高斯分布, 且均值为0, 协方差E(xxT) = E(AssTAT) = AAT . 令 R 为任意的正交矩阵,即 RRT = RTR = 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‘,观测数据都服从高斯分布 N(0, AAT), 于是难以分辨数据源的混合到底是用了 A 还是 A‘ . 可以看出,存在一个任意的转置成分(例子中的R)不是数据决定的,所以无法恢复出数据源.

上面的讨论是基于多元标准正态分布的转置对称性(目前还没搞定什么是转置对称).尽管如此,只要不是高斯数据,可以证明,在有足够数据的情况下,ICA都有可能恢复出 n 个独立的数据源.



3. 密度函数和线性变换

在正式讨论ICA算法之前,首先简要地讨论线性变换对密度函数的影响.

假设随机变量 s 是通过密度函数 ps(s) 采样而来, 假设 s 是一个实数. 另一个随机变量 xx = As 得出. 用 px 表示 x 的密度函数,下面来求出这个密度函数.

先看一个简单的例子,令 s~Uniform[0,1], 那么 s 的概率密度ps(s) = 1{0 ≤ ≤ 1}.令A = 2,那么 x = 2s. 显然,x 服从[0,2]之间的均匀分布,密度函数 px(x) = (0.5)1{0 ≤ ≤ 2},注意A-1 = 0.5.

更一般地,令 W = A-1 , 计算 x 的密度函数:

px(x)  = ps(Wx)|W|



4. ICA 算法

假设每一个数据源 si 由密度函数 ps 给出,数据源 s 的联合分布:

注意上面式子之所以成立是因为假设数据源是彼此独立的.

根据上面讨论的密度函数和线性变换的关系以及根据 x = As = W-1s

回忆概率论的知识,对于一个连续实数的随机变量 z, 它的分布函数 F 的定义:

所以变量 z 的密度函数就是它的分布函数的导数:

所以,为了找到一个具体的 s 的密度函数 ps(s), 只要能找到它的分布函数即可. 分布函数是由0到1的单调递增函数,由前面的讨论知道这个分布函数不能取高斯分布函数.

通常取 sigmoid 函数:作为默认的分布函数,所以.

方阵 W 是我们模型的参数,给定训练集,那么参数的似然函数:

接下来就是最大化这个参数 W 的似然函数,利用,推导出参数的更新规则,对于训练样本x(i) :

其中α 是学习率.

等到算法收敛之后,计算 s(i) = Wx(i) 就可以恢复出数据源的数据了.

时间: 2024-11-05 11:54:28

Independent Components Analysis:独立成分分析的相关文章

斯坦福ML公开课笔记15—隐含语义索引、神秘值分解、独立成分分析

斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析). PCA是一种直接的降维方法.通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果. 本文继续PCA的话题,包含PCA的一个应用--LSI(Latent Semantic Indexing, 隐含语义索引)和PCA的一个实现--SVD(Singular Value Decomposition,神秘值分解). 在SVD和LSI结束之后.关于PCA的内容就告一段落. 视频的后半段開始讲无监督学习的一种--IC

斯坦福ML公开课笔记15—隐含语义索引、奇异值分解、独立成分分析

斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析).PCA是一种直接的降维方法,通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果. 本文继续PCA的话题,包括PCA的一个应用--LSI(Latent Semantic Indexing, 隐含语义索引)和PCA的一个实现--SVD(Singular Value Decomposition,奇异值分解).在SVD和LSI结束之后,关于PCA的内容就告一段落.视频的后半段开始讲无监督学习的一种--ICA(I

【转载】独立成分分析(Independent Component Analysis)ICA

独立成分分析(Independent Component Analysis) 1. 问题: 1.上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢? 2.经典的鸡尾酒宴会问题(cocktail party problem).假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音.宴会过后,我们从n个麦克风中得到了一组数据,i表示采样的时间顺序,也就是说

[转]独立成分分析(Independent Component Analysis)

原文地址:http://www.cnblogs.com/jerrylead/archive/2011/04/19/2021071.html 独立成分分析(Independent Component Analysis) 1. 问题: 1.上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢? 2.经典的鸡尾酒宴会问题(cocktail party problem).假设在party中有n个人,他们可以同时说话,我们也在房间中一些

机器学习 —— 基础整理(四):特征提取之线性方法——主成分分析PCA、独立成分分析ICA、线性判别分析LDA

本文简单整理了以下内容: (一)维数灾难 (二)特征提取--线性方法 1. 主成分分析PCA 2. 独立成分分析ICA 3. 线性判别分析LDA (一)维数灾难(Curse of dimensionality) 维数灾难就是说当样本的维数增加时,若要保持与低维情形下相同的样本密度,所需要的样本数指数型增长.从下面的图可以直观体会一下.当维度很大样本数量少时,无法通过它们学习到有价值的知识:所以需要降维,一方面在损失的信息量可以接受的情况下获得数据的低维表示,增加样本的密度:另一方面也可以达到去噪

Andrew Ng机器学习公开课笔记–Independent Components Analysis

网易公开课,第15课 notes,11 参考, PCA本质是旋转找到新的基(basis),即坐标轴,并且新的基的维数大大降低 ICA也是找到新的基,但是目的是完全不一样的,而且ICA是不会降维的 对于ICA,最经典的问题,"鸡尾酒会"问题 在鸡尾酒会,上很多人同时在说话,还有背景音乐,如果我们放若干个话筒进行声音采集 是否可以从采集到的数据中,分离出每个人独立的声音 假设有n个不同的人,m个时间采集点,一般会用和人数一样多的话筒,也是n个 is an n-dimensional vec

独立成分分析 ICA 原理及公式推导 示例

独立成分分析(Independent component analysis) 前言 独立成分分析ICA是一个在多领域被应用的基础算法.ICA是一个不定问题,没有确定解,所以存在各种不同先验假定下的求解算法.相比其他技术,ICA的开源代码不是很多,且存在黑魔法–有些步骤并没有在论文里提到,但没有这些步骤是无法得到正确结果的. 本文给出一个ICA最大似然解法的推导,以及FastICA的python实现,限于时间和实际需求,没有对黑魔法部分完全解读,只保证FastICA实现能得到正确结果. 有兴趣的童

ICA (独立成分分析)

介绍 独立成分分析(ICA,Independent Component Correlation Algorithm)简介 X=AS X为n维观测信号矢量,S为独立的m(m<=n)维未知源信号矢量,矩阵A被称为混合矩阵. ICA的目的就是寻找解混矩阵W(A的逆矩阵),然后对X进行线性变换,得到输出向量U. U=WX=WAS 过程 编辑 (1)对输入数据进行中心化和白化预处理 X*=X-u 经过白化变换后的样本数据为 Z=Wz X* (2)从白化样本中求解出解混矩阵W 通过优化目标函数的方法得到W

机器学习笔记—独立成分分析

本文介绍独立成分分析(ICA),同 PCA 类似,我们是要找到一个新的基来表示数据,但目的就不一样了. 鸡尾酒会问题:n 个人在一个 party 上同时说话,n 个麦克风放置在房间的不同位置,因为每个麦克风跟每个人的距离都不一样,所以它们记录的说话者重叠的声音也不一样.根据麦克风记录的声音,如何分离出 n 个说话者的声音呢? 为形式化这个问题,我们想象有一些数据 s∈R 是从 n 个独立的源生成的,我们观察到的是 x=As, 矩阵 A 是未知的,被称作混合矩阵,通过不断观察得到的是 {x(i);