盲信号分离算法是怎样实现的?

已邀请:

auroralinan - Machine Learning, Python, PPT.

推荐来自: 秋风暖暖 離娮 氪星人

最近刚刚学习了ICA,抛砖引玉期待大神的解答。
 
盲源信号分离(Blind Source Separation)中一种重要的方法是独立成分分析(Independent Component Analysis, ICA)
 
假定一种情况,在一个聚会上有N个人同时说话,这时有N个话筒在记录大家说话的声音,我们需要从这N个话筒收集的信息中分离出这N个人说的话。(另外,还有人多于话筒,话筒多于人的情况,我们只讨论N=N的情况)
 
我们假设这N个人说话被分为了M个部分,
即源信号
S=[s11 … … s1m
   s21 … … s2m
   … … … …
   sn1 … … snm]
混合信号
X=[x11 … … x1m
   x21 … … x2m
   … … … …
   xn1 … … xnm]
我们假定X是S的线性组合,即X=AS,如果我们可以根据X计算A的逆矩阵W => S=WX,那么我们就能计算出源信号S。
这里我们做两个个假定,1.假定源信号独立,2.源信号非高斯分布,这里解释一下假定2,我们知道根据中心极限定理,大量非高斯分布相加会使随机变量趋于高斯分布,那么如果我们能找到一组独立信号,即找到一组最不像高斯分布的分布,那么就最有可能是源信号。为什么?根据熵和信息的定义,这种情况是熵最高,即信息最大的情况。
 
那么我们只要最小化互信息(KL散度)或最大化分布之间的非高斯性(峰度近似法,负熵)就可以得到我们预期的结果。关于具体实现,容我再复习一下,以后补充。
 
ML新人一枚,如有错误欢迎指正。
 
 

要回答问题请先登录注册