您的位置:首页 > 其它

独立成分分析算法(ICA)

2016-03-01 15:47 232 查看

ICA算法

考虑这样的一个问题,叫做”鸡尾酒派对问题”。这里,在派对上,有n个说话的人单独地说话,并且所有在房间里的麦克分只能收到n个说话人的重叠的声音。但是我们说有n个不同的麦克分位于房间里,因为每个麦克分距离每个说话者的距离是不同的。使用这些麦克分的录音记录,我们是否可以分离出原始n个说话者的语音信号呢?

为了正式化这个问题,我们假设我们有一些数据s∈Rn,是由n个独立的声音源产生的,我们可以得到:

x=As

这里A是一个未知的方阵叫做混合矩阵。如果我们给定一个数据集{x(i);i=1,....,m},我们的目标是恢复声源s(i),这个声源产生了我们的数据(x(i)=As(i))

针对这个问题我们推导出ICA算法。

我们假设每个声源si的分布是由密度ps给出,所以声源s的联合分布是由下式给出:∏ni=1ps(si)

记住想要模型化联合分布为边缘分布的乘积,必须满足每个声源相互独立的假设。

由于公式px(x)=ps(Wx)⋅|W|,W=A−1

所以可以得到

p(x)=∏ni=1ps(wTix)⋅|W|

剩下要做的就是具化每个ps。

回想,给定一个实随机变量z,它的累积分布函数(cdf)的定义为F(z0)=P(z≤z0)=∫z0−∞pz(z)dz,同时z的密度函数也可以通过pz(z)=F′(z)得到。

我们要选的cdf必须是从0到1单调上升的函数。我们不能选高斯分布,因为ICA算法对其不起作用(由于其分布的旋转对称性)。所以一般默认选择sigmoid函数比较合理,即g(s)=1/(1+e(−s)),因此ps(s)=g′(s)。

方阵W是我们模型的参数,给定一个训练集x(i);i=1,...,m,其对数似然函数为:



我们可以就W而言最大化这个函数,推导的过程需要知道∇W|W|=|W|(W(−1))T我们通过随机梯度下降算法,推得对于每个训练样例x(i)其更新规则为:



其中α是学习速率。

在算法收敛之后,我们可以通过计算s(i)=Wx(i)以恢复原始声源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息