可视化高维数据:T-SNE

机器学习与生成对抗网络

共 2907字,需浏览 6分钟

 ·

2021-06-07 20:28

作者:知乎—Ganso

地址:https://zhuanlan.zhihu.com/p/99469215

Google Tech Talk June 24, 2013 (more info below)

Presented by Laurens van der Maaten, Delft University of Technology, The Netherlands

视频:

https://youtu.be/RJVL80Gg3lA

论文:

https://www.jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf

Laurens van der Maaten & Geoffrey Hinton


01

Introduction
有一个N维的高维数据集 ,那应该如何去直观感受数据组织?
如果是关注过可视化领域的,通常会想到Parallel coordinates、radial graph layout或是tree maps:
这些方法通常具有两个特点:丰富多彩,一次只可以可视化几个变量。
问题在于如何可视化非常高维度的数据?
simple idea:
建立一个高维数据空间到低维空间的映射。
低维空间点的距离表示了数据之间的相似度。
优化相关目标函数(描述了数据相似度以及映射之后的相似度)

这样我们可以可视化低维(2-3维度)数据。
通常将这类方法称为:dimension reduction(维度降低)、embedding(嵌入)或multidimensional scaling(多维度缩放)。


02

主成成分分析 PCA
下图是对于MNIST 5000张图片的特征做了PCA。
左边红色的部分是数字0,而右边橙色的部分是1,可以看到之间有很大间隔。
其他的主成成分构成是上方的479,以及下方的358
效果初看起来似乎还不错,但这是作者使用了数据原始标签对于数据点进行染色。如果缺乏标签信息的话,其实很难看出数据的分布。
如果对于数据的标签是未知的,对于数据的可视化会变成这样。
Question:
PCA是否在优化合适的目标函数?
PCA主要是最大化样本投影后的方差,或者说是样本点距离与投影点距离的方差。所以pca主要是扩大点之间的距离。
当数据处于某种非线性流形时,比如下面的瑞士卷(switch roll)。两点的欧式距离不能很好的描述相似性。图示的欧式距离很小,但是考虑到整个流形结构上面的距离,这两点其实距离很远。



03

其他方法
等度量映射:测量原空间点之间的测地线距离,然后作为pca的输入
Locally Linear Embedding


04

T-SNE
描述高维数据的相似度
t-Distributed Stochastic Neighbor Embedding
在高维空间中,我们要想办法测量物体间距离。
对于图中的红色方块xi,我们以其为中心建立一个高斯分布,并且测量其他点在这个分布下的概率密度。所以我们会计算所有其他点在这个分布下的概率密度,并进行归一化(分母)。计算结果  是i与j的相似程度。
在实践中,我们往往计算数据之间的条件概率而不是联合概率。即分母上我们不会归一化所有的点对,而是归一化涉及xi的点对。这样对于不同的点xi可以设置不同的标准差。在空间的不同部分可能有着不同的密度,而这个技巧可以适应不同的密度分布。
最后计算出联合密度,即对条件情况进行加权求和。最后求出了最终情况下高维度的相似度。
描述低维数据的相似度:
处理方法跟高维情况很像,对于指定的点建立一个分布,然后计算其他点在这个分布下的概率分布。我们希望的是低维情况下的相似度  能够一定程度上反映高维情况下的相似度  。如果的结果很像,那么说明映射的结构与原始高维数据结构很相近。
我们通常可以使用KL散度来计算两种概率分布相似程度:
我们想要的是将数据映射到低维之后,与高维数据的KL散度相差并不大。为此需要对kl散度进行梯度下降 。这样同样的两个点,如果高维上的相似度的差距很大,惩罚项也会很大。
有一个明显的问题是如何衡量映射后低维数据的相似度,这里作者使用了学生t分布。
作者的解释是
假设原始数据是高维分布的。我们想将数据映射到低维并且相似数据的距离尽量小,这会导致不相似的点之间的距离会被建模的很远。
举一个很简单的例子,如图所示的二维数据结构,红线代表两个相似点之间的距离。

将其建模到一维之后,可以看到两对相似点的距离是不变的,但是距离最远的两个点之间的距离发生了变化。

当你将高维数据建模到低维度时,这种事情常常会发生。而学生氏t分布的长尾分布特性可以减小这种影响。
下图是对于MNIST数据集进行的T-SNE操作
可以看到数据被很好的分成了好几个簇,值得注意的是,数据标签仅用于后期标注颜色,本身方法是无监督的。
除了MNIST之外,T-SNE也可以用于图片材质的特征提取


05

梯度插值

梯度公式

推导如下:
对于梯度公式的直观解释:
对于指定点  ,最后一项是表示其他点指向此点的向量
前面两项是对于此向量的扩张/压缩
而  与  很相近时,也就是我们的目标,相当于不用改动位置了,梯度也很接近0.
最后求出所有向量的和,相当表示于点i需要向哪里移动。
优化计算量:Barnes-Hut approxiamtion
如图所示ABC三个点的距离十分相近,所以这三个向量可以由三个点中心的向量来模拟表示。
对于整个数据结构。可以用Quadtree来表示
以上图为例,根部表示整个map,整个map均分为4格。其中每格叶子节点的中心保存到根部的子节点中。
当我们需要计算abc离f的距离时,直接对树做深度优先遍历,其父节点离f足够近(小于设定阈值)时,就可以用近似向量来代替。这样可以显著减少计算量。


06

示例
对于CIfar10的映射


07

应用
T-SNE可以用于高维数据的可视化。
现有深度学习的原始数据集T-SNE很难处理(如上图),但是通过神经网络学习到的输出数据(全连接层)可以通过T-SNE可视化得到很多信息。判断网络有没有很好的学习到样本特征。



猜您喜欢:


等你着陆!【GAN生成对抗网络】知识星球!

超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 | 《Python进阶》中文版

附下载 | 经典《Think Python》中文版

附下载 | 《Pytorch模型训练实用教程》

附下载 | 最新2020李沐《动手学深度学习》

附下载 | 《可解释的机器学习》中文版

附下载 |《TensorFlow 2.0 深度学习算法实战》

附下载 | 超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 |《计算机视觉中的数学方法》分享

浏览 54
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报