机器学习(十三)——独立成分分析(ICA)

13 独立成分分析(ICA)

和PCA类似找到一组新的向量组来表示原样本数据,但是和PCA又完全不同。

先假设有某个样本数据 s ∈ R n s \in R^n sRn,这个数据是由 n n n 个独立的来源(independent sources)生成的。我们观察到的则为:

x = A s , x = As, x=As,

上面式子中的 A A A 是一个未知的正方形矩阵(square matrix),叫做混合矩阵。 通过重复的观察,我们就得到了训练集 { x ( i ) ; i = 1 , . . . , m } \{x^{(i)} ; i = 1, . . . , m\} {x(i);i=1,...,m},然后我们的目的是恢复出生成这些样本 x ( i ) = A s ( i ) x^{(i)} = As^{(i)} x(i)=As(i) 的原始声音源 s ( i ) s^{(i)} s(i)

s ( i ) s^{(i)} s(i) 就是一个 n n n 维度向量表示第 i i i次录音,而 s j ( i ) s_j^{(i)} sj(i) 是第 j j j 个说话者在第 i i i 次录音时候发出的声音。 x ( i ) x^{(i)} x(i) 同样也是一个 n n n 维度向量,而 x j ( i ) x_j^{(i)} xj(i)是第 j j j 个话筒在第 i i i 次录制到的声音。(每次的录音是一个样本数据 x ( i ) x^{(i)} x(i),每个话筒录制到的声音是一个特征。)

设混合矩阵 A A A 的逆矩阵 W = A − 1 W = A^{-1} W=A1 是混合的逆向过程,称之为还原矩阵。 那么咱们的目标就是找出这个 W W W,这样针对给定的话筒录音 x ( i ) x^{(i)} x(i),我们就可以通过计算 s ( i ) = W x ( i ) s^{(i)} = Wx^{(i)} s(i)=Wx(i) 来还原出来声音源。为了方便起见,我们就用 w i T w_i^T wiT 来表示 W W W 的第 i i i 行,这样就有:
w = [ − w 1 T − ⋮ − w n T − ] w=\begin{bmatrix} -w_1^T- \\ \vdots \\ -w_n^T- \end{bmatrix} w=w1TwnT
这样就有 w i ∈ R n w_i \in R^n wiRn,通过计算 s j ( i ) = w j T x ( i ) s_j^{(i)} = w_j^T x^{(i)} sj(i)=wjTx(i) 就可以恢复出第 j j j 个声源了。

概率密度的线性变换

s s s 是一个向量值的分布,密度函数为 p s p_s ps,而 x = A s x = As x=As,其中的 A A A 是一个可逆的正方形矩阵,那么 x x x 的密度函数则为:
p x ( x ) = p s ( s ) ⋅ ∣ W ∣ = p s ( W x ) ⋅ ∣ W ∣ p_x(x) = p_s(s) · |W|=p_s(Wx) · |W| px(x)=ps(s)W=ps(Wx)W
上式中 W = A − 1 W = A^{-1} W=A1

不严谨证明:
P ( x ⩽ t ) = ∫ − ∞ t p x ( x ) d x ⇒ P ( A s ⩽ t ) = ∫ − ∞ W t p x ( A s ) d ( A s ) ⇒ P ( s ⩽ W t ) = ∫ − ∞ W t p x ( A s ) ⋅ ∣ A ∣ d s = ∫ − ∞ W t p s ( s ) d s \begin{aligned} &P(x\leqslant t)=\int^t_{-\infty}p_x(x)dx\\ \Rightarrow &P(As\leqslant t)=\int^{Wt}_{-\infty}p_x(As)d(As)\\ \Rightarrow &P(s\leqslant Wt)=\int^{Wt}_{-\infty}p_x(As)· |A|ds=\int^{Wt}_{-\infty}p_s(s)ds\\ \end{aligned} P(xt)=tpx(x)dxP(Ast)=Wtpx(As)d(As)P(sWt)=Wtpx(As)Ads=Wtps(s)ds
所以可以得出:
p x ( A s ) ⋅ ∣ A ∣ = p s ( s ) ⇒ p x ( x ) ⋅ ∣ A ∣ = p s ( W x ) ⇒ p x ( x ) = p s ( W x ) ⋅ ∣ W ∣ \begin{aligned} &p_x(As) · |A|=p_s(s)\\ \Rightarrow &p_x(x) · |A|=p_s(Wx)\\ \Rightarrow &p_x(x)=p_s(Wx) · |W| \end{aligned} px(As)A=ps(s)px(x)A=ps(Wx)px(x)=ps(Wx)W

独立成分分析算法

我们假设每个声源的分布 s i s_i si 都是通过密度函数 p s p_s ps 给出,然后联合分布 s s s 则为:
p ( s ) = ∏ i = 1 n p s ( s i ) p(s)=\prod_{i=1}^n p_s(s_i) p(s)=i=1nps(si)
利用上一节推导的共识,这就表明对 x = A s = W − 1 s x = As = W^{-1}s x=As=W1s 的密度函数为:
p ( x ) = ∏ i = 1 n p s ( w i T x ) ⋅ ∣ w ∣ p(x)=\prod_{i=1}^n p_s(w_i^T x)\cdot |w| p(x)=i=1nps(wiTx)w
剩下的就只需要去确定每个独立的声源的密度函数 p s p_s ps 了。

我们假设概率函数是 g ( s ) = 1 / ( 1 + e − s ) g(s) = 1/(1 + e^{-s}) g(s)=1/(1+es)。这样就有, p s ( s ) = g ′ ( s ) p_s(s) = g'(s) ps(s)=g(s)

W W W 是一个正方形矩阵,是模型中的参数。给定一个训练集合 { x ( i ) ; i = 1 , . . . , m } \{x^{(i)};i = 1,...,m\} {x(i);i=1,...,m},然后对数似然函数(log likelihood)则为:
l ( W ) = ∑ i = 1 m ( ∑ j = 1 n l o g g ′ ( w j T x ( i ) ) + l o g ∣ W ∣ ) ) l(W)=\sum_{i=1}^m(\sum_{j=1}^n log g'(w_j^Tx^{(i)})+log|W|)) l(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,就可以很容易推导出随机梯度上升公式。对于一个给定的训练样本 x ( i ) x^{(i)} x(i),这个更新规则为:
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\begin{pmatrix} \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} \end{pmatrix} W:=W+α12g(w1Tx(i))12g(w2Tx(i))12g(wnTx(i))x(i)T+(WT)1
上式中的 α \alpha α 是学习速率。

在算法收敛之后,就能计算出 s ( i ) = W x ( i ) s^{(i)} = Wx^{(i)} s(i)=Wx(i),这样就能恢复出原始的音源了。

你可能感兴趣的:(算法)