流形学习
Posted ls1314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流形学习相关的知识,希望对你有一定的参考价值。
1. 什么是流形
两个例子:
现在我们想表示一个圆,
在平面直角坐标系中,这个圆可以被一个二维点集{(x,y)| x^2 + y^2 <=R^2}表示。所以圆是二维的object
- 在极坐标系中,这个圆可以这样表示:圆心在原点,然后给定半径R。所以圆是一维的object
上述描述可以画个两个图(更加形象,有助于理解)
流形的定义:
流形学习的一个观点:任何现实世界中的object均可以看做是低维流形在高维空间的嵌入(嵌入可以理解为表达),举例说:圆是一维流形在二维空间的嵌入,球是二维流形在三维空间的嵌入(三维坐标系中的球可以用二维的经纬度来表达)
流形学习的观点是认为,我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的。由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上只需要比较低的维度就能唯一地表示。
我个人的感觉:这个好像是个拓扑变换的感觉,你看到的是高维的数据点,但是可以借助一些拓扑变换,转化为低维的表达(但是这种低维表达要确保某些“合理性”)
2. 流形有什么用
outline
- 数据非线性降维
- 刻画数据的本质
流形用于数据降维
高维空间有冗余,低维空间没冗余。也就是说,流形可以作为一种数据降维的方式。传统很多降维算法都是用欧氏距离作为评价两个点之间的距离函数的。但是仔细想想这种欧氏距离直觉上并不靠谱。“我们只是看到了三维数据,就要用三维坐标系内的尺度去对事物进行评价?”总觉得有些怪怪的。
举例来说:
- 你要测量从广州到深圳的距离,有两种做法:(1)基于已有的经纬度地图体系,拿个卷尺到地球仪 上固定两点做个测量;(2)构建关于地球的三维坐标系,在地球上这两点之间打洞连个直线测量。现任正常人都是选择第一种方案。
- 再比如我们想基于距离对广东省内所有小城市进行聚类,聚合形成几个超大城市,这个时候你用的距离当然是地表距离(用经纬度体系构建的二维地图来计算距离),而不会说要根据三维坐标系下的两点之间的欧氏距离
- 而对于降维算法来说,如果使用传统的欧氏距离来作为距离尺度,显然会抛弃“数据的内部特征”。举例说, 如果测量球面两点距离采用空间欧氏距离,那就会忽略掉“这是个球面”这个信息。(这两点不仅是三维空间上的点,而且还同属于一个球面,这个关键信息要利用起来)
(最后来副周志华的西瓜书的图!)非线性降维因为考虑到了流形的问题,所以降维的过程中不但考虑到了距 离,更考虑到了生成数据的拓扑结构。
刻画数据的本质:
既然学习到了“将数据从高维空间降维到低维空间,还能不损失信息”的映射,那这个映射能够输入原始数据,输出数据更本质的特征(就像压缩一样,用更少的数据能尽可能多地表示原始数据)。
这方面也是深度学习一直在搞的事情。深度学习主要的特点就是“特征学习”,所谓特征,就是能“表示事物本质的内容”,一般来说特征的维度应该小于数据本身。有一些实证证实,大脑处理数据其实是通过记忆、重现的方式。数据那么多,大脑怎么能一一记住?那就可以只记住“特征”!例如我们知道“人”都是两只眼睛一个鼻子一张嘴。而具体到每一个人则是再这个基本特征之上添加了一些其他的特异性的内容仅此而已。
深度学习一直以来就是在模仿大脑的结构,或者说在模仿大脑对数据的处理能力:从底层感受器输入原始数据,逐步求精得到特征。
深度学习中所谓的特征,在一定程度上就可以用流形的概念来解释。我们希望我们的模型能够学习到“数据在流型空间中的表示”。(流形空间相比原空间是低维的)如果能做到这一点,则说明我们的模型离“模拟大脑”又前进了一步。
3. 如何证明模型学习到了流形
观测学习的过程:
前面提到了高维数据其实是由低维流形生成的。如果我们能模拟这个生成过程,再通过对低维流形的微调,应该能得到对应的“有意义且有道理”的高维数据。
- 下面是利用生成对抗网络(GAN)生成的人脸:
? 如果对GAN不了解的话,就可以把生成过程看作:输入一个特征空间的低维编码,得到一个输出空间的
? 高维图像。如何证明我们学习到的这个生成过程就是像人脑一样从低维流形映射到高维空间呢?还 记得
? 我们之前说过,流型空间一般应该是连续的,而映射到的高维空间的数据也应该在流形连续调整时变得
? 连续且有意义。
再举个例子,再另一篇介绍了GAN的一个扩展的DCGAN的文章中,做了这样一件事:
寻找两个编码,这两个编码都能生成有意义的内容,将这两个编码插值得到好多编码。也就是说这些编码实际上描述了从编码A到编码B缓慢转变的过程。编码A是起点,编码B是目标,A和B之间的连续转变的编码则应该让生成的图像处于“从A向B”的过渡过程!事实如何呢?请看下图:
4. 流形学习的关键
- 如何找到这个从高维到低维的映射。
- 哪怕不能直接找到这个映射,那我们可以找到某种方法实现一种等价:在高维空间处理数据,等效于: 将高维空间映射到低维空间、再处理数据、再映射回高维空间”的这种操作。
以上是关于流形学习的主要内容,如果未能解决你的问题,请参考以下文章
机器学习算法总结——流形学习(Manifold Learning)