查看原文
其他

【强基固本】高维数据可视化:T-SNE

“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。

作者:知乎—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可视化得到很多信息。判断网络有没有很好的学习到样本特征。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“强基固本”历史文章


更多强基固本专栏文章,

请点击文章底部“阅读原文”查看


分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存