

【机器学习】李宏毅——线性降维 - FavoriteStar
source link: https://www.cnblogs.com/FavoriteStar/p/16988160.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【机器学习】李宏毅——线性降维
降维,可以用下面这张图来很简单的描述,就是将不同的、复杂的多种树都抽象成最简单的树的描述,也就是我们不关心这棵树长什么样子有什么特别的特征,我们只需要降维,知道它是一棵树即可。

维度下降实际上就是找到一个function,使得输入x得到输出z,而输出z的维度要比输入x的维度小。具体有几种方面,下面就先将PCA(主成分分析)
PCA认为,function实际上可以看成一个矩阵,即:
可以通过一个向量与矩阵的运算来描述这件事。那么当前假设x为二维向量,而要求降到一维的向量z,而w的范数等于1,则可以看成z就是x在w上的投影

不同方向的w会导致投影出来的z不一样,因此我们的目标是找到一个w,它能够使得投影之后的z的差异性能够最大,而不是都挤在一起,如下图:

那么如果是降到多维的话也是同理,首先先找某一维度能够让对应方差最大,再找另一维度能够让对应方差最大且w2与w1是正交的,以此类推:

最终得到的W是正交矩阵。
而经过一系列的推导(此部分推导可以具体看影片,之后我也会把统计学习方法中的推导过程补上)得到的结论就是:假设x的协方差矩阵为S=Cov(x),而wi就是矩阵S所有特征值中第i大的特征值对应的特征向量。
从另一种角度来看PCA
假设当前有许多个基础的组成成分,而我们每张图片都可以看成是由多个组成成分和一个基础的均值(全数样本的均值)相加而成的,看成在图片均值的基础上拥有自身差异性的部分,那么根据该图片中是否有对应的基础成分就可以写出来一个向量C=[c1,c2,...],如果组成成分不是特别多而图片特别多,那我们用向量C来表示一张图片是非常有意义的。

那么就可以写成
因此我们的思路就转换成找到一组向量{u1,u2,...,uk}能够使得 x−x¯与x^之间的距离最小化,即

而可以证明,由PCA方法找出来的向量组{w1,w2,...,wk}就是我们要找的目标向量组。而将上述运算转换成矩阵形式:

目标就是找出矩阵u和矩阵c,使得他们相乘之后和矩阵X的差距最小。而回顾学过的SVD,矩阵X可以进行分解:

其中矩阵U的k个列向量就是矩阵XXT的最大的前k个特征向量,而XXT就是S=Cov(x),因此这也就是我们想要找到{w1,w2,...wk},因此只要进行SVD分解就可以找到目标的{u1,u2,...uk}。那么下一个问题就是求解矩阵C。
由于我们已知了矩阵U,那么对于某个样本,就有:
而由于矩阵W中每一个向量都是相互正交的,就可以有:
(此部分我也不太理解怎么推导出来的,希望会的大神教教)。接下来就可以将这一个过程用神经网络的形式来表示:(注意图中应该是c应该是下标不是上标)。

但是如果现在我们不是从SVD中解出矩阵W,而是从这神经网络之中来进行梯度下降求解,这样求出来的结果和用SVD求出来的结果是不一样的!因为在SVD中求出来的结果还有限制它们彼此之间是正交的,而神经网络是没有的。而将PCA看成是具有一个隐含层的神经网络的方式称为Autoencoder。
但其实用SVD的方式求解起来更快更好,而要学习这种神经网络的方式是因为其隐含层可以加层来实现更复杂的操作。
PCA的缺点
首先是无监督性质,如果样本本身就具有一定的类别信息,那么就会出现下面这样的问题:

可以看到如果有类别区分那么做PCA就会将它们混淆在一起。
其次它是线性变换,无法做非线性的事情:

PCA的应用
如果将PCA对人脸数据进行处理:

可以看到各个出来的特征向量并不是我们想象中的基本组成部分(比如嘴巴什么的),更像是一张完整的脸,这是为什么呢?

因为这些向量的组成成分的加权数字并不一定是正的,如果是负数就相当于先画出一个很复杂的东西然后再减去某个元素。这样就很不直观。如果想要加权的参数都是正的,可以采用NMF,它能够使得参数ai都是正的,其次是每个wi里面每个维度的数值都是正的,这是PCA无法保证的,因为在图像中wi就象征第i个组成部分的图像,如果某个像素是负的那将无法处理,PCA就会出现这个问题。


能够更明显地看出组成部分,符合我们的预期。
Recommend
-
8
【机器学习】李宏毅——机器学习任务攻略
-
13
如何判断导数值为零的点的类型 当发现训练数据集误差不再下降的时候,不是只有卡在局部最小值的情况,还有另外一种情况是处于鞍点,鞍点位置处...
-
4
前面我们所讲的模型,输入都是一个向量,但有没有可能在某些场景中输入是多个向量,即一个向量集合,并且这些向量的数目并不是固定的呢?
-
6
假设我们当前要做一个人工智能客服系统,那该系统就需要对用户输入的话语进行辨认,例如用户输入: I want to arrive Taipei on November 2nd 那么该系统就能够辨认出来Taipei是目的地,而后...
-
6
Transformer具体就是属于Sequence-to-Sequence的模型,而且输出的向量的长度并不能够确定,应用场景如语音辨识、机器翻译,甚至是语音翻译等等,在文字上的话例如聊天机器人、文章摘要等等,在分类问题上如果有问题是...
-
1
1、基本概念介绍 1.1、What is Generator 在之前我们的网络架构中,都是对于输入x得到输出y,只要输入x是一样的,那么得到的输出y就是一样的。 但是Generator不...
-
6
1、BERT简介 首先需要介绍什么是自监督学习。我们知道监督学习是有明确的样本和对应的标签,将样本丢进去模型训练并且将训练结果将标签进行比较来修正模型,如下图:
-
6
异常检测概述 首先要明确一下什么是异常检测任务。对于异常检测任务来说,我们希望能够通过现有的样本来训练一个架构,它能够根据输入与现有样本之间是否足够相似,来告诉我们这个输入是否是异常的,例如下...
-
3
读这篇文章之间欢迎各位先阅读我之前写过的线性降维的文章。这篇文章应该也是属于Unsupervised Learning的内容的。 Neighbor Embedding...
-
6
在前面的学习之中,我们已经学习了很多的模型,它能够针对特定的任务,接受我们的输入并产生目标的输出。但我们并不满足于此,我们甚至希望机器告诉我们,它是如何得到这个答案的,而这就是可解释的机器学习。
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK