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

13 独立成分分析(ICA)

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

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

x=As,x = As,

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

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

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

概率密度的线性变换

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

不严谨证明:
P(xt)=tpx(x)dxP(Ast)=Wtpx(As)d(As)P(sWt)=Wtpx(As)Ads=Wtps(s)ds \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}
所以可以得出:
px(As)A=ps(s)px(x)A=ps(Wx)px(x)=ps(Wx)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}

独立成分分析算法

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

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

WW 是一个正方形矩阵,是模型中的参数。给定一个训练集合 {x(i);i=1,...,m}\{x^{(i)};i = 1,...,m\},然后对数似然函数(log likelihood)则为:
l(W)=i=1m(j=1nlogg(wjTx(i))+logW)) l(W)=\sum_{i=1}^m(\sum_{j=1}^n log g'(w_j^Tx^{(i)})+log|W|))
我们要做的就是上面这个函数找出关于 WW 的最大值。通过求导,然后利用前面讲义中给出的定理 WW=W(W1)T\nabla_W|W| = |W|(W^{-1})^T,就可以很容易推导出随机梯度上升公式。对于一个给定的训练样本 x(i)x^{(i)},这个更新规则为:
W:=W+α([12g(w1Tx(i))12g(w2Tx(i))12g(wnTx(i))]x(i)T+(WT)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}
上式中的 α\alpha 是学习速率。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章