DeepLearning: From PCA to Autoencoder

  在图像处理中,样本的维度一般都很大,如果在原维度上进行处理,一方面对噪声比较敏感,一方面维度太高,加大训练难度。

这时我们就想到了对数据进行降维,如何进行降维呢,肯定是要把那些最能代表原数据的维度保留下来。那如何确定某一维度

是否能很好的代表原数据呢,我们使用Principal Component Analysis(PCA),假如原数据维度为n,数据在原特征空间的

表示可能不能很好的对不同类别进行很好的区分,那么我们就期望找到另一个可以很好区分不同样本的特征空间,我们通过线

性变换将样本从原特征空间转换到新特征空间,在新的特征空间每一个维度我们称为一个主方向(Principal Component ) ,

如果我们要对数据降维,我们可以把n个主方向按方差由大到小排序,选择前k个维度。如果原数据符合n维空间下的线性流行,

那么我们可以通过这种线性变换对原数据作近似。

  PCA存在一个问题,比如数据原维度为n=2,现在的维度k=1,我们在线性变换的时候丢失了另一个维度的信息,虽然它相对于

其它维度并不那么重要,但它仍包含数据信息。

注:PCA是将数据转换到另一个维度空间,使数据更容易分析,比如对于分类问题,在一个特征空间并不能很好的分类,如果转换到

另一个特征空间,就可以很好学习分类器,降维只是PCA的一个应用而已。

  Autoencoder是PCA的推广(这里主要是降维作用),它要学习一个数据的特征表示,要保持原数据的主要特征。Autoencoder

分为两个部分encoder, decoder,先对数据编码,然后再解码,通过最小化原数据与解码数据之间的误差学习变换矩阵。

如果原数据符合高维空间下的线性流形,那么autoencoder与PCA学习出来的结果类似,但autoencoder学习出来的每一方向不一定下次,但

方差与PCA学习出的一致。但Autoencoder可以推广到非线性流形模型中,我们可以在编码,解码之后加非线性变换,然后通过最小

化重构误差,学习参数。

  下图是非线性流形下,PCA与autoencoder的学习结果,可以看出autoencoder可以很好的将不同类别区分开来,而PCA不能

 

posted @ 2015-03-16 16:15  dupuleng  阅读(1984)  评论(0)    收藏  举报