独立成分分析算法(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)以恢复原始声源。
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- 反向传播(Backpropagation)算法的数学原理
- 也谈 机器学习到底有没有用 ?
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误
- 机器学习书单
- 北美常用的机器学习/自然语言处理/语音处理经典书籍
- 如何提升COBOL系统代码分析效率
- 自动编程体系设想(一)
- 自动编程体系设想(一)
- 支持向量机(SVM)算法概述
- [Ng机器学习公开课1]机器学习概述