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

1)问题描述

2)独立成分分析的不确定性(ICA ambiguities)

3)ICA用到的密度函数计算公式

4)ICA算法

5)行列式求导



1)问题描述

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

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

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

    将第二个问题细化一下,有n个信号源clip_image004clip_image006,每一维都是一个人的声音信号,每个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么clip_image008,x即声音接收器的收到的复合信号,这里的x不是一个向量,是一个矩阵,其中每个列向量是clip_image010,满足clip_image012。A和s都是未知的,x是已知的,我们要想办法根据x来推出s。这个过程也称作为盲信号分离。

     令clip_image039,那么clip_image041。将W表示成

     clip_image042

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

2)独立成分分析的不确定性(ICA ambiguities)

   a)倍数联动:由于w和s都不确定,在没有任何先验知识的情况下,无法同时确定这两个相关参数。因为对于公式s=wx,当w扩大两倍时,s只需要同时扩大两倍即可,等式仍然满足,因此无法得到唯一的s。

    b)旋转对称:如果信号源s是多元高斯分布,那么ICA也不适用!直观的理解是,多元高斯分布的概率密度图是旋转对称的(均值为0,投影面是圆形的山峰状,参见多元高斯分布);数学理解是,假设只有两个人,且发出的声音信号符合多元正态分布,即clip_image050,其中I是2*2的单位矩阵,

        因为clip_image052,因此,x也是多元高斯分布的,均值为0,协方差为clip_image054;令R是正交阵clip_image056,且clip_image058(即通过A旋转得到),如果将A替换成A’,那么clip_image060,由于s分布没变,因此x’仍然是均值为0,协方差为clip_image062

       也就是说,不管混合矩阵是A还是A',我们观察到的数据x都是符合相同的分布N(0,),也就是说根据观察到的数据的分布情况,我们根本没办法确定混合矩阵是A还是A',也就不知道信号源的具体情况。

实际上,倍数联动对于大多数应用是没有太大影响的,你还是会分辨出独立的声音源,只不过是进行了放缩;但如果声音源s符合多元高斯分布,那我们就真没办法达到辨别独立成分的目的,也就是说,我们其实只要保证声音源不是多元高斯分布,并且假如归一化限制(不允许任意放缩),在理论上就应该可以进行盲信号分离(独立成分)分析。

3)ICA用到的密度函数计算公式

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

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

     令clip_image039[1],首先将式子x=As变换成clip_image068,则:clip_image080

     推导方法如下:

     clip_image082

     clip_image084

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

4)ICA算法

    这里,我们通过最大似然估计来推导ICA算法。

    我们假定每个clip_image086有概率密度clip_image088,并且每个人发出的声音信号各自独立,那么给定时刻原信号的联合分布就是:

     clip_image090。有了p(s),根据上一小节的公式,我们可以求得p(x):

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

    要想求x的概率密度函数clip_image066[1],我们剩下要做的就是为每一个clip_image086人为指定概率密度clip_image094(前面提到过,如果没有先验知识,我们无法求得W和s,因此,这里我们必须根据先验知识人为指定clip_image094)。从第2)节的分析中我们知道,高斯分布的密度函数是不可以用的。在概率论里我们知道密度函数p(x)由累计分布函数(cdf)F(x)求导得到。F(x)要满足两个性质是:单调递增并且函数值在[0,1]之间。我们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。因此,s的累积分布函数一般默认(在没有任何先验知识时)选择sigmoid函数:

     clip_image096,求导后得clip_image098,这就是s的概率密度函数。这里s是实数。

   知道了 clip_image100[1],x的概率密度 clip_image066[1]公式 clip_image092中就只剩下W了。对于W的计算,我们采用最大似然估计法,给定采样后的训练样本 clip_image002[1],样本对数似然估计如下:

     clip_image101

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

     clip_image105

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

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

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

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

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

5)行列式求导

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

     clip_image127

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

     clip_image132

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

     clip_image135






你可能感兴趣的:(斯坦福大学公开课 :机器学习课程(Andrew Ng)——14、无监督学习:Independent Component Analysis(ICA))