详解独立成分分析

最近在学习数据降维的一些方法(有关数据降维的其他内容请看这篇文章),虽然独立成分分析不算是严格意义上的降维方法,但是它和PCA有着千丝万缕的联系,所以打算专门写一篇文章来学习ICA的相关知识,看了挺多的关于ICA的博文,有些文章讲的比较详细。有句话是这么说的:“论文是详细版的知识讲解”,也就是说如果想深入详细的了解某个知识,那么去读相关论文,所以阅读了一篇经典的ICA论文,作者是A. Hyva¨rinen,整篇论文对ICA做出了详细的解释。这篇文章按照原论文的结构,对原论文进行了翻译概括。

目录

1. 动机(Motivation)

2. 独立成分分析(independent component analysis)

2.1 ICA的定义(Definition of ICA)

2.2 ICA的不明确性(Ambiguities of ICA)

2.3 图解ICA(Illustration of ICA)

3. 什么是独立性(What's independence?)

3.1 定义和基本属性(Definition and fundamental properties)

3.2 不相关变量是部分独立的(Uncorrelated variables are only partly independent)

3.3 为什么独立成分不能是高斯变量(Why Gaussian variables are forbidden)

4 ICA估计原理(Principles of ICA estimation)

4.1 非高斯独立(“Non-Gaussian is independent”)

4.2 非高斯性的度量(Measures of non-Gaussianity)

4.2.1 峰度(Kurtosis)

4.2.2 负熵(Negentropy)

4.2.3 负熵的近似(Approximations of negentropy)

4.3 互信息最小化(Minimization of mutual information)

4.3.1 互信息(Mutual information)

4.3.2 通过互信息定义ICA(Defining ICA by mutual information)

4.4 最大似然估计(Maximum likelihood estimation)

4.4.1 似然(The likelihood)

4.4.2 信息最大原则(The infomax principle)

4.4.3 互信息连接(Connection to mutual information)

4.5 ICA与投影跟踪(ICA and projection pursuit)

5 ICA的预处理(Preprocessing of ICA)

5.1 中心化(Centering)

5.2 白化(whitening)

5.3 进一步的预处理(Further preprocessing)

6 FastICA算法(The FastICA algorithm)

6.1 单元FastICA(FastICA for one unit)

6.2 多元FastICA(FastICA for several unit)

6.3 FastICA 和最大似然(FastICA and maximum likelihood)

6.4 FastICA的属性(Properties of the FastICA algorithm)

参考文献

1. 动机(Motivation)

想象两个人在意见房间内同时说话,有两个位于房间不同位置的麦克风记录时间信号,记录的时间信号分别用x_{1}(t)x_{2}(t)。被麦克风记录的信号是两个说话者语音信号的加权和,分别用s_{1}(t)s_{2}(t)表示。那么我们可以得到下面的等式:

                                     x_{1}(t) = a_{11}s_{1} + a_{12}s_{2}      (1)                      x_{2}(t) = a_{21}s_{1} + a_{22}s_{2}           (2)

其中a_{11},a_{12},a_{21},a_{22}是一些取决于麦克风和说话者距离的参数。如果能用记录的信号x_{1}(t)x_{2}(t)估算出两个原始的语音信号s_{1}(t)s_{2}(t),这将会是一件非常有用的事。上面说的这个例子被称为“鸡尾酒宴会”问题。

                           

                             

以图1和图2的波形为例,图1表示的波形是原始语音信号,图2表示的波形是混合后即麦克风记录的信号。我们要做的就是通过图2中的信号来恢复图1中的信号。实际上,如果我们知道参数a_{ij},那么我们就能通过传统的方法求解出式(1)和式(2),但是如果我们不知道参数a_{ij},那么求解就会变的非常困难。

其中一种方法是我们可以应用信号s_{i}(t)的一些统计特性来估计a_{ii}。我们可以假设在每个时刻t,信号s_{1}(t)s_{2}(t)是统计独立的。ICA可以独立分量的信息来估计参数a_{ij},这使得我们可以从混合信号x_{1}(t)x_{2}(t)中分离原始信号s_{1}(t)s_{2}(t)。图3的信号是从图2中信号通过ICA方法估计出的信号,可以看到,通过ICA得到的信号的波形和原始信号的波形(图1)非常相似。只是幅度是相反的,将估计得到的信号取个负即可。

                           

2. 独立成分分析(independent component analysis)

2.1 ICA的定义(Definition of ICA)

为了严格定义ICA,我们可以使用统计隐变量模型。假设我们从n个独立成分观察到n个线性混合信号x_{1},...x_{n}

                                                                 x_{j} = a_{j1}s_{1} + a_{j1}s_{2} + ...a_{jn}s_{n}             (3)

假设每一个x_{j}和每一个独立成分s_{k}是随机变量,观测值x_{j}(t)是随机变量的样本值。在不失一般性的情况下,我们可以假设混合变量和独立分量都具有零均值:如果不是这样的话,我们可以对观察变量x_{i}中心化,使得模型为零均值模型。

用向量-矩阵法表示前面的和式是非常方便的,我们用x表示随机向量,其元素为x_{1},...,x_{n},同样的s表示随机向量,其元素为s_{1},...,s_{n}。用A表示矩阵,其元素为a_{ij},通常情况下,小写黑体表示向量,大写黑体表示矩阵。所有的向量都被视为列向量。根据向量-矩阵表示法,上面的混合模型可被写为:

                                                                                    {\color{Red} \mathbf{x} = \mathbf{As}}                             (4)

有时,我们需要矩阵的列向量,用\mathbf{a}_{i}表示,那么模型可被写为:

                                                                                    \mathbf{x} = \sum_{i = 1}^{n}\mathbf{a}_{i}s_{i}                       (5)

我们称(4)式表示的统计模型为独立成分分析或ICA模型。ICA模型是生成模型,它描述了观测数据是如何通过混合元素s_{i}生成的。独立成分是隐变量,也就是说它们不能被直接观测;而且混合矩阵\mathbf{A}也被假设是未知的。所有我们能观测到的只有随机向量\mathbf{x},我们需要用它去估计\mathbf{A}\mathbf{s}

ICA的出发点是非常简单的一个假设:成分{\color{Red} s_{i}}是统计独立的。而且还假设独立成分是非高斯分布的。在基础模型中,我们不假设分布是已知的(如果分布已知,那么问题就会很简单了),还假设混合矩阵\mathbf{A}是方阵。当我们估算了矩阵\mathbf{A},那么我们可以求得它的逆\mathbf{W},可以通过下面的时候得到独立成分:

                                                                                       \mathbf{s} = \mathbf{Wx}                                  (6)

ICA是和“盲源分离”(BSS)非常相近的一种方法。“源”是指原始信号,也就是独立成分,比如鸡尾酒宴会中的说话者的语音信号;“盲”是因为我们可知的信息非常少,不知道混合矩阵\mathbf{A},而且只能对源信号做极有限的假设。在实际的应用中,我们观测到的信号中还会包含一些噪声,为了简化,此处忽略噪声项,即便如此,它对许多应用仍然有效。

2.2 ICA的不明确性(Ambiguities of ICA)

在ICA模型,也就是式(4)中,我们很容易看到ICA的一些不太明确的地方:

1. 我们不能确定独立成分的方差(能量)

原因是,\mathbf{A}\mathbf{s}都是未知的,通过将\mathbf{A}的相应列\mathbf{a}_{i}除以相同的标量,可以总是取消其中一个源s_{i}中的任何标量乘数。因此,我们可以很好的确定独立成分的大小,因为它们是随机变量,确定其大小最自然的方式是假设它们的方差为1,即:E \left \{ s_{i}^{2} \right \} = 1。然后,矩阵\mathbf{A}将在ICA解决方案方法中进行调整,以考虑这种限制。 请注意,这仍然会留下符号的模糊性:我们可以将独立分量乘以21而不会影响模型。 幸运的是,这种模糊性在大多数应用中都是微不足道的。

2. 我们不能确定独立成分的顺序

原因同样是\mathbf{A}\mathbf{s}都是未知的,我们可以随意的改变式(5)中求和项的顺序,然后把任何一个独立成分称为第一个。形式上,置换矩阵\mathbf{P}及其逆可以在模型中代入以给出\mathbf{x} = \mathbf{A}\mathbf{P}^{-1}\mathbf{Ps}\mathbf{Ps}的元素是原始的独立变量s_{j},但是以另一种顺序。 矩阵\mathbf{A}\mathbf{P}^{-1}只是一个新的未知混合矩阵,由ICA算法求解。

2.3 图解ICA(Illustration of ICA)

为了用统计学术语来阐明ICA模型,我们假设两个独立分量服从下面的均匀分布:

                                                 

选择均匀分布的取值范围,使得均值为0,方差为1。s_{1}s_{2}的联合密度在正方形内是均匀的,这源于联合密度的基础定义:两个独立变量的联合密度是他们边密度的乘积。联合密度如图4所示,数据点是从分布中随机抽取。

                                                        

现在混合这两个独立成分,我们取下面的混合矩阵:

                                       

这得出了两个混合变量,x_{1}x_{2},很容易得出混合数据在一个平行四边形上的均匀分布,如图5所示:

                                                          

我们可以看到,随机变量x_{1}x_{2}不再独立,换一种说法是,是否有可能从一个值去预测另一个值。假设x_{1}的值为最大或最小值,那么x_{2}的值就可以确定了。如上图中红框圈起来的数据点所示。由此可知,x_{1}x_{2}已经不再独立了。但是对于图4中的随机变量s_{1}s_{2}情况就不同了,如果我们知道s_{1}的值,那么无论通过什么方式都无法确定s_{2}的值。

现在估计ICA模型中数据的问题变成了用包含在x_{1}x_{2}中仅有的信息估计混合矩阵\mathbf{A}_{0}的问题。实际上我们可以从图5中对{\color{Red} \mathbf{A}}有个更直观的估计:平行四边形的边是矩阵列向量的方向。这意味着我们原则上可以通过首先估计x_{1}x_{2}的联合密度,然后定位边缘来估计ICA模型。 所以,问题似乎有一个解决方案。

然而,实际上,这将是一种非常差的方法,因为它仅适用于具有完全均匀分布的变量。 而且,它在计算上会非常复杂。 我们需要的是一种适用于独立成分的任何分布的方法,并且可以快速可靠地工作。 接下来,在开始开发用于估计ICA模型的方法之前,我们将考虑独立性的确切定义。

3. 什么是独立性(What's independence?)

在这一小节我们将会解决两个关键的问题:为什么要假设独立成分是统计独立的?为什么独立成分必须是非高斯变量

3.1 定义和基本属性(Definition and fundamental properties)

为了定义独立性,首先考虑两个常量随机变量y_{1}y_{2}。基本上,如果关于y_{1}值的信息没有给出关于y_{2}值的任何信息,则变量y_{1}y_{2}被认为是独立的,反之亦然。从上一小节我们知道变量s_{1}s_{2}满足独立性,而混合变量x_{1}x_{2}并不满足独立性。独立性可以通过概率密度定义,用p(y_{1},y_{2})表示y_{1}y_{2}的联合概率密度。用p_{1}(y_{1})表示y_{1}的边缘概率密度函数,单独考虑y_{1}概率密度函数时有:

                                                                  p_{1}(y_{1}) = \int p(y_{1},y_{2})dy_{2}                                    (9)

对于y_{2}也是一样的。当且仅当联合概率密度函数可以通过以下方式分解时,我们定义{\color{Red}y_{1}}{\color{Red}y_{2}}是独立的

                                                                  {\color{Red}p(y_{1}y_{2}) = p_{1}(y_{1})p_{2}(y_{2}) }                                     (10)

式(10)对n个随机变量同样适用,此时联合概率密度函数等于n个部分的边缘概率密度函数的乘积。该定义可用于推导独立随机变量的一个最重要的性质。给定h1和h2两个函数,我们总是有:

                                                   E\left\{h_{1}(y_{1})h_{2}(y_{2})\right\} = E\left\{h_{1}(y_{1}) \right\}E\left\{h_{2}(y_{2})\right\}                  (11)

其证明过程如下:

                                            

3.2 不相关变量是部分独立的(Uncorrelated variables are only partly independent)

弱化的独立是不相关。如果两个随机变量y_{1}y_{2}的协方差为0,那么说这两个随机变量不相关:

                                                              E\left\{y_{1}y_{2}\right\} - E\left\{ y_{1}\right\}E\left\{ y_{2}\right\} = 0                                     (13)

独立一定不相关,但是不相关不一定独立。例如,假设(y_{1},y_{2})是离散值并遵循这样的分布,即其为(0,1),(0,-1),(1,0),(-1,0)中任意值的概率为\frac{1}{4}。可以看到,y_{1}的取值为(0,0,1,-1),所以E\left\{y_{1}\right\} = 0,同样的y_{2}的取值为(1,-1,0,0),所以E\left\{y_{2}\right\} = 0y_{1}y_{2}的取值总是为0,那么E\left\{y_{1}y_{2}\right\} = 0。根据式(13)得出,随机变量y_{1},y_{2}不相关。我们令h_{1}(y_{1}) = y_{1}^{2},h_{2}(y_{2}) = y_{2}^{2},可以得到y_{1}^{2}y_{2}^{2}的值总是0,那么E\left\{y_{1}^{2}y_{2}^{2}\right\} = 0y_{1}^{2}取0和1的概率各为\frac{1}{2},那么E\left\{y_{1}^{2}\right\} = \frac{1}{2},同样的,y_{2}^{2}取0和1的概率各为\frac{1}{2},得E\left\{y_{2}^{2}\right\} = \frac{1}{2},由此可得:

                                                          E\left\{y_{1}^{2}y_{2}^{2}\right\} = 0 \neq E\left\{y_{1}^{2}\right\}E\left\{y_{2}^{2}\right\} = \frac{1}{4}                                  (14)

由式(11)可以得出随机变量y_{1},y_{2}不独立。所以,不相关不一定独立。

 

3.3 为什么独立成分不能是高斯变量(Why Gaussian variables are forbidden)

在ICA中对独立成分最基础的限制是:独立成分必须为非高斯变量。接下来我们看看为什么高斯变量对ICA不适用,我们假设混合矩阵\mathbf{A}是正交的,且s_{i}是高斯变量。那么x_{1}x_{2}是高斯变量,且不相关、方差为1。它们的联合密度如下:

                                             

其分布如图6所示:

                                                  

此图显示了密度的完全对称性,因此它不包含混合矩阵{\color{Red} \mathbf{A}}的列向量方向的任何信息。这就是为什么\mathbf{A}不能被估算的原因。更严格地说,可以证明高斯变量(x_{1},x_{2})的任何正交变换的分布具有与(x_{1},x_{2})完全相同的分布,并且x_{1}x_{2}是独立的。因此,在高斯变量的情况下,我们只能估算正交变换的ICA模型。换句话说,矩阵\mathbf{A}对于高斯独立分量是不可识别的。 (实际上,如果只有一个独立分量是高斯分布,那么仍然可以估计ICA模型。)

4 ICA估计原理(Principles of ICA estimation)

4.1 非高斯独立(“Non-Gaussian is independent”)

直观的说,非高斯分布是ICA估计的关键,实际上,没有非高斯性,估计是不可能完成的,正如3.3 中所说的那样。这也可能是ICA后期复苏的主要原因:在传统统计学理论中,大多假设随机变量服从高斯分布,因此这将任何与ICA有关的方法都排除在外了。中心极限定理是概率论中的经典,它表明在一定条件下,独立随机变量之和的分布倾向于高斯分布。 因此,两个独立随机变量的总和通常具有比两个原始随机变量中的任何一个更接近高斯的分布。

现在假设数据向量\mathbf{x}按照式(4)中ICA数据模型分布,即它是独立成分的混合。我们假设所有的独立成分有相同的分布,为了估算其中的一个独立成分,我们考虑x_{i}的线性组合(见式(6));我们用y = \mathbf{w}^{T}\mathbf{x} = \sum_{i}w_{i}x_{i}来表示,其中\mathbf{w}是待求向量。如果\mathbf{w}\mathbf{A}的逆的一行,那么这个线性组合实际上就表示一个独立成分。现在问题变成了:如何使用中心极限定理去确定\mathbf{w}使得它等于矩阵\mathbf{A}的逆的一行。实际上,我们并不能确定这样一个向量\mathbf{w},因为我们对矩阵\mathbf{A}一无所知,但是我们可以寻找一个估计器来找到较好的近似。

为了了解这如何引出ICA估计的基本原理,让我们换一下变量,定义\mathbf{z} = \mathbf{A}^{T}\mathbf{w}。然后我们可以得出y = \mathbf{w}^{T}\mathbf{x} = \mathbf{w}^{T}\mathbf{A}\mathbf{s} = \mathbf{z}^{T}\mathbf{s}。因此y是s_{i}的线性组合,权重为z_{i},因为两个独立随机变量的和比原始的变量更接近高斯分布,所以\mathbf{z}^{T}\mathbf{s}比任意一个s_{i}更接近高斯分布且当它等于其中一个s_{i}时变成最小高斯。很明显,在这种情况下\mathbf{z}只有一个元素z_{i}非零。因此我们可以取\mathbf{w}为使\mathbf{w}^{T}\mathbf{x}非高斯性最大的向量。(既然随机变量的和更接近高斯分布,但是在ICA中我们又不想让随机变量服从高斯分布,那么我们可以只让{\color{Red}\mathbf{z}}中一个元素非零,这样就会得到最小高斯,从而使得{\color{Red}\mathbf{z}^{T}\mathbf{s}}的非高斯性最大)。这样的向量对应于只具有一个非零分量的\mathbf{z}。这意味着\mathbf{w}^{T}\mathbf{x} = \mathbf{z}^{T}\mathbf{s}等于一个独立成分。

最大化\mathbf{w}^{T}\mathbf{x}的非高斯性会求出一个独立成分,事实上,向量\mathbf{x}的n维空间中非高斯性的优化格局具有2n个局部最大值,每个独立分量有两个,对应于s_{i}-s_{i}(回想一下,独立分量只能估计到乘法符号)。为了找到一些独立分量,我们需要找到所有的局部最大值,这并不困难,因为不同的独立分量不相关:我们总是可以将搜索限制在那些给出与以前的估计不相关的估计的空间。这对应于适当变换(即白化)空间中的正交化。我们这里的方法颇具启发性,但在第4.2节和第4.3节中可以看出它具有完全严格的证明。

4.2 非高斯性的度量(Measures of non-Gaussianity)

为了在ICA估计中使用费高斯性,我们必须对随机变量y的非高斯性进行定量的度量。为了简化,我们假设y的均值为0,方差为1。实际上,通过ICA算法的预处理过程可以使这个假设成真。

4.2.1 峰度(Kurtosis)

非高斯性的传统度量方式是峰度和四阶累积量。y的峰度的定义如下:

                                                           kurt(y) = E\left\{y^{4}\right\} - 3(E\left\{y^{2}\right\})^{2}                               (16)

实际上,我们假设过y的方差为1,那么等式右边可简化为:E\left\{y^{4}\right\} - 3。这表明峰度只是四阶矩的标准化版本。对于高斯随机变量y,四阶矩等于3(E\left\{y^{2}\right\})^{2}。因此对于高斯随机变量其峰度为0 。而对于大多数(并非所有)非高斯变量,其峰度非零。峰度可正可负;具有负峰度的随机变量称为亚高斯,具有正峰度的随机变量称为超高斯。超高斯随机变量通常具有带有重尾的“尖峰”概率密度函数,即概率密度函数在零和变量的较大值处相对较大,而对于中间值较小。典型的例子是拉普拉斯分布,其概率密度函数的定义如下:                               

                                          

其概率密度函数如图7所示:

                                                     

亚高斯随机变量通常具有“平坦”概率密度函数,其在零附近相当恒定,并且对于较大的变量值而言非常小。 典型的例子是的均匀分布。非高斯性通常通常通过峰度的绝对值或平方来度量,高斯随机变量的峰度为了,而非高斯z_{1},z_{2}变量的峰度不为0,但是也有极少数的非高斯变量的峰度为0。 

峰度或其绝对值在ICA或其它领域度量非高斯性时广泛应用。主要原因是它的计算和理论分析都比较简单:计算简单是因为峰度只需要计算样本数据的四阶矩;而理论分析简单是因为以下的线性特性:

                                                       kurt(x_{1} + x_{2}) = kurt(x_{1}) + kurt(x_{2})                    (18)

                                                       kurt(\alpha x_{1}) = \alpha^{4}kurt(x_{1})                                          (19)

其中x_{1}x_{2}是独立的随机变量,\alpha是常数。以上性质由定义很容易证明。为了在一个简单的例子中说明峰度的优化格局是什么样的,以及如何通过峰度最小化或最大化找到独立的组件,让我们看一下二维模型\mathbf{x} = \mathbf{A}\mathbf{s}。假设独立成分s_{1},s_{2}的峰值分别为kurt(s_{1}),kurt(s_{2})且都不等于0,我们之前假设过随机变量的方差都为1,我们要求一个独立成分y = \mathbf{w}^{T}\mathbf{x}。我们再一次应用转换\mathbf{z} = \mathbf{A}^{T}\mathbf{w},接着有y = \mathbf{w}^{T}\mathbf{x} = \mathbf{w}^{T}\mathbf{A}\mathbf{s} = \mathbf{z}^{T}\mathbf{s} = z_{1}s_{1} + z_{2}s_{2},现在根据峰度的线性特性我们可以得到:kurt(y) = kurt(z_{1}s_{1}) + kurt(z_{2}s_{2}) = z_{1}^{4}kurt(s_{1}) + z_{2}^{4}kurt(s_{2}),因为随机变量是s_{1},s_{2},而z_{1},z_{2}可看做是常数。另一方面,我们使y的方差为1。这意味着对\mathbf{z}有个约束:E\left\{y^{2}\right\} = z_{1}^{2} +z_{2}^{2} = 1。在对上式进行推导之前首先要明确几个问题,s_{1},s_{2}是均值为0方差为1的独立变量,z_{1},z_{2}是常数,其推导如下:

                                                          \begin{align*} E\left\{y^{2}\right\} &= E\left\{(z_{1}s_{1} + z_{2}s_{2})^{2}\right\}\\ &= E\left\{z_{1}^{2}s_{1}^{2}+z_{2}^{2}s_{2}^{2}+2z_{1}z_{2}s_{1}s_{2}\right\}\\ &= z_{1}^{2}E\left\{s_{1}^{2}\right\} +z_{2}^{2}E\left\{s_{2}^{2}\right\} + 2z_{1}z_{2}E\left\{s_{1}s_{2}\right\}\\ &= z_{1}^{2} + z_{2}^{2} +2z_{1}z_{2}E\left\{s_{1}\right\}E\left\{s_{2}\right\}\\ & = z_{1}^{2} +z_{2}^{2} = 1 \end{align*}

这在几何上意味着\mathbf{z}被约束在二维平面的单位圆上,现在优化问题变成了:函数|kurt(y)| = |z_{1}^{4}kurt(s_{1}) +z_{1}^{4}kurt(s_{1})|在单位圆上的最大值是什么。为简单起见,可以认为峰度具有相同的符号,在这种情况下,可以省略绝对值运算符。 该函数的图形是问题的“优化”。

当向量\mathbf{z}的一个元素恰好为零而另一个非零时,不难显示最大值位于这些点; 由于单位圆约束,非零元素必须等于1或-1。实际上,我们可以从权值向量\mathbf{w}开始,基于混合向量\mathbf{x}的样本\mathbf{x}(1),...,\mathbf{x}(T)计算方向,即峰度增长最快的方向(如果峰度为正)或减少最快(如果峰度为负)的方向,并使用梯度方法或其中一个扩展来寻找新的矢量w。这个例子可以一般化到任意维度来表明峰度可以作为ICA问题的优化准则。

但是,峰度在实际应用中也存在一些缺陷,主要原因是峰度对异常值非常敏感。其值可能仅取决于分布尾部的少数观测值,这可能是错误的或不相关的观测。 换句话说,峰度是一种不稳定的非高斯性度量。接下来,介绍另一种比峰度优越的非高斯性度量方法:负熵。

4.2.2 负熵(Negentropy)

负熵是另一种非常重要的非高斯性量度。 负熵是信息论中熵量的一种概念。熵是信息论中的基本概念,随机变量的熵可以被解释为观察变量包含的信息量。变量越随机,越不可预测,那么它的熵越大,更严格的说,熵和随机变量的编码长度相关,实际上在某些简单的假设下,熵就是随机变量的编码长度。随机变量Y的熵H的定义如下:

                                                         H(Y) = -\sum_{i}P(Y = a_{i})logP(Y = a_{i})                     (20)

其中a_{i}Y可能取到的值。此定义可以推广到连续值的随机变量和随机向量,这种情况下其被称为“差分熵”。密度函数为f(\mathbf{y})的随机向量\mathbf{y}的差分熵H定义如下:

                                                        H(\mathbf{y}) = -\int f(\mathbf{y})log(f(\mathbf{y}))d\mathbf{y}                                     (21)

在信息论中有个基本的结论:在所有方差相等的随机变量中,高斯变量的熵最大。这意味着熵可以作为非高斯性的一种度量,实际上,这表明高斯分布是所有分布中最“随机”的。随机变量的分布越集中,其熵越小。为了获得对于高斯变量为零并且总是非负的非高斯性度量,通常使用负熵。负熵J的定义如下:

                                                         J(\mathbf{y}) = H(\mathbf{y}_{gauss}) - H(\mathbf{y})                                              (22)

\mathbf{y}_{gauss}是与\mathbf{y}有相同协方差矩阵的高斯随机变量。根据上面提到的特性,负熵总是非负的,且只有\mathbf{y}是高斯分布的时候为0,而且负熵对于可逆线性变换是不变的。使用负熵作为非高斯性度量的优势是:统计理论能够很好的证明它。实际上,对统计性质而言,负熵在某种意义上是对非高斯性的最优估计。但是负熵的计算非常复杂,用定义估计负熵需要估计概率密度函数。因此我们可以寻找负熵的近似。

4.2.3 负熵的近似(Approximations of negentropy)

像上面提到的,负熵的计算非常困难,因此对比函数仍然是理论函数。所以在实际应用中经常会使用一些负熵的近似,接下来介绍具有不错性质的负熵的近似。

传统的负熵近似是使用高阶矩,像下面这种形式:

                                                             J(y) \approx \frac{1}{12}E\left\{y^{3}\right\}^{2} + \frac{1}{48}kurt(y)^{2}                                (23)

假设y是零均值方差为1的随机变量。然而这种近似的有效性可能是有限的,这些近似受到了峰度的非鲁棒性的影响。为了避免这种问题,一种新的负熵的近似被提出,这种近似是基于最大熵原理的,其近似如下:

                                                            J(y) \approx \sum_{i= 1}^{p}k_{i}[E\left\{G_{i}(y)\right\} - E\left\{G_{i}(v)\right\} ]^{2}                       (24)

其中k_{i}是正常数,v是均值为0,方差为1的高斯变量,y也是均值为0,方差为1的变量,G_{i}是非二次函数。即使在近似不是非常准确的情况下,式(24)仍然可以构建非高斯性的度量。当我们只用一个非二次函数时,近似如下:

                                                             J(y) \propto [E\left\{G(y)\right\} - E\left\{G(v)\right\}]^{2}                                   (25)

如果y是对称的,这显然是基于矩的近似推广(如式(23))。取G(y) = y^{4}就会得到式(23),也就是基于峰度的近似。在这里,我们通过G(y)的选择,会获得一个比式(23)的更好负熵的近似。选择增长不是太快的G,会得到一个比较稳定的估计量。下面的G选择被证明比较有效:

                                             G_{1}(u) = \frac{1}{a_{1}}log(cosh a_{1}u)                      G_{2}(u) = -exp(\frac{-u^{2}}{2})                (26)

其中a_{1}是1到2之间的常数。因此,我们得到了负熵的近似值,它在由峰度和负熵给出的两个经典非高斯性度量的性质之间给出了非常好的折衷。它们的概念简单,计算速度快,而且还有些比较不错的统计特性,尤其是鲁棒性。

4.3 互信息最小化(Minimization of mutual information)

另外一种基于信息论的估计ICA的方法是互信息最小化。接下来将解释这种方法,并说明它跟上面描述寻找大多数非高斯方向的方法相似。

4.3.1 互信息(Mutual information)

根据差分熵的概念,我们定义m个随机变量y_{i}(i = 1,2,...,m)之间的互信息,如下:

                                                             I(y_{1},y_{2},...,y_{m}) = \sum_{i = 1}^{m}H(y_{i}) - H(\mathbf y)                            (27)

互信息是衡量随机变量之间独立性的方法,事实上,它等于联合密度f(\mathbf{y})和其边缘密度乘积之间的散度,它总是非负的,只有当变量之间统计独立时为0。因此互信息考虑变量的整体依赖结构,而不是像PCA等方法一样仅仅考虑协方差。互信息可以用熵作为码长来解释,H(y_{i})给出了当y_{i}分别编码时的码长,H(\mathbf y)给出了当\mathbf y被编码为随机向量时的码长。因此,互信息显示了通过编码整个向量而不是单独的分量来减少代码长度的效果。一般来说,对整个向量进行编码可以得到更好的编码。但是,如果y_{i}是独立的,那么它们彼此之间就没有任何信息,即互信息为0。

互信息一个重要的特性是:我们有一个可逆的线性变换\mathbf{y} = \mathbf{Wx}:

                                                        I(y_{1},y_{2},...,y_{n}) = \sum_{i}H(y_{i}) - H(\mathbf{x}) - log|det\mathbf{W}|                 (28)

我们试想一下如果y_{i}是不相关的,而且它们的方差为1会发生什么,这意味着E\left\{\mathbf{y}\mathbf{y}^{T}\right\} = \mathbf{W}E\left\{\mathbf{x}\mathbf{x}^{T} \right\}\mathbf{W}^{T} = \mathbf{I},这意味着:

                                                      \begin{align*} det\mathbf{I} &= 1 = det(\mathbf{W}E\left\{\mathbf{x}\mathbf{x}^{T}\right\}\mathbf{W}^{T})\\ & = (det\mathbf{W})(detE\left\{\mathbf{x}\mathbf{x}^{T}\right\})(det\mathbf{W}^{T}) \end{align*}                                      (29)

这意味着\mathbf{W}的行列式必须是常量,而且,对于单位方差的y_{i},熵和负熵只差一个常数和符号,因此我们可以得到:

                                                      I(y_{1},y_{2},...,y_{n}) = C - \sum_{i}J(y_{i})                                                  (30)

其中C是不依赖\mathbf{W}的常数。上面的式子表示了负熵和互信息之间的关系。

4.3.2 通过互信息定义ICA(Defining ICA by mutual information)

因为互信息是信息论中随机变量独立性的度量方式,我们可以用它作为寻找ICA变换的准则。此方法是模型估计的替代方法,我们将随机向量\mathbf{x}的ICA定义为可逆变换,就想式(6)中那样,确定了矩阵\mathbf{W},使变换后的元素s_{i}的互信息最小化。很明显,在式(30)中找到最小化互信息的逆变换\mathbf{W},就相当于负熵最大的方向。更精确的说,它相当于找到了一维子空间,使得在这些子空间上的投影具有最大熵。式(30)表明,当估计被约束为不相关时,通过最大互信息估计相当于最大化非高斯估计的和。非相关性的约束其实是不必要的,是为了简化计算考虑。因此,我们看到ICA作为互信息最小化的公式给出了另一个严格的理由,即我们更具启发性地引入了寻找最大非高斯方向的想法。

4.4 最大似然估计(Maximum likelihood estimation)

4.4.1 似然(The likelihood)

一种非常流行的估计ICA模型的方法是最大似然估计,它和信息最大化原则相似。接下来将讨论这种方法,并表明它的本质是和最小化互信息是一样的。在无噪声的ICA模型中可以直接表示似然,然后通过最大似然估计来估计模型。\mathbf{W} = (\mathbf{w}_{1},...,\mathbf{w}_{n})^{T}表示矩阵\mathbf{A}的逆,log似然函数如下:

                                                 

其中f_{i}s_{i}的密度函数,\mathbf{x}(t),t = 1,2,...,T\mathbf{x}的实现。对于任何密度为p_{i}的随机变量\mathbf{x}和任意的矩阵\mathbf{W}\mathbf{y} = \mathbf{Wx}的密度由p_{x}(\mathbf{W}^{-1}\mathbf{y})|det\mathbf{W}^{-1}|给出。      

4.4.2 infomax原则(The infomax principle)

另一个相关的对比函数是从神经网络的观点中推导出来的。这是基于最大化具有非线性输出的神经网络的输出熵(或信息流)。假设\mathbf{x}是神经网络的输入,它的输出是\phi _{i}(\mathbf{w}_{i}^{T}\mathbf{x}),其中\phi_{i}是非线性的标量函数,\mathbf{w}_{i}是神经元的权重矩阵。想最大化输出的熵为:

                                                      L_{2} = H(\phi_{1}(\mathbf{w}_{1}^{T}\mathbf{x}),...,\phi_{n}(\mathbf{w}_{n}^{T}\mathbf{x}))                                      (32)

如果\phi_{i}选择的合适,这个框架也可以估计ICA模型,实际上,一些研究者已经证明了infomax原则相当于最大似然估计。这种等价要求神经网络中的非线性\phi_{i}是密度函数f_{i}的积分,也就是说\phi_{i}^{'}(\cdot ) = f_{i}(\cdot)

4.4.3 互信息连接(Connection to mutual information)

为了研究似然和互信息之间的关系,考虑log似然函数的期望,如下:

                                            \frac{1}{T}E\left\{L\right\} = \sum_{i = 1}^{n}E\left\{logf_{i}(\mathbf{w}_{i}^{T}\mathbf{x})\right\} + log|det \mathbf{W}|                            (33)

如果f_{i}\mathbf{w}_{i}^{T}\mathbf{x}的分布,那么上式右边的第一部分可以写为-\sum_{i}H(\mathbf{w}_{i}^{T}\mathbf{x})。因此似然将会和式(28)中的互信息的负相等(只是相差一个常数)。在实际应用这种联系会更强,因为在实际中我们不知道独立成分的分布。比较合理的一种方法是把\mathbf{w}_{i}^{T}\mathbf{x}估计作为最大似然估计方法的一部分,并且把它作为s_{i}密度函数的一部分。在这种情况下,似然和互信息是等价的。

在实际情况下,我们有很多关于独立成分的先验知识,我们不需要根据数据来估计它们的性质。在任何情况下,如果独立成分的性质是错误了,那么最大似然估计也会给完全错误的结果。

4.5 ICA与投影跟踪(ICA and projection pursuit)

如何明确ICA与投影跟踪之间的联系。投影跟踪是在统计学中发展起来的一种技术,用于发现多维数据的“有趣的”投影。这样的投影可用于数据的最佳可视化,以及密度估计和回归等目的。在基本的(1-D)投影跟踪中,我们试图找到方向,使数据在这些方向上的投影具有有趣的分布,即显示某种结构。研究者认为,高斯分布是最没有意思的分布,最有趣的方向是那些显示最低高斯分布的方向,而这正是我们估计ICA模型的方法。

在图8中可以看到找到这种投影的有用性,其中投影追踪方向上的投影是水平的,清楚地显示了数据的聚类结构。

                                                    

在第一个主成分(垂直方向)上的投影没有显示出这种结构。 在一般公式中,投影跟踪可以看做是ICA的变体。特别是,投影追踪使我们能够解决独立分量s_{i}比原始变量x_{i}少的情况。假设空间的那些未被独立分量跨越的维度被高斯噪声填充,我们看到计算非高斯投影追踪方向,我们有效地估计了独立分量。 当找到所有非高斯方向时,估计了所有独立分量。 这样的过程可以被解释为投影跟踪和ICA的混合。然而,应该注意的是,在投影跟踪的公式中,没有关于独立分量的数据模型或假设。 如果ICA模型成立,优化ICA非高斯度量度量会产生独立的分量; 如果模型不成立,那么我们得到的是投影跟踪方向。

5 ICA的预处理(Preprocessing of ICA)

在上一节中,我们讨论了ICA方法的基本统计原理。 基于这些原理的实用算法将在下一节中讨论。 但是,在对数据应用ICA算法之前,进行一些预处理通常非常有用。 在本节中,我们将讨论一些预处理技术,这些技术可以使ICA估计问题更简单,条件更好。

5.1 中心化(Centering)

最基础也是最有必要的预处理是对\mathbf{x}中心化,也就是说用原始数据减去它们的均值\mathbf{m} = E\left\{\mathbf{x}\right\}使得\mathbf{x}的均值为0。因为\mathbf{s}的均值也是零,所以可以对式(4)两边同时取期望。这只是为了简化ICA算法,并不是说不能估计平均值。用中心化后的数据估计完混合矩阵\amthbf{A}之后,我们把\mathbf{s}的均值向量加回到\mathbf{s}中心估计值以完成完全估计。均值向量由\mathbf{A}^{-1}\mathbf{m}给出,其中\mathbf{m}是预处理过程中减去的均值。

5.2 白化(whitening)

ICA另一个有用的预处理策略是对观测数据白化。这意味着在应用ICA算法之前(中心化之后),我们对观测数据\mathbf{x}进行线性变换,因此我们可以获得白化的新的向量\widetilde{\mathbf{x}},也就是说,它的元素是不相关的且方差是一致的。换句话说,\widetilde{\mathbf{x}}的协方差矩阵是单位矩阵:

                                                                           E\left\{\widetilde{\mathbf{x}}\widetilde{\mathbf{x}}^{T}\right\} = \mathbf{I}                               (34)

一种比较流行的白化的方法是协方差矩阵E\left\{\widetilde{\mathbf{x}}\widetilde{\mathbf{x}}^{T}\right\} = \mathbf{ED}\mathbf{E}^{T}的特征分解,其中\mathbf{E}E\left\{\widetilde{\mathbf{x}}\widetilde{\mathbf{x}}^{T}\right\}的特征向量组成的正交矩阵,\mathbf{D}是由特征值组成的对角矩阵,\mathbf{D} = diag(d_{1},...,d_{n})E\left\{\widetilde{\mathbf{x}}\widetilde{\mathbf{x}}^{T}\right\}可以根据已知的值\mathbf{x}(1),...,\mathbf{x}(T)算出来,白化可以通过下式完成:

                                                                          \widetilde{\mathbf{x}} = \mathbf{E}\mathbf{D}^{-\frac{1}{2}}\mathbf{E}^{T}\mathbf{x}                              (35)

其中\mathbf{D}^{-\frac{1}{2}} = diag(d_{1}^{-\frac{1}{2}},...,d_{n}^{-\frac{1}{2}}),现在很容易发现E\left\{\widetilde{\mathbf{x}}\widetilde{\mathbf{x}}^{T}\right\} = \mathbf{I}

通过白化将混合矩阵转换为\widetilde{\mathbf{A}},由式(4)和式(35)可得到:

                                                                    \widetilde{\mathbf{x}} = \mathbf{E}\mathbf{D}^{-\frac{1}{2}}\mathbf{E}^{T}\mathbf{As} = \widetilde{\mathbf{A}}\mathbf{s}                        (36)

白化的作用在于可以使新的混合矩阵\widetilde{\mathbf{A}}变成正交的,这可以从下式中看到:

                                                           E\left\{\widetilde{\mathbf{x}}\widetilde{\mathbf{x}}^{T}\right\} = \widetilde{\mathbf{A}}E\left\{\mathbf{s}\mathbf{s}^{T}\right\}\widetilde{\mathbf{A}}^{T} = \widetilde{\mathbf{A}}\widetilde{\mathbf{A}}^{T} = \mathbf{I}       (37)

我们可以看到,通过白化减少了要估计的参数的数量,现在我们不需要估计原始矩阵\mathbf{A}中的n^{2}个参数(即矩阵\mathbf{A}中的元素),而只需要估计新的正交混合矩阵\widetilde{\mathbf{A}}。一个正交矩阵包含\frac{n(n-1)}{2}的自由度,例如,在二维空间中正交变换可由单个的角参数确定,在更高的维度中,正交矩阵只包含任意矩阵参数数目的一半左右。因此我们可以这样说,白化解决了ICA一半的问题。因为白化是非常简单且标准的流程(比任何的ICA算法都简单),用这种方法减少问题的复杂性是个不错的主意。在我们白化的同时,减少数据的维度也是件非常有用的,我们可以舍弃E\left\{\widetilde{\mathbf{x}}\widetilde{\mathbf{x}}^{T}\right\}的较小的特征值,正如PCA所做的那样,这有去噪的效果,而且维度的减少会防止过拟合(个人建议,不要通过降维的方式防止过拟合,尽量通过正则化来防止过拟合)。

图9对图5中的数据进行了白化,如下所示:

                                                                

定义分布的正方形现在显然是图4中原始正方形的旋转,剩下的就是估计给出旋转的单个角度。 在接下来的分析中,我们都假设数据经过了预处理:中心化和白化。为了简单起见,预处理的数据就用\mathbf{x}表示,变换的混合矩阵用\mathbf{A}表示。

5.3 进一步的预处理(Further preprocessing)

给定数据集的ICA成功与否可能会跟特定应用的预处理步骤有关。比如数据中包含时间信号,那么带通滤波也将会是很有用的。如果我们对观测信号x_{i}(t)进行线性滤波得到新的信号x_{i}^{*}(t),具有相同混合矩阵的ICA模型仍然适用于x_{i}^{*}(t)。观测\mathbf{x}(1),...,\mathbf{x}(T)是矩阵\mathbf{X}的列,对于\mathbf{S}也是如此,那么ICA模型可被表示为:

                                                                                 \mathbf{X} = \mathbf{AS}                                       (38)

现在,\mathbf{X}的时间滤波相当于\mathbf{X}从右边乘以一个矩阵\mathbf{M},如下:

                                                                \mathbf{X}^{*} = \mathbf{XM} = \mathbf{ASM} = \mathbf{A}\mathbf{S}^{*}                         (39)

这表明ICA模型依然有效。

6 FastICA算法(The FastICA algorithm)

在前面的小节中,介绍了非高斯性的不同度量方式,也就是ICA估计的目标函数。在实际中,还需要一种最大化对比函数的算法,如式(25)那样。这一小节介绍一种非常有效的最大化方法,这里假设数据都是经过预处理的。

6.1 单元FastICA(FastICA for one unit)

首先来看单元FastICA,通过“单元”,我们指的是计算单元,最终是人工神经元,具有神经元能够通过学习规则更新的权值向量\mathbf{w}。FastICA学习规则寻找方向,也就是使投影\mathbf{w}^{T}\mathbf{x}最大化非高斯性的单位向量\mathbf{w},非高斯性通过负熵J(\mathbf{w}^{T}\mathbf{x})的近似度量。回想一下\mathbf{w}^{T}\mathbf{x}的方差必须是统一的,对于白化的数据,这相当于将\mathbf{w}的范数统一。FastICA是基于定点迭代的方案的寻找\mathbf{w}^{T}\mathbf{x}非高斯性的最大值,像式(25)那样。这也可以用近似牛顿迭代法推导出来,用g表示式(25)中非二次函数G的导数,例如,式(26)中函数的导数为:

                                          g_{1}(u) = tanh(a_{1}u)                      g_{2}(u) = u\ exp^{-\frac{u^{2}}{2}}                       (40)

其中a_{1}是介于1到2之间的常数,通常取a_{1} = 1。FastICA算法的基本形式如下:

               1. 选择初始的权值向量\mathbf{w}(随机选择)

               2. 令\mathbf{w}^{+} = E\left\{\mathbf{x}g(\mathbf{w}^{T}\mathbf{x})\right\} - E\left\{g'(\mathbf{w}^{T}\mathbf{x})\right\}\mathbf{w}

               3. 令\mathbf{w} = \mathbf{w}^{+} / \ ||\mathbf{w}^{+}||

               4. 如果不收敛,就返回步骤2

收敛是指\mathbf{w}的新旧值指向同一个方向,也就是,它们的点积等于1,向量不一定收敛到同一个点,因为\mathbf{w}-\mathbf{w}定义的方向是相同的,这也是因为独立分量只能定义为乘法符号。     

FastICA推导如下,首先\mathbf{w}^{T}\mathbf{x}的负熵的近似的最大值是从E\left\{G(\mathbf{w}^{T}\mathbf{x})\right\}获得的,在约束E\left\{(\mathbf{w}^{T}\mathbf{x})^{2}\right\} = ||\mathbf{w}||^{2} = 1下的E\left\{G(\mathbf{w}^{T}\mathbf{x})\right\}的最优值是从下式中获得的:

                                                                                       

用牛顿法来解上面的等式,令等式左边为F,然后可以获得雅可比矩阵JF(\mathbf{w}): 

                                                                      

为了简化矩阵,我们对上式中的第一部分取近似,由于数据是球形的,一个合理的近似是 因此雅可比矩阵变成了对角矩阵,并且很容易求其逆,从而得到下面的近似牛顿迭代:

                                        

通过对上式两边同时乘以可以进一步简化。实际上,FastICA的期望必须由他们的估计来代替。 自然估计当然是相应的样本均值。 理想情况下,应该使用所有可用数据,但这通常不是一个好主意,因为计算可能变得过于苛刻。 然后可以使用较小的样本估计平均值,其大小可能对最终估计的准确性具有相当大的影响。 应在每次迭代时单独选择样本点。 如果收敛不令人满意,则可以增加样本量。

6.2 多元FastICA(FastICA for several unit)

前面讲的单单元算法只是估计一个独立成分或者一个投影追踪的方向,为了估计几个独立成分,我们需要使用具有权重向量\mathbf{w}的若干单元(例如,神经元)来运行单单元FastICA算法。为了防止不同的向量收敛到相同的最大值,需要在每次迭代后对输出\mathbf{w}^{T}_{1}\mathbf{x},...,\mathbf{w}^{T}_{n}\mathbf{x}去相关,有3种方法可以做到这一点,对于白化的\mathbf{x}这种去相关相当于正交化。

实现去相关的简单方法是基于类似Gram-Schmidt的去相关的放缩方案。这意味着需要一个个的估计独立成分,当我们已经估计了p个独立成分或者p个向量\mathbf{w}_{1},...,\mathbf{w}_{p},对\mathbf{w}_{p+1}运行单单元定点算法,在每一次迭代之后,从\mathbf{w}_{p+1}中减去投影\mathbf{w}^{T}_{p+1}\mathbf{w}_{j}\mathbf{w}_{j},其中j = 1,...,p,最后重新标准化\mathbf{w}_{p+1}

                                            

然而,在某些应用程序中,可能需要使用对称的去相关,其中没有向量比其他向量具有“特权”,这可以通过矩阵平方根法做到,令:

                                                                \mathbf{W} = (\mathbf{W}\mathbf{W}^{T})^{-\frac{1}{2}}\mathbf{W}                                                 (45)

其中\mathbf{W}是向量(\mathbf{w}_{1},...,\mathbf{w}_{n})^{T}组成的矩阵,平方根的倒数(\mathbf{W}\mathbf{W}^{T})^{-\frac{1}{2}}可以从\mathbf{W}\mathbf{W}^{T} = \mathbf{F}\Lambda\mathbf{F}^{T}特征值分解得到,(\mathbf{W}\mathbf{W}^{T})^{-\frac{1}{2}} = \mathbf{F}\Lambda^{\frac{1}{2}}\mathbf{F}^{T},一个更简单的迭代方法如下:

                               1. 令

                                重复步骤2直到收敛       

                               2. 令 

步骤一中的范数可以使用矩阵的任意范数,比如2-范数。

6.3 FastICA 和最大似然(FastICA and maximum likelihood)

最后,给出FastICA和最大似然估计的联系。如果我们使用式(43)中的中间公式表达FastICA,并以矩阵形式写,我们看到FastICA采用以下形式:

                                            

其中\mathbf{y} = \mathbf{Wx}\beta_{i} = -E\left\{y_{i}g(y_{i})\right\}\alpha_{i} = -\frac{1}{\beta_{i} + E\left\{g'(y_{i})\right\}},矩阵\mathbf{W}在每一步后都需要正交化。上述版本的FastICA可以与随机梯度法的最大似然比较:

                                            

其中\mu是学习速率。g是独立成分的额概率密度函数的函数:g = \frac{f_{i}'}{f_{i}},其中f_{i}是独立成分的概率密度函数。比较式(47)和(48)可以看出,FastICA可以作为ICA数据模型最大似然估计的定点算法。在FastICA中,通过选择矩阵diag(\alpha_{i})diag(\beta_{i})来优化收敛速度。 FastICA的另一个优点是它可以估计子和超高斯独立分量,这与普通ML算法形成对比,普通ML算法仅适用于给定的分布类别。

6.4 FastICA的属性(Properties of the FastICA algorithm)

与现有的ICA方法相比,FastICA算法和底层对比度函数具有许多所需的特性。

1. 在ICA数据模型的假设下,收敛是立方的(或至少是二次的)。 这与基于(随机)梯度下降方法的普通ICA算法形成对比,其中收敛仅是线性的。 这意味着非常快速的收敛,正如通过对真实数据的模拟和实验所证实的那样

2. 与基于梯度的算法相反,没有选择步长参数。这意味着该算法易于使用。

3. 该算法使用任何非线性g直接找到(实际上)任何非高斯分布的独立分量。 这与许多算法形成对比,其中必须首先获得概率分布函数的一些估计,并且必须相应地选择非线性。

4. 可以通过选择合适的非线性g来优化该方法的性能。 特别地,可以获得稳健和/或最小方差的算法。 实际上,式(40)中的两个非线性具有一些最佳性质

5. 可以逐个估计独立分量,这大致相当于进行投影追踪。 这在探索性数据分析中很有用,并且在仅需要估计某些独立组件的情况下减少了该方法的计算负荷

6. FastICA具有神经算法的大部分优点:它是并行的,分布式的,计算简单的,并且需要很少的存储空间。 只有在不断变化的环境中需要快速适应性时,随机梯度法似乎才是优选的。

原论文中还涉及到了ICA算法的应用:在脑磁图去除数据伪迹中的应用;在金融数据中发现隐藏因子;为自然图像去噪。有兴趣的可以去阅读原文。

参考文献

1. Independent component analysis: algorithms and applications

2. 一个简单的FastICA示例    http://www.endolith.com/wordpress/2009/11/22/a-simple-fastica-example/

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读