1)问题描述
2)独立成分分析的不确定性(ICA ambiguities)
3)ICA用到的密度函数计算公式
4)ICA算法
5)行列式求导
1)问题描述
1、上节提到的PCA是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那么对于其他分布的样本,有没有主元分解的方法呢?
2、经典的鸡尾酒宴会问题(cocktail party problem)。假设在party中有n个人,他们可以同时说话,我们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音。宴会过后,我们从n个麦克风中得到了一组数据,i表示采样的时间顺序,也就是说共得到了m组采样,每一组采样都是n维的。我们的目标是单单从这m组采样数据中分辨出每个人说话的信号。
将第二个问题细化一下,有n个信号源,,每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么,x即声音接收器的收到的复合信号,这里的x不是一个向量,是一个矩阵,其中每个列向量是,满足。A和s都是未知的,x是已知的,我们要想办法根据x来推出s。这个过程也称作为盲信号分离。
令,那么。将W表示成
其中,其实就是将写成行向量形式。那么得到: 。
2)独立成分分析的不确定性(ICA ambiguities)
a)倍数联动:由于w和s都不确定,在没有任何先验知识的情况下,无法同时确定这两个相关参数。因为对于公式s=wx,当w扩大两倍时,s只需要同时扩大两倍即可,等式仍然满足,因此无法得到唯一的s。
b)旋转对称:如果信号源s是多元高斯分布,那么ICA也不适用!直观的理解是,多元高斯分布的概率密度图是旋转对称的(均值为0,投影面是圆形的山峰状,参见多元高斯分布);数学理解是,假设只有两个人,且发出的声音信号符合多元正态分布,即,其中I是2*2的单位矩阵,
因为,因此,x也是多元高斯分布的,均值为0,协方差为;令R是正交阵,且(即通过A旋转得到),如果将A替换成A’,那么,由于s分布没变,因此x’仍然是均值为0,协方差为。
也就是说,不管混合矩阵是A还是A',我们观察到的数据x都是符合相同的分布N(0,),也就是说根据观察到的数据的分布情况,我们根本没办法确定混合矩阵是A还是A',也就不知道信号源的具体情况。
实际上,倍数联动对于大多数应用是没有太大影响的,你还是会分辨出独立的声音源,只不过是进行了放缩;但如果声音源s符合多元高斯分布,那我们就真没办法达到辨别独立成分的目的,也就是说,我们其实只要保证声音源不是多元高斯分布,并且假如归一化限制(不允许任意放缩),在理论上就应该可以进行盲信号分离(独立成分)分析。
3)ICA用到的密度函数计算公式
在讨论ICA具体算法之前,我们先来回顾一下概率和线性代数里的知识。
假设我们的随机变量s有概率密度函数(连续值是概率密度函数,离散值是概率)。为了简单,我们再假设s是实数,还有一个随机变量x=As,A和x也都是实数,那么怎么求x的概率密度?
令,首先将式子x=As变换成,则:。
推导方法如下:
更一般地,如果s是向量,A可逆的方阵,那么上式子仍然成立。
4)ICA算法
这里,我们通过最大似然估计来推导ICA算法。
我们假定每个有概率密度,并且每个人发出的声音信号各自独立,那么给定时刻原信号的联合分布就是:
,左边是每个采样信号x(n维向量)的概率,右边是每个原信号概率的乘积的|W|倍。
要想求x的概率密度函数,我们剩下要做的就是为每一个人为指定概率密度(前面提到过,如果没有先验知识,我们无法求得W和s,因此,这里我们必须根据先验知识人为指定)。从第2)节的分析中我们知道,高斯分布的密度函数是不可以用的。在概率论里我们知道密度函数p(x)由累计分布函数(cdf)F(x)求导得到。F(x)要满足两个性质是:单调递增并且函数值在[0,1]之间。我们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。因此,s的累积分布函数一般默认(在没有任何先验知识时)选择sigmoid函数:
知道了 ,x的概率密度 公式 中就只剩下W了。对于W的计算,我们采用最大似然估计法,给定采样后的训练样本 ,样本对数似然估计如下:接下来就是对W求导了,这里牵涉一个问题是对行列式|W|进行求导的方法,属于矩阵微积分。这里先给出结果,在文章最后再给出推导公式。
最终得到的求导后公式如下,的导数为(可以自己验证):
其中是梯度上升速率,人为指定。
当迭代求出W后,便可得到来还原出原始信号。
注意:我们计算最大似然估计时,假设了与之间是独立的,然而对于语音信号或者其他具有时间连续依赖特性(比如温度)上,这个假设不能成立。但是在数据足够多时,假设独立对效果影响不大,同时如果事先打乱样例,并运行随机梯度上升算法,那么能够加快收敛速度。
5)行列式求导
对行列式求导,设矩阵A是n×n的,我们知道行列式与代数余子式有关,
是去掉第i行第j列后的余子式,那么对求导得
adj(A)跟我们线性代数中学的是一个意思,因此