独立成分分析算法(ICA)

ICA算法

考虑这样的一个问题,叫做”鸡尾酒派对问题”。这里,在派对上,有n个说话的人单独地说话,并且所有在房间里的麦克分只能收到n个说话人的重叠的声音。但是我们说有n个不同的麦克分位于房间里,因为每个麦克分距离每个说话者的距离是不同的。使用这些麦克分的录音记录,我们是否可以分离出原始n个说话者的语音信号呢?
为了正式化这个问题,我们假设我们有一些数据 sRn ,是由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=A1
所以可以得到
p(x)=ni=1ps(wTix)|W|
剩下要做的就是具化每个 ps
回想,给定一个实随机变量z,它的累积分布函数(cdf)的定义为 F(z0)=P(zz0)=z0pz(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 ,其对数似然函数为:
独立成分分析算法(ICA)_第1张图片
我们可以就W而言最大化这个函数,推导的过程需要知道 W|W|=|W|(W(1))T 我们通过随机梯度下降算法,推得对于每个训练样例 x(i) 其更新规则为:
独立成分分析算法(ICA)_第2张图片
其中 α 是学习速率。
在算法收敛之后,我们可以通过计算 s(i)=Wx(i) 以恢复原始声源。

你可能感兴趣的:(机器学习)