机器学习笔记——13 独立成分分析(ICA)的原理及利用MLE求解解混矩阵

    xiaoxiao2025-04-27  18

    机器学习笔记——13 独立成分分析(ICA)的原理及利用MLE求解解混矩阵

    本文主要介绍ICA的基本原理,介绍PCA与ICA的区别,然后介绍如何从MLE的角度求解出解混阵W(Unmixing Matrix)。

    PCA 与 ICA 的区别

    独立成分分析ICA,与主成分分析PCA在形式上是比较像的,他们都是在寻找投影方向 u u u,得到新聚合的数据维度 s = u T x s = u^Tx s=uTx。但是,他们针对的目的是不同的,顾名思义,PCA是寻找主要成分,它要求的投影后的维度,在方差上有最好的表现,因为根据信息熵的理论,数据越离散,其携带的信息量越大;而ICA则不同,它想要寻找独立成分。

    ICA的基本原理

    假设我们拿到一组样本数据,其中 x ( i ) ∈ R n x^{(i)} \in R^{n} x(i)Rn,而这些数据是经过线性混合过的,这也是ICA的基本假设。也就是真实的数据源其实是 s ( i ) ∈ R n s^{(i)} \in R^n s(i)Rn,然后经过一个混合矩阵(Mixing Matrix)A,得到的 x x x,方程表示为: x = A s x = As x=AsICA试图通过一组样本数据 x x x,然后分析出源数据s,我们记解混矩阵为W,则有 W = A − 1 W = A^{-1} W=A1。所以问题的根本就在获得 W W W。为了对ICA有一个更为直观的认识,我们可以举一个经典的鸡尾酒聚会例子。在这场聚会中,有n个人同时在打电话,而房间中有n个声音收集器,每一个收集器获得的都是这n个人声音的线性组合,因此问题在于如何从n个收集器收集到的声音信号恢复出每一个讲话的源信息。

    解混矩阵W的模糊性

    根据我们有的样本数据,对于方程 x = A s x = As x=As,要想确定A,是有很过不确定的。

    A的排列。假设P是一个排列矩阵,那么显然我们无法分辨A和PA;A的尺度。假设 α \alpha α是一个实数,则我们也无法分辨 A A A α A \alpha A αA; 注:上述两条实际上不影响我们的目的,即分解出独立成分。比如在鸡尾酒聚会中,它们最后影响的是我们无法确定说话人的位置以及音量,但对说话的内容没有影响。假如源信息s服从标准多元正态分布的话,那么x显然也是服从一个多元正态分布,那么对于一个正交矩阵U,我们将没有办法区分 A A A A U AU AU。因此,ICA无法处理s服从多元正态分布的情况。

    ICA算法

    现在的问题是,我们如果估计出W,一旦估计出W,则我们可以利用W恢复出源信息,即 s = W x s = Wx s=Wx我们我们假设源信息经过适当的处理后,均是独立同分布的。一般情况下,我们假设 s j s_j sj的分布函数是 F ( s ) = g ( s ) = e s 1 + e s F(s) = g(s) = \frac{e^s}{1+e^s} F(s)=g(s)=1+eses这是我们熟悉的sigmoid函数,它可以作为一个合适的分布函数。其具有两个性质,阐述如下

    一阶导: F ′ ( s ) = F ( s ) ( 1 − F ( s ) ) F^{'}(s) = F(s)(1-F(s)) F(s)=F(s)(1F(s))二阶导: F ′ ′ ( s ) = F ′ ( s ) ( 1 − 2 F ( s ) ) F^{''}(s) = F^{'}(s)(1-2F(s)) F(s)=F(s)(12F(s))

    那么s的联合分布函数为 p ( s ) = ∏ i = 1 n p s ( s i ) = ∏ i = 1 n g ′ ( s i ) p(s) = \prod_{i = 1}^{n}p_s(s_i) = \prod_{i = 1}^{n}g^{'}(s_i) p(s)=i=1nps(si)=i=1ng(si)根据概率论中,多维随机变量函数分布的理论,我们可以导出x的联合分布 p ( x ) = ∏ i = 1 n g ′ ( w i T x ) ∣ W ∣ p(x) = \prod_{i = 1}^{n}g^{'}(w_i^Tx)|W| p(x)=i=1ng(wiTx)W因此我们就找到一个可以估计出解混矩阵W的方法,极大似然法MLE。样本的对数似然函数为 ℓ ( W ) = ∑ i = 1 m ( ∑ j = 1 n log ⁡ g ′ ( w j T x ( i ) ) + log ⁡ ∣ W ∣ ) \ell(W) = \sum_{i = 1}^{m}(\sum_{j = 1}^{n}\log g^{'}(w_j^Tx^{(i)}) + \log |W|) (W)=i=1m(j=1nlogg(wjTx(i))+logW)求该函数关于矩阵 W W W的导数,我们需要用到一个事实: ∇ W ∣ W ∣ = ∣ W ∣ ( W − 1 ) T \nabla_{W}|W| =|W|(W^{-1})^T WW=W(W1)T。再利用sigmoid函数的性质,则可以求得导数为 ℓ ′ ( W ) = ∑ i = 1 m ( [ 1 − 2 g ( w 1 T x ( i ) ) 1 − 2 g ( w 2 T x ( i ) ) ⋮ 1 − 2 g ( w n T x ( i ) ) ] x ( i ) T + ( W T ) − 1 ) \ell^{'}(W) =\sum_{i = 1}^{m}\left( \left[ \begin{matrix} 1-2g(w_1^Tx^{(i)}) \\ 1-2g(w_2^Tx^{(i)}) \\ \vdots \\ 1-2g(w_n^Tx^{(i)}) \\ \end{matrix} \right] x^{(i)^T} + (W^T)^{-1} \right) (W)=i=1m12g(w1Tx(i))12g(w2Tx(i))12g(wnTx(i))x(i)T+(WT)1因此利用随机梯度上升法,我们得到矩阵W的更新规则为: W : = W + α ( [ 1 − 2 g ( w 1 T x ( i ) ) 1 − 2 g ( w 2 T x ( i ) ) ⋮ 1 − 2 g ( w n T x ( i ) ) ] x ( i ) T + ( W T ) − 1 ) W:= W + \alpha\left( \left[ \begin{matrix} 1-2g(w_1^Tx^{(i)}) \\ 1-2g(w_2^Tx^{(i)}) \\ \vdots \\ 1-2g(w_n^Tx^{(i)}) \\ \end{matrix} \right] x^{(i)^T} + (W^T)^{-1} \right) W:=W+α12g(w1Tx(i))12g(w2Tx(i))12g(wnTx(i))x(i)T+(WT)1最终算法终止计算出 W W W的估计后,我们便可以利用它恢复出独立的成分 s ( i ) = W x ( i ) s^{(i)} = Wx^{(i)} s(i)=Wx(i)

    最新回复(0)