8.2-无监督学习-线性降维( 六 )


你会发现,这个XX^TXXT就是 ,PCA之前找出的W就是 的 。而我们这边说做SVD,解出来U的每个就是 的,所以这个U得出的解就是PCA得到的解 。所以我们说:PCA做的事情就是:你找出来的那些W其实就是 。
主成分分析和神经网络
我们现在已经知道从PCA找出的w1,…wKw1,…wK就是k个,…uKu1,…uK 。我们现在有一个根据的结果叫做\hat{x}x`(`\sum_{k=1}{K}c_kwk∑k=) 。我们希望\hat{x}x跟x-\bar{x}x?xˉ的差值越小越好,你要error 。那我们现在已经根据SVD找出这个W了,那这个c_kck的值是到底多少呢?这个c_kck是每一个image都有自己的c_kck,这个c_kck就每个image各自找就好 。如果现在要用c_1,…ckc1,…ck对wkwk做。这个c_k=(x-\bar{x})wkck=(x?xˉ)wk,找一组c_kck可以\hat{x},(x-\bar{x})x,(x?xˉ)
做的事情你可以想成用 来表示它,假设我们的x-\bar{x}x?xˉ就是一个(这边写做三维的),假设现在只有2个(k=2),那我们先算出c_1,c_2c1,c2,c_1=(x-\bar{x})c1=(x?xˉ)(x-\bar{x}x?xˉ)的每一个乘上w^1w1的每一个,接下来你就得到了c_1c1 。(x-\bar{x}x?xˉ是 的input,c_1c1是一个(),w1_1,w1_2,w^,w21,w31是,) 。c_1c1
乘以w1w1(c_1c1?乘上w_1w1?的第一维(?)得到一个value,乘上w_1w1?的第二维(?)得到一个value,乘上w_1w1?的第三维(?)得到一个value) 。接下来再算一下c_2c2?,c_2c2?乘以w2w2的结果和之前的加起来就是最后的,\hat{x_1},\hat{x_2},\hat{x_3}x1??,x2??,x3??就是\hat{x}x^ 。
接下来就是 error,我们要\hat{x}x跟x-\bar{x}x?xˉ越接近越好(也就是这个跟x-\hat{x}x?x越接近越好),那你可以发现说PCA可以表示成一个 ,这个 只有一个 layer,这个 layer是。那现在我们train 这个 ,是要input一个东西得到,这个input跟越接近越好 。这个东西就叫做
这边就有一个问题,假设我们现在这个,不是用PCA的方法去找出w1,w2,…w^kw1,w2,…wk 。而是兜一个 ,我们要 error,然后用 去train得到的,那就觉得你得到的结果会跟PCA得到的结果一样吗?这其实是会一样的( 没有办法保证是垂直的,你会得到另外一组解) 。所以在的情况下,或许你就想要用PCA来找这个WW比较快的,你用 是比较麻烦的 。但是用 的好处是:可以deep 。
缺点
PCA有一些很明显的弱点,一个是:它是,今天加入给它一大堆点没有label 。假设你要把它到一维上,PCA可以找一个可以让data 最大的那个,在这个case中,就把它到这一维上(红色箭头)) 。有一种可能是,这两组data point它们分别代表了两个class,如果你用PCA来做 的话,你就会使得蓝色跟橙色的class被meger在一起,这样就无法分别了 。
这时候你要怎么办呢?这时候你要引入label data,LDA是考虑label data考虑降维的方法,不过它是,所以这个不是我们要讲的对象 。
另外一个PCA的弱点是,我们刚开始举得例子会说 。我们刚开始举的例子说:这边有一堆点的分布是像S型的,我们期待说:做 后可以把这个S型曲面可以把它拉直,这件事情对PCA来说是做不到的 。如果这个S型曲面做PCA的话,它是这样子的(如图),就像打扁一样,而不是把它拉开,拉开这件事情PCA是办不到的 。等下我们会讲non-
应用实例
接下来,我们把PCA用在一些实际的问题上 。比如说:用它来分析宝可梦的data,宝可梦总共有800种宝可梦,每个宝可梦可以用6个来表示,分别是:生命值,攻击力,防御力,特殊攻击力,特殊防御力,速度 。所以每一个宝可梦就是一个6维的,我们现在用PCA来分析它 。
在PCA中有个常问的问题:我需要有多少个,要把它到一维,二维还是三维… 。要多少个就好像是 要几个layer,每个layer要有几个一样,所以这是你要自己决定的 。
那一个常见的方法是这样的:我们去计算每一个 的\λ(每一个就是一个,一个对应到一个 \λ) 。这个代表 去做 的时候,在 的那个上它的有多大(就是\λ) 。