独立成分分析(ICA)的负熵最大化与快速ICA算法
1. 问题描述
独立成分分析(Independent Component Analysis, ICA)是一种用于盲源分离的统计方法。假设观测信号是若干个未知独立源的线性混合,目标是从观测信号中恢复出源信号。与主成分分析(PCA)寻找不相关成分不同,ICA要求恢复的成分之间统计独立。
- 关键假设:
- 各源信号相互独立。
- 至多一个源服从高斯分布(若多个高斯分布混合,独立性无法唯一确定)。
- 核心难点:如何度量独立性?ICA常用负熵最大化作为独立性度量,并通过快速ICA算法高效求解。
2. 独立性度量与优化目标
2.1 独立性定义
随机变量独立 ⇔ 联合概率密度等于边缘密度的乘积:
\[p(s_1, s_2, \dots, s_n) = \prod_i p(s_i) \]
实际中无法直接计算概率密度,通常利用非高斯性作为间接指标(中心极限定理:独立随机变量混合后更接近高斯分布)。
2.2 非高斯性度量:负熵
- 熵衡量随机性:\(H(y) = -\int p(y) \log p(y) dy\)
- 负熵定义(近似非负):
\[J(y) = H(y_{\text{gauss}}) - H(y) \]
其中 \(y_{\text{gauss}}\) 是与 \(y\) 同方差的高斯变量。负熵 \(J(y) \geq 0\),仅在 \(y\) 为高斯时为零。
- 近似计算:为避免密度估计,常采用高阶累积量近似或非多项式矩函数近似:
\[J(y) \approx c \left[ E\{G(y)\} - E\{G(\nu)\} \right]^2 \]
其中 \(\nu\) 是标准高斯变量,\(G\) 是非二次函数(如 \(G(y) = \log \cosh(y)\) 或 \(G(y) = -\exp(-y^2/2)\))。
3. 信号混合模型与预处理
3.1 线性混合模型
设观测信号 \(\mathbf{x} = (x_1, \dots, x_m)^T\) 由源信号 \(\mathbf{s} = (s_1, \dots, s_n)^T\) 线性混合:
\[\mathbf{x} = \mathbf{A} \mathbf{s} \]
其中 \(\mathbf{A}\) 是未知混合矩阵(\(m \times n\),通常 \(m \geq n\))。目标是寻找分离矩阵 \(\mathbf{W}\) 使 \(\mathbf{y} = \mathbf{W} \mathbf{x}\) 逼近 \(\mathbf{s}\)。
3.2 预处理步骤
- 中心化:\(\mathbf{x} \leftarrow \mathbf{x} - E[\mathbf{x}]\)
- 白化:通过 PCA 将 \(\mathbf{x}\) 变换为 \(\mathbf{z} = \mathbf{V} \mathbf{x}\),使得 \(E[\mathbf{z} \mathbf{z}^T] = \mathbf{I}\)(各分量不相关、单位方差)。
- 白化后模型简化为 \(\mathbf{z} = \mathbf{U} \mathbf{s}\),其中 \(\mathbf{U}\) 是正交矩阵。问题转化为寻找正交分离矩阵 \(\mathbf{W}\) 使 \(\mathbf{y} = \mathbf{W} \mathbf{z}\) 独立。
4. 快速ICA算法推导
4.1 单成分提取
目标:找到单位向量 \(\mathbf{w}\) 使 \(y = \mathbf{w}^T \mathbf{z}\) 的负熵最大化。
- 优化问题:
\[\max_{\mathbf{w}} J(\mathbf{w}^T \mathbf{z}), \quad \text{s.t.} \ \|\mathbf{w}\| = 1 \]
- 采用近似负熵 \(J(y) \propto [E\{G(y)\} - E\{G(\nu)\}]^2\),省略常数后等价于:
\[\max_{\mathbf{w}} E\{G(\mathbf{w}^T \mathbf{z})\}, \quad \text{s.t.} \ E\{(\mathbf{w}^T \mathbf{z})^2\} = 1 \]
4.2 不动点迭代
用拉格朗日乘子法求解,得到梯度:
\[\nabla_{\mathbf{w}} E\{G(\mathbf{w}^T \mathbf{z})\} - \beta \mathbf{w} = 0 \]
令 \(g\) 为 \(G\) 的导数(如 \(G(y) = \log \cosh(y)\) 时 \(g(y) = \tanh(y)\)),则梯度为 \(E\{\mathbf{z} g(\mathbf{w}^T \mathbf{z})\}\)。
通过牛顿迭代法化简,得到快速ICA的不动点迭代:
- 初始化单位向量 \(\mathbf{w}\)。
- 迭代更新:
\[\mathbf{w}^+ = E\{\mathbf{z} g(\mathbf{w}^T \mathbf{z})\} - E\{g'(\mathbf{w}^T \mathbf{z})\} \mathbf{w} \]
- 正交化(用于多成分):\(\mathbf{w} \leftarrow \mathbf{w}^+ / \|\mathbf{w}^+\|\)。
- 重复直至收敛(\(\mathbf{w}\) 变化极小)。
5. 多成分扩展与算法步骤
5.1 逐成分提取
每提取一个成分后,从 \(\mathbf{z}\) 中减去其投影,避免重复提取相同成分。更高效的做法是对称正交化:
- 同时估计所有 \(n\) 个成分的矩阵 \(\mathbf{W} = [\mathbf{w}_1, \dots, \mathbf{w}_n]^T\)。
- 每次迭代后对 \(\mathbf{W}\) 做对称正交化:
\[\mathbf{W} \leftarrow (\mathbf{W} \mathbf{W}^T)^{-1/2} \mathbf{W} \]
(通过特征值分解实现)。
5.2 完整快速ICA算法步骤
- 输入观测数据 \(\mathbf{X}\)(每行一个观测变量),中心化。
- 白化:计算 \(\mathbf{Z} = \mathbf{V} \mathbf{X}\)。
- 初始化正交矩阵 \(\mathbf{W}\)(随机)。
- 对每个 \(\mathbf{w}_i\) 进行不动点迭代:
- \(\mathbf{w}_i^+ = E\{\mathbf{Z} g(\mathbf{w}_i^T \mathbf{Z})\} - E\{g'(\mathbf{w}_i^T \mathbf{Z})\} \mathbf{w}_i\)
- 对称正交化:\(\mathbf{W} = (\mathbf{W} \mathbf{W}^T)^{-1/2} \mathbf{W}\)
- 重复步骤4直至 \(\mathbf{W}\) 收敛。
- 输出分离信号:\(\mathbf{Y} = \mathbf{W} \mathbf{Z}\)。
6. 关键细节与注意事项
- 函数 \(G\) 的选择:
- \(G_1(y) = \log \cosh(a_1 y)\):适合超高斯信号(尖峰分布)。
- \(G_2(y) = -\exp(-y^2/2)\):适合次高斯信号(平缓分布)。
- 收敛性:不动点迭代通常以二次速度收敛,比梯度法快。
- 顺序不确定性:输出成分的顺序和幅度(符号)可能颠倒,这是 ICA 固有的模糊性。
7. 与PCA的对比
| 特性 | PCA | ICA |
|---|---|---|
| 目标 | 方差最大化、去相关 | 独立性最大化、非高斯性 |
| 成分 | 正交 | 统计独立(不一定正交) |
| 高斯性 | 对高斯数据最优 | 要求非高斯源 |
通过负熵最大化与快速不动点迭代,ICA 可高效分离混合信号(如脑电图中去除眼电干扰、音频信号分离等)。算法核心在于用非多项式矩近似负熵,并通过牛顿法推导出简洁的迭代更新。