ICA算法之数学原理

Posted by SkyHigh on April 1, 2017

ICA算法之数学原理

ICA的数学推导

ICA算法的思路比较简单,但是推导过程比较复杂(可以参考matrix手册推导一下),本文只是梳理了推理路线,忽视了具体的推导过程,如果不详之处,还望见谅。

假设我们有n个混合信号源$X\subset{R^{n}}$和n个独立信号$S\subset{R^{n}}$,且每个混合信号可以由n个独立信号的线性组合产生,即:

假设我们现在对于每个混合信号,可以取得m个样本,则有如下$n*m$的样本矩阵:

由于S中的n个独立信号是相互独立的,则它们的联合概率密度为:

由于$s=Wx$,因此我们可以得出:

考虑目前有m个样本,则可以得到所有样本的似然函数:

取对数之后,得到:

之后只要通过梯度下降法对$lnL$求出最大值即可,即求使得该样本出现概率最大的参数$W$。
此时假设我们上面的各个独立信号的概率分布函数sigmoid函数,但是不确定这里的g函数和下面fastICA中的g函数是否有关联):

最终,我们求得:

其中:

由于伴随矩阵具有以下性质:

因此我们可以求出:

因此可以得到梯度下降更新公式:

至此,ICA的基本推理就此结束。下面我们来看一下fastICA的算法过程(没有数学推理)。

fastICA的算法步骤

观测信号构成一个混合矩阵,通过数学算法进行对混合矩阵A的逆进行近似求解分为三个步骤:

  • 去均值。去均值也就是中心化,实质是使信号X均值是零。
  • 白化。白化就是去相关性。
  • 构建正交系统。

在常用的ICA算法基础上已经有了一些改进,形成了fastICA算法。fastICA实际上是一种寻找$w^Tz(Y=w^Tz)$的非高斯最大的不动点迭代方案。具体步骤如下:

  1. 观测数据的中心化(去均值)
  2. 数据白化(去相关),得到z
  3. 选择需要顾及的独立源的个数n
  4. 随机选择初始权重W(非奇异矩阵)
  5. 选择非线性函数g
  6. 迭代更新:
    • $w_i \leftarrow E\{zg(w_i^Tz)\}-E\{g^{'}(w_i^Tz)\}w$
    • $W \leftarrow (WW^T)^{-1/2}W$
  7. 判断收敛,是下一步,否则返回步骤6
  8. 返回近似混合矩阵的逆矩阵

fastICA中常用的g函数

参考《Indepdent Componet analysis》一书,找到了如下几点:

也就是说,G函数常用的有logcosh和和exp函数,它们对应的导数就是g函数,并且文中还提供了一种g函数,即cube函数。
具体细节读者可以参考“参考”里面的《Indepdent Componet analysis》一书,里面有详细的介绍。

白化的补充

白化其实就是将原始数据$X$,通过一个线性变换矩阵$V$,变成$Z$,即:

且Z有如下性质:

假设$X$的协方差矩阵为$C_x=E\{XX^T\}=PDP^T$,$P$是$C_x$的单位特征向量,$D$为特征值组成的对角阵,那么,可以知道当:

的时候,$ZZ^T$的协方差矩阵为一个单位阵。

这里说明一下,PCA保证各个信号之间无相关性(即协方差矩阵的非对角元素为0),而白化则是保持无相关性的同时,保证对角元素值为1。白化并不是唯一的,只要保证最后产生的$Z$的协方差矩阵是单位阵即可。

参考

ICA(独立成分分析)在信号盲源分离中的应用
史上最直白的ICA教程
史上最直白的ICA教程pdf
Independent Component Analysis: Algorithms and Applications
白化
Indepdent Componet analysis