Andrew Ng机器学习公开课笔记–Independent Components Analysis
网易公开课,第15课
notes,11
参考,
PCA本质是旋转找到新的基(basis),即坐标轴,并且新的基的维数大大降低
ICA也是找到新的基,但是目的是完全不一样的,而且ICA是不会降维的
对于ICA,最经典的问题,“鸡尾酒会”问题
在鸡尾酒会,上很多人同时在说话,还有背景音乐,如果我们放若干个话筒进行声音采集
是否可以从采集到的数据中,分离出每个人独立的声音
假设有n个不同的人,m个时间采集点,一般会用和人数一样多的话筒,也是n个
is an n-dimensional vector,
is the acoustic reading recorded by microphone j at time i
is an n-dimensional vector,
is the sound that speaker j was uttering at time i.
x向量,表示在时间点i,n个采集器收集到的声音数据
s向量,表示在时间点i,n个人真正发出的声音
那么x中每个值,一定是s中所有的值的一个线性变换产生的,话筒可能收集到从所有人发出的声音,根据远近或其他环境不同,不同的线性变换参数
所以可以表示成,
A is an unknown square matrix called the mixing matrix
现在问题比较清晰,我们可以观察到x,需要求出s
那么只要我们可以求出A,就可以求出x
设,
s= Wx
所以我们的目标变成求出W denote the i-th row of W, so that
the j-th source can be recovered by computing
ICA ambiguities
很明显,如果没有任何先验知识,光凭x= As,是不可能求出唯一的A和s的
比如你求出A,但是2A也是可以的
或者PA,也是可以的,P为permutation matrix,其实就是调换其中行的位置,因为只要相应的调换S中人的位置即可
但是这些对于我们的例子影响不大,比如A和2A只是音量大小不同而已
并且s一定是非高斯分布才可以使用ICA
因为高斯分布的密度函数是rotationally symmetric
比如,x = As,其中s满足高斯分布,那么x也一定满足高斯分布
并且协方差为,
且x满足 分布
此时,我们改变A
设R be an arbitrary orthogonal (less formally, a rotation/reflection) matrix,
那么有,
你会发现 的分布没有变化,仍然是
分布
所以如果s是高斯分布,你根本无法求出唯一的A,因为对于不同的A,你会得到相同的观察值x
ICA algorithm
下面直接来看ICA算法如何求出W
The algorithm we describe is due to Bell and Sejnowski, and the interpretation we give will be of their algorithm as a method for maximum likelihood estimation.
仍然是用最大似然来求解这个问题,
Joint distribution为,假设sources 之间都是独立的
因为前面有,
所以有,
为何多了个W的行列式,参考讲义的证明,不加是错误的
前面说了,如果没有任何先验知识,是不可能求出W的,
所以这边我们需要假设p(s)的分布
这里是通过假设cumulative distrbution function (cdf) F,来求出p的
F的定义,区间上的概念和
所以有,
F(x)要满足两个性质是:单调递增和在[0,1],所以sigmoid函数很适合
于是有,
那么现在目标函数,log likelihood为,
然后用随机梯度下降,得到W,完成求解
其中后面的梯度就是对log likelihood求导得到的
对W行列式求导, ,参考矩阵的线性代数
参考,独立成分分析(Independent Component Analysis)
Andrew Ng机器学习公开课笔记–Independent Components Analysis的更多相关文章
- Andrew Ng机器学习公开课笔记–Principal Components Analysis (PCA)
网易公开课,第14, 15课 notes,10 之前谈到的factor analysis,用EM算法找到潜在的因子变量,以达到降维的目的 这里介绍的是另外一种降维的方法,Principal Compo ...
- Andrew Ng机器学习公开课笔记 -- 支持向量机
网易公开课,第6,7,8课 notes,http://cs229.stanford.edu/notes/cs229-notes3.pdf SVM-支持向量机算法概述, 这篇讲的挺好,可以参考 先继 ...
- Andrew Ng机器学习公开课笔记 -- 学习理论
网易公开课,第9,10课 notes,http://cs229.stanford.edu/notes/cs229-notes4.pdf 这章要讨论的问题是,如何去评价和选择学习算法 Bias/va ...
- Andrew Ng机器学习公开课笔记 -- Regularization and Model Selection
网易公开课,第10,11课 notes,http://cs229.stanford.edu/notes/cs229-notes5.pdf Model Selection 首先需要解决的问题是,模型 ...
- Andrew Ng机器学习公开课笔记–Reinforcement Learning and Control
网易公开课,第16课 notes,12 前面的supervised learning,对于一个指定的x可以明确告诉你,正确的y是什么 但某些sequential decision making问题,比 ...
- Andrew Ng机器学习公开课笔记 – Factor Analysis
网易公开课,第13,14课 notes,9 本质上因子分析是一种降维算法 参考,http://www.douban.com/note/225942377/,浅谈主成分分析和因子分析 把大量的原始变量, ...
- Andrew Ng机器学习公开课笔记 -- Mixtures of Gaussians and the EM algorithm
网易公开课,第12,13课 notes,7a, 7b,8 从这章开始,介绍无监督的算法 对于无监督,当然首先想到k means, 最典型也最简单,有需要直接看7a的讲义 Mixtures of G ...
- Andrew Ng机器学习公开课笔记 -- Online Learning
网易公开课,第11课 notes,http://cs229.stanford.edu/notes/cs229-notes6.pdf 和之前看到的batch learning算法不一样,batch ...
- Andrew Ng机器学习公开课笔记 -- 线性回归和梯度下降
网易公开课,监督学习应用.梯度下降 notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf 线性回归(Linear Regression) 先看个 ...
随机推荐
- 5个让你的SaaS应用大卖的技巧
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 今天推荐的文章和具体的技术无关,但是对于创业的小伙伴应该有帮助. 去年底到今年,企业应用尤其 ...
- linux下动态库so文件的一些认识
转自:http://mypyg.iteye.com/blog/845915 个人创作,欢迎指错. 牵扯到ELF格式,gcc编译选项待补,简单实用的说明一下,对Linux下的so文件有个实际性的认识. ...
- Android UI组件学习
android.view.View类是全部UI组件的父类. 如果一些属性的内容本类找不到的时候一定要到父类之中进行查找. 所谓的学习组件的过程就是一个文档的查找过程. ※ Android之中所有的组件 ...
- Ubuntu 11.10升级Ruby (1.8.7 --> 1.9.3或者其他任意版本)
使用apt-get install ruby,安装的默认版本为1.8.7.想要使用更高版本,只能采用手工升级的方式. 方式1 使用RVM(推荐方式) 1 安装RVM http://rvm.io/rvm ...
- HeapByteBuffer和DirectByteBuffer以及回收DirectByteBuffer
由于HeapByteBuffer和DirectByteBuffer类都是default类型的,所以你无法字节访问到,你只能通过ByteBuffer间接访问到它,因为JVM不想让你访问到它. 分配Hea ...
- Eddy's digital Roots
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- JSTL 的 if else : 有 c:if 没有 else 的处理
jstl的c:if 没有else 想要实现if...else...: 可以用下面的解决 -------------------------------------------------------- ...
- Robotium查找指定控件
一.通过ID查找控件 Activity act=solo.getCurrentActivity(): int id=act.getResources().getIdentifier("id名 ...
- c++ stack 的使用
(1) stack::empty bool empty ( ) const; 判断是否为空. return Value : true if the container size is 0, false ...
- [开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库
ICEpdf 是一个轻量级的开源 Java 语言的 PDF 类库.通过 ICEpdf 可以用来浏览.内容提取和转换 PDF 文档,而无须一些本地PDF库的支持. 可以用来做什么? 1.从pdf文件中提 ...