UFLDL上的ICA为什么一定要做PCA whiten
2015-03-25 23:13
591 查看
Andrew Ng先生的UFLDL教程真可谓deep learning入门的首选课程。在两年前我看教程里讲ICA部分的(链接)时候,里面提到使用教程所述的ICA模型时,输入数据必须经过PCA白化操作,页面上有个TODO问为什么要这样做。以当年的我对机器学习的理解并不能解答这个问题,就只是按照教程上讲的写完了代码,后来就一直没有看过了。
今天在与人讨论无监督学习的几种损失函数的时候,提到了PCA的损失函数:
max∥Wx∥2s.t.WWT=I,
优化这个方差,就可以得到最大化方差的解。其中,W是个扁矩阵,以起到降维的作用。我们都知道,这个优化式可以通过svd求解:W=USV,取U的前几列,即可得到降维用的旋转矩阵,而最后几个奇异值,对应U的最后几列,一般都会是接近0的数,是要丢掉的。
这时,我突然想起来,为什么ICA的损失函数会使用min函数:
min∥Wx∥1s.t.WWT=I.
要知道ℓ1范数和ℓ2范数的差别确实有,但并不是那么明显,如果使用min函数的话,岂不是找到了没有数据的那些子空间去了?
于是我就去翻了下教程,原来这里需要先对x做PCA白化,先取到x的方差较大的几维子空间,再在这上面做最小化操作,如果把这里的ℓ1范数换为ℓ2范数,得到的实际上就是U的中间几列。
今天在与人讨论无监督学习的几种损失函数的时候,提到了PCA的损失函数:
max∥Wx∥2s.t.WWT=I,
优化这个方差,就可以得到最大化方差的解。其中,W是个扁矩阵,以起到降维的作用。我们都知道,这个优化式可以通过svd求解:W=USV,取U的前几列,即可得到降维用的旋转矩阵,而最后几个奇异值,对应U的最后几列,一般都会是接近0的数,是要丢掉的。
这时,我突然想起来,为什么ICA的损失函数会使用min函数:
min∥Wx∥1s.t.WWT=I.
要知道ℓ1范数和ℓ2范数的差别确实有,但并不是那么明显,如果使用min函数的话,岂不是找到了没有数据的那些子空间去了?
于是我就去翻了下教程,原来这里需要先对x做PCA白化,先取到x的方差较大的几维子空间,再在这上面做最小化操作,如果把这里的ℓ1范数换为ℓ2范数,得到的实际上就是U的中间几列。
相关文章推荐
- UFLDL教程ICA为什么一定做PCA白化
- PCA ICA
- 机器学习中PCA和ICA的理解
- 做淘宝店铺为什么一定要定位?
- GIT在UNITY开发中的应用之一,为什么多人协作一定要用GIT
- 为什么重写equals方法,一定要重写HashCode方法?
- 为什么核电站的核反应堆原料一定要用铀?
- 为什么要重写了equals方法后一定要重写hashcode方法
- 【UFLDL】PCA+白化
- 接口为什么一定要实现其所有方法
- 为什么覆写equals的时候一定要覆写hashCode
- 为什么破五一定要吃饺子呢?
- 为什么重载输出流符号的时候一定要返回引用
- ICA和PCA
- UFLDL教程之(三)PCA and Whitening exercise
- 外贸企业建站为什么一定要选择国外服务器
- 【UFLDL-exercise3&4-PCA and Whitening】
- PCA&ICA
- 【机器学习】PCA与ICA,RCA,LDA