一、上节提到的PCA是一种数据降维的方法,可是只对符合高斯分布的样本点比较有效,那么对于其余分布的样本,有没有主元分解的方法呢?html
二、经典的鸡尾酒宴会问题(cocktail party problem)。假设在party中有n我的,他们能够同时说话,咱们也在房间中一些角落里共放置了n个声音接收器(Microphone)用来记录声音。宴会事后,咱们从n个麦克风中获得了一组数据,i表示采样的时间顺序,也就是说共获得了m组采样,每一组采样都是n维的。咱们的目标是单单从这m组采样数据中分辨出每一个人说话的信号。node
将第二个问题细化一下,有n个信号源,
,每一维都是一我的的声音信号,每一个人发出的声音信号独立。A是一个未知的混合矩阵(mixing matrix),用来组合叠加信号s,那么web
x的意义在上文解释过,这里的x不是一个向量,是一个矩阵。其中每一个列向量是,
算法
表示成图就是函数
这张图来自post
的每一个份量都由
的份量线性表示。A和s都是未知的,x是已知的,咱们要想办法根据x来推出s。这个过程也称做为盲信号分离。url
将W表示成rest
因为w和s都不肯定,那么在没有先验知识的状况下,没法同时肯定这两个相关参数。好比上面的公式s=wx。当w扩大两倍时,s只须要同时扩大两倍便可,等式仍然知足,所以没法获得惟一的s。同时若是将人的编号打乱,变成另一个顺序,如上图的蓝色节点的编号变为3,2,1,那么只须要调换A的列向量顺序便可,所以也没法单独肯定s。这两种状况称为原信号不肯定。
还有一种ICA不适用的状况,那就是信号不能是高斯分布的。假设只有两我的发出的声音信号符合多值正态分布,,I是2*2的单位矩阵,s的几率密度函数就不用说了吧,以均值0为中心,投影面是椭圆的山峰状(参见多值高斯分布)。由于
,所以,x也是高斯分布的,均值为0,协方差为
。
令R是正交阵,
。若是将A替换成A’。那么
。s分布没变,所以x’仍然是均值为0,协方差
。
所以,无论混合矩阵是A仍是A’,x的分布状况是同样的,那么就没法肯定混合矩阵,也就没法肯定原信号。
在讨论ICA具体算法以前,咱们先来回顾一下几率和线性代数里的知识。
假设咱们的随机变量s有几率密度函数(连续值是几率密度函数,离散值是几率)。为了简单,咱们再假设s是实数,还有一个随机变量x=As,A和x都是实数。令
是x的几率密度,那么怎么求
?
令,首先将式子变换成
,而后获得
,求解完毕。惋惜这种方法是错误的。好比s符合均匀分布的话(
),那么s的几率密度是
,如今令A=2,即x=2s,也就是说x在[0,2]上均匀分布,可知
。然而,前面的推导会获得
。正确的公式应该是
推导方法
更通常地,若是s是向量,A可逆的方阵,那么上式子仍然成立。
ICA算法归功于Bell和Sejnowski,这里使用最大似然估计来解释算法,原始的论文中使用的是一个复杂的方法Infomax principal。
这个公式表明一个假设前提:每一个人发出的声音信号各自独立。有了p(s),咱们能够求得p(x)
左边是每一个采样信号x(n维向量)的几率,右边是每一个原信号几率的乘积的|W|倍。
前面提到过,若是没有先验知识,咱们没法求得W和s。所以咱们须要知道,咱们打算选取一个几率密度函数赋给s,可是咱们不能选取高斯分布的密度函数。在几率论里咱们知道密度函数p(x)由累计分布函数(cdf)F(x)求导获得。F(x)要知足两个性质是:单调递增和在[0,1]。咱们发现sigmoid函数很适合,定义域负无穷到正无穷,值域0到1,缓慢递增。咱们假定s的累积分布函数符合sigmoid函数
求导后
这就是s的密度函数。这里s是实数。
若是咱们预先知道s的分布函数,那就不用假设了,可是在缺失的状况下,sigmoid函数可以在大多数问题上取得不错的效果。因为上式中是个对称函数,所以E[s]=0(s的均值为0),那么E[x]=E[As]=0,x的均值也是0。
知道了,就剩下W了。给定采样后的训练样本
,样本对数似然估计以下:
使用前面获得的x的几率密度函数,得
接下来就是对W求导了,这里牵涉一个问题是对行列式|W|进行求导的方法,属于矩阵微积分。这里先给出结果,在文章最后再给出推导公式。
注意:咱们计算最大似然估计时,假设了与
之间是独立的,然而对于语音信号或者其余具备时间连续依赖特性(好比温度)上,这个假设不能成立。可是在数据足够多时,假设独立对效果影响不大,同时若是事先打乱样例,并运行随机梯度上升算法,那么可以加快收敛速度。
回顾一下鸡尾酒宴会问题,s是人发出的信号,是连续值,不一样时间点的s不一样,每一个人发出的信号之间独立(和
之间独立)。s的累计几率分布函数是sigmoid函数,可是全部人发出声音信号都符合这个分布。A(W的逆阵)表明了s相对于x的位置变化,x是s和A变化后的结果。
s=2时的原始信号
观察到的x信号
使用ICA还原后的s信号
对行列式求导,设矩阵A是n×n的,咱们知道行列式与代数余子式有关,