浅谈机器学习中独立成分分析-ICA

独立成分分析

Independent Components Analysis(ICA) 找到一组新的基表示原始数据(和PCA相似),但有不同的目标。

引子

考虑一个鸡尾酒聚会问题。在一个聚会上有\(n\)个人在同时说话,同时有\(n\)个麦克风放在不同的位置,每个麦克风记录\(n\)个说话者的混合声音,由于每个麦克风距离说话者的距离不同,因此每个麦克风记录的声音都不同。如何使用记录的\(n\)个麦克风声音分离出\(n\)个说话者的声音?
将问题公式化:假设有\(n\)个独立的源产生数据\(s\in \mathbb{R}^n\),观察到的数据表示为$$x = As$$其中\(A\)表示混合矩阵(方阵),重复观测得到观测数据集\(\{x^{(i)};i=1, 2, \dots,m\}\)我们的目标是恢复源数据\(s^{(i)}\)(\(x^{(i)}=As^{(i)}\))
对应于鸡尾酒聚会例子,\(s^{(i)}\)是一个\(n\)维的列向量,\(s_j^{(i)}\)是第\(j\)个人在\(i\)时刻说的声音信号,\(x^{(i)}\)也是一个\(n\)维的列向量,\(x_j^{(i)}\)是第\(j\)个麦克风在\(i\)时刻记录的声音信号。
定义\(W = A^{-1}\)是逆混合矩阵。我们的目标是找到\(W\)使得根据观测数据\(x^{(i)}\)恢复源数据\(s^{(i)} = Wx^{(i)}\)。其中符号约定如下:
$$\begin {bmatrix}
\dots & \omega _1^T & \dots \\
& \vdots & \\
\dots & \omega _n^T & \dots
\end {bmatrix}$$其中\(\omega _i \in \mathbb{R}^n\),且j-th源数据可以通过\(s_j^{(i)}=\omega_j^T x^{(i)}\)恢复。

ICA的不确定性(ICA ambiguities)

如果没有关于源信号(\(s\))和混合矩阵(\(A\))的先验知识,只根据观测信号(\(x\))不能准确恢复源信号。

  • 如果将\(s\)的顺序打乱,只需要将\(A\)乘置换矩阵(实现交换矩阵的行或列功能),等式依然成立,因此源信号\(s\)无法确定,幸运的是,对于大多数应用,这并没有影响
  • 如果\(A\)扩大两倍为\(2A\),\(s\)变为\(0.5s\),则等式\(x=2A\cdot(0.5)s\)依然成立。一般来说,如果\(A\)的某一列被缩放通过一个因子\(\alpha\)则对应的源信号被缩放通过因子\(\dfrac{1}{\alpha}\),则等式\(x=As\)依然成立,因此无法确定源信号\(s\)。具体来说,如果\(w_i\)通过算法被缩放\(\alpha\),则源信号\(s_i=w_i^T x\)也缩放相同的倍数,然而对于一些应用(声音、EEG等)这并不影响
  • 源信号需要是非高斯分布,如果源信号是高斯分布,例如\(n=2\),\(s\sim\mathcal{N}(0, I)\)其中\(I\)是一个\(2\times 2\)的单位阵。根据\(x=As\)可知\(x\)也是一个高斯分布(高斯分布的线性组合还是高斯分布)有均值\(0\),协方差为\(E(xx^T)=E(Ass^TA^T)=AA^T\)。现在令\(R\)是任意的正交矩阵\(RR^T=R^TR=I\),令\(A’=AR\),如果源数据被混合根据\(A’\)而不是\(A\),可以得到观测\(x’=A’s\),\(x’\)也是高斯分布,有均值\(0\),协方差\(E(x’(x’)^T)=E(A’ss^T(A’)^T)=E(ARss^T(AR)^T)=ARR^TA^T=AA^T\),因此混合矩阵不管是\(A\)还是\(A’\),都可以观测数据\(x\sim\mathcal{N}(0, AA^T)\),因此不能确定混合矩阵\(A\),无法确定源信号\(s\)

密度函数和线性变换

假设有随机变量\(s\),其密度函数为\(p_s(s)\),有随机变量\(x=As\),则\(p_x(x) = p_s(Wx)\cdot |W|\)其中\(W=A^{-1}\),推导如下:概率的定义为$$P(X\le a)=\int_{-\infty}^{a}f(x)dx$$则有$$P(X\le a)=P(As\le x)=P(s\le Wx)$$则$$p_x(x)=P’(X)=P’(Wx)|W|=p_s(Wx)|W|$$

ICA算法

假设每一个源信号\(s_i\)的概率密度为\(p_s\),则源信号的联合分布为$$p(s)=\prod_{i=1}^{n}p_s(s_i)$$前提假设为源信号是独立的。根据\(p_x(x) = p_s(Wx)\cdot |W|\)得到$$p(x)=p_s(Wx)|W|=\prod_{i=1}^{n}p_s(w_i ^Tx)\cdot |W|$$根据之前讨论,若没有关于源信号(\(s\))和混合矩阵(\(A\))的先验知识,只根据观测信号(\(x\))不能准确恢复源信号,因此需要知道\(p_s(s_i)\),根据之前讨论,不能选取高斯分布密度函数,默认选择sigmoid作为累积分布函数(cdf)$$g(s)=\dfrac{1}{1+e^{-s}}$$其导数为$$p_s(s)=g’(s)=\dfrac{e^s}{(1+e^s)^2}$$方阵\(W\)是需要求的参数,被给一个训练集\(\{x^{(i)};i=1, 2, \dots,m\}\),对数似然函数为$$l(W)=\sum_{i=1}^{m}\big(\sum_{j=1}^{n}\log g’(w_j^T x^{(i)})+\log|W|\big)$$对\(W\)求导,其中对行列式的求导如下$$\bigtriangledown_W|W|=|W|(W^{-1})^T$$得到随机梯度下降的学习规则如下
$$W:=W+\alpha\Bigg({\begin{bmatrix}
1-2g(w_1^T x^{(i)})\\
1-2g(w_2^T x^{(i)})\\
\vdots \\
1-2g(w_n^T x^{(i)})
\end {bmatrix}}
x^{(i)^T}+(W^T)^{-1}\Bigg)$$
其中\(\log g’(s)\)的导数为\(1-2g(s)\),\(\alpha\)为学习率

讨论

  • 如果有关于源信号密度函数的先验知识,直接带入似然函数求解即可,若没有相关的先验知识,则sigmoid函数被认为是合理的默认,对于大多是情形工作不错。同样,上述ICA算法讨论基于一个假设:数据\(x^{(i)}\)被预处理为有\(0\)均值,这是必要的,因为上述讨论假设\(p_s(s)=g’(s)\),有\(E[s]=0\)(sigmoid函数的导数是关于\(x=0\)对称,因此有关于\(s\)的随机变量均值为\(0\)),得到\(E[x]=E[As]=0\)
  • 上述ICA算法的讨论,当写下似然函数,隐式假设观测数据\(x^{(i)}\)是独立的(针对不同的\(i\),注意不是说\(x^{(i)}\)的不同坐标是独立的),但是这个假设对于语音信号和其他的时间序列(各个时刻不是独立的)是不正确的,但是在样本足够多时,假设独立对效果影响不大

参考:Independent Components Analysis (CS229)