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),這樣就能恢復出原始的音源了。