13 独立成分分析(ICA)
和PCA类似找到一组新的向量组来表示原样本数据,但是和PCA又完全不同。
先假设有某个样本数据 s∈Rn,这个数据是由 n 个独立的来源(independent sources)生成的。我们观察到的则为:
x=As,
上面式子中的 A 是一个未知的正方形矩阵(square matrix),叫做混合矩阵。 通过重复的观察,我们就得到了训练集 {x(i);i=1,...,m},然后我们的目的是恢复出生成这些样本 x(i)=As(i) 的原始声音源 s(i) 。
s(i) 就是一个 n 维度向量表示第i次录音,而 sj(i) 是第 j 个说话者在第 i 次录音时候发出的声音。x(i) 同样也是一个 n 维度向量,而 xj(i)是第 j 个话筒在第 i 次录制到的声音。(每次的录音是一个样本数据x(i),每个话筒录制到的声音是一个特征。)
设混合矩阵 A 的逆矩阵 W=A−1 是混合的逆向过程,称之为还原矩阵。 那么咱们的目标就是找出这个 W,这样针对给定的话筒录音 x(i),我们就可以通过计算 s(i)=Wx(i) 来还原出来声音源。为了方便起见,我们就用 wiT 来表示 W 的第 i 行,这样就有:
w=⎣⎢⎡−w1T−⋮−wnT−⎦⎥⎤
这样就有 wi∈Rn,通过计算 sj(i)=wjTx(i) 就可以恢复出第 j 个声源了。
概率密度的线性变换
若 s 是一个向量值的分布,密度函数为 ps,而 x=As,其中的 A 是一个可逆的正方形矩阵,那么 x 的密度函数则为:
px(x)=ps(s)⋅∣W∣=ps(Wx)⋅∣W∣
上式中 W=A−1。
不严谨证明:
⇒⇒P(x⩽t)=∫−∞tpx(x)dxP(As⩽t)=∫−∞Wtpx(As)d(As)P(s⩽Wt)=∫−∞Wtpx(As)⋅∣A∣ds=∫−∞Wtps(s)ds
所以可以得出:
⇒⇒px(As)⋅∣A∣=ps(s)px(x)⋅∣A∣=ps(Wx)px(x)=ps(Wx)⋅∣W∣
独立成分分析算法
我们假设每个声源的分布 si 都是通过密度函数 ps 给出,然后联合分布 s 则为:
p(s)=i=1∏nps(si)
利用上一节推导的共识,这就表明对 x=As=W−1s 的密度函数为:
p(x)=i=1∏nps(wiTx)⋅∣w∣
剩下的就只需要去确定每个独立的声源的密度函数 ps 了。
我们假设概率函数是g(s)=1/(1+e−s)。这样就有,ps(s)=g′(s)。
W 是一个正方形矩阵,是模型中的参数。给定一个训练集合 {x(i);i=1,...,m},然后对数似然函数(log likelihood)则为:
l(W)=i=1∑m(j=1∑nlogg′(wjTx(i))+log∣W∣))
我们要做的就是上面这个函数找出关于 W 的最大值。通过求导,然后利用前面讲义中给出的定理 ∇W∣W∣=∣W∣(W−1)T,就可以很容易推导出随机梯度上升公式。对于一个给定的训练样本 x(i),这个更新规则为:
W:=W+α⎝⎜⎜⎜⎛⎣⎢⎢⎢⎡1−2g(w1Tx(i))1−2g(w2Tx(i))⋮1−2g(wnTx(i))⎦⎥⎥⎥⎤x(i)T+(WT)−1⎠⎟⎟⎟⎞
上式中的 α 是学习速率。
在算法收敛之后,就能计算出 s(i)=Wx(i),这样就能恢复出原始的音源了。