八、t-SNE

  1. t-SNE:t-distributed stochastic neighbor embedding 是一种非线性降维算法,它是由SNE 发展而来。

    tsne

8.1 SNE

  1. SNE 的基本思想:如果两个样本在高维相似,则它们在低维也相似。

  2. SNE 主要包含两步:

    • 构建样本在高维的概率分布。
    • 在低维空间里重构这些样本的概率分布,使得这两个概率分布之间尽可能相似。
  3. 在数据集 八、t-SNE - 图2 中,给定一个样本 八、t-SNE - 图3 ,然后计算 八、t-SNE - 图4八、t-SNE - 图5 的邻居的概率。

    SNE 假设:如果 八、t-SNE - 图6八、t-SNE - 图7 越相似,则 八、t-SNE - 图8八、t-SNE - 图9 的邻居的概率越大。

    • 相似度通常采用欧几里得距离来衡量,两个样本距离越近则它们越相似。

    • 概率 八、t-SNE - 图10 通常采用指数的形式:

      八、t-SNE - 图11

      八、t-SNE - 图12 进行归一化有:

      八、t-SNE - 图13

      其中 八、t-SNE - 图14 是与 八、t-SNE - 图15 相关的、待求得参数,它用于对距离进行归一化。

    • 定义 八、t-SNE - 图16 。由于挑选 八、t-SNE - 图17 时排除了 八、t-SNE - 图18 ,因此有 八、t-SNE - 图19

    • 定义概率分布 八、t-SNE - 图20 ,它刻画了所有其它样本是 八、t-SNE - 图21 的邻居的概率分布。

  4. 假设经过降维,样本 八、t-SNE - 图22 在低维空间的表示为 八、t-SNE - 图23 ,其中 八、t-SNE - 图24

    • 定义:

      八、t-SNE - 图25

      其中 八、t-SNE - 图26 表示给定一个样本 八、t-SNE - 图27 ,然后计算 八、t-SNE - 图28八、t-SNE - 图29 的邻居的概率。

      • 这里选择 八、t-SNE - 图30 为固定值。
      • 同样地,有 八、t-SNE - 图31
    • 定义概率分布 八、t-SNE - 图32 ,它刻画了所有其它样本是 八、t-SNE - 图33 的邻居的概率分布。
  5. 对于样本 八、t-SNE - 图34 ,如果降维的效果比较好,则有 八、t-SNE - 图35 。即:降维前后不改变 八、t-SNE - 图36 周围的样本分布。

    对于 八、t-SNE - 图37 ,定义其损失函数为分布 八、t-SNE - 图38八、t-SNE - 图39 的距离,通过 KL 散度来度量。

    对于全体数据集 八、t-SNE - 图40 ,整体损失函数为:

    八、t-SNE - 图41

  6. KL 散度具有不对称性,因此不同的错误对应的代价是不同的。给定样本 八、t-SNE - 图42

    • 对于高维距离较远的点 八、t-SNE - 图43 ,假设 八、t-SNE - 图44, 如果在低维映射成距离比较近的点,假设 八、t-SNE - 图45 。则该点的代价为 八、t-SNE - 图46
    • 对于高维距离较近的点 八、t-SNE - 图47 ,假设 八、t-SNE - 图48, 如果在低维映射成距离比较远的点,假设 八、t-SNE - 图49 。则该点的代价为 八、t-SNE - 图50

    因此SNE 倾向于将高维空间较远的点映射成低位空间中距离较近的点。这意味着SNE 倾向于保留高维数据中的局部特征(因为远处的特征会被扭曲)。因此SNE 更关注局部结构而忽视了全局结构。

  7. 八、t-SNE - 图51 可以看到:八、t-SNE - 图52 是与 八、t-SNE - 图53 相关的、用于对距离进行归一化的参数。

    • 八、t-SNE - 图54 较大,则概率 八、t-SNE - 图55 的样本 八、t-SNE - 图56 更多,它们覆盖的范围更广,概率分布 八、t-SNE - 图57 的熵越大。
    • 八、t-SNE - 图58 较小,则概率 八、t-SNE - 图59 的样本 八、t-SNE - 图60 更少,它们覆盖的范围更窄,概率分布 八、t-SNE - 图61 的熵越小。

    定义困惑度为:八、t-SNE - 图62, 其中 八、t-SNE - 图63 表示概率分布 八、t-SNE - 图64 的熵。

    • 困惑度刻画了 八、t-SNE - 图65 附近的有效近邻点个数。
    • 通常选择困惑度为 5~50 之间。它表示:对于给定的 八、t-SNE - 图66 ,只考虑它周围最近的 5~50 个样本的分布。
    • 给定困惑度之后,可以用二分搜索来寻找合适的 八、t-SNE - 图67
  8. 八、t-SNE - 图68 已经求得,可以根据数据集 八、t-SNE - 图69 以及公式 八、t-SNE - 图70 来求出 八、t-SNE - 图71

    剔除 八、t-SNE - 图72 中的已知量(八、t-SNE - 图73),则有:八、t-SNE - 图74

    可以通过梯度下降法求解损失函数的极小值。

    • 八、t-SNE - 图75,则有 八、t-SNE - 图76

      考虑到softmax 交叉熵的损失函数 八、t-SNE - 图77 的梯度为 八、t-SNE - 图78 。令分布 八、t-SNE - 图79 为样本的真实标记 八、t-SNE - 图80 ,则有:

      八、t-SNE - 图81

      考虑梯度 八、t-SNE - 图82 ,有两部分对它产生贡献:

      • 给定 八、t-SNE - 图83 时,梯度的贡献为 : 八、t-SNE - 图84
      • 给定 八、t-SNE - 图85 时,梯度的贡献为:八、t-SNE - 图86

      因此有:

      八、t-SNE - 图87

      该梯度可以用分子之间的引力和斥力进行解释:低维空间中的点 八、t-SNE - 图88 的位置是由其它所有点对其作用力的合力决定。

      • 某个点 八、t-SNE - 图89八、t-SNE - 图90 的作用力的方向:沿着 八、t-SNE - 图91 的方向。
      • 某个点 八、t-SNE - 图92八、t-SNE - 图93 的作用力的大小:取决于 八、t-SNE - 图94八、t-SNE - 图95 之间的距离。
    • 为了避免陷入局部最优解,可以采用如下的方法:

      • 采用基于动量的随机梯度下降法:

        八、t-SNE - 图96

        其中 八、t-SNE - 图97 为学习率, 八、t-SNE - 图98 为权重衰减系数。

      • 每次迭代过程中引入一些高斯噪声,然后逐渐减小该噪声。

8.2 对称 SNE

  1. SNE 中使用的是条件概率分布 八、t-SNE - 图99八、t-SNE - 图100 ,它们分别表示在高维和低维下,给定第 八、t-SNE - 图101 个样本的情况下,第 八、t-SNE - 图102 个样本的分布。

    而对称 SNE 中使用联合概率分布 八、t-SNE - 图103八、t-SNE - 图104 ,它们分别表示在高维和低维下,第 八、t-SNE - 图105 个样本和第 八、t-SNE - 图106 个样本的联合分布。其中:

    八、t-SNE - 图107

    根据定义可知 八、t-SNE - 图108八、t-SNE - 图109 都满足对称性:八、t-SNE - 图110八、t-SNE - 图111

  2. 上述定义的 八、t-SNE - 图112 存在异常值问题。

    • 八、t-SNE - 图113 是异常值时,对所有的 八、t-SNE - 图114, 有 八、t-SNE - 图115 都很大。这使得 八、t-SNE - 图116 都几乎为 0 。

      这就使得 八、t-SNE - 图117 的代价: 八、t-SNE - 图118 。即:无论 八、t-SNE - 图119 周围的点的分布如何,它们对于代价函数的影响忽略不计。

      而在原始 SNE 中,可以保证 八、t-SNE - 图120八、t-SNE - 图121 周围的点的分布会影响代价函数。

    • 为解决异常值问题,定义: 八、t-SNE - 图122 。这就使得 八、t-SNE - 图123 ,从而使得 八、t-SNE - 图124 周围的点的分布对代价函数有一定的贡献。

      注意:这里并没有调整 八、t-SNE - 图125 的定义。

  3. 对称SNE 的目标函数为:八、t-SNE - 图126

    根据前面的推导有:八、t-SNE - 图127 。其中: 八、t-SNE - 图128

  4. 实际上对称SNE 的效果只是略微优于原始SNE 的效果。

8.3 拥挤问题

  1. 拥挤问题Crowding Problem:指的是SNE 的可视化效果中,不同类别的簇挤在一起,无法区分开来。

    拥挤问题本质上是由于高维空间距离分布和低维空间距离分布的差异造成的。

  2. 考虑 八、t-SNE - 图129 维空间中一个以原点为中心、半径为1 的超球体。在球体内部随机选取一个点,则该点距离原点的距离为 八、t-SNE - 图130 的概率密度分布为:

    八、t-SNE - 图131

    sne_crowding

    累计概率分布为: 八、t-SNE - 图133

    sne_crowding2

    可以看到:随着空间维度的增长,采样点在原点附近的概率越低、在球体表面附近的概率越大。

    如果直接将这种距离分布关系保留到低维,则就会出现拥挤问题。

8.4 t-SNE

  1. t-SNE 通过采用不同的分布来解决拥挤问题:

    • 在高维空间下使用高斯分布将距离转换为概率分布。
    • 在低维空间下使用 t 分布将距离转换为概率分布。这也是t-SNE 的名字的由来。
  2. t-SNE 使用自由度为1t 分布。此时有:八、t-SNE - 图135

    则梯度为:

    八、t-SNE - 图136

    也可以选择自由度超过 1t 分布。自由度越高,越接近高斯分布。

  3. t 分布相对于高斯分布更加偏重长尾。可以看到:

    • 对于高维空间相似度较大的点(如下图中的 q1 ),相比较于高斯分布, t 分布在低维空间中的距离要更近一点。
    • 对于高维空间相似度较小的点(如下图中的 q2 ),相比较于高斯分布,t 分布在低维空间中的距离要更远一点。

    即:同一个簇内的点(距离较近)聚合的更紧密,不同簇之间的点(距离较远)更加疏远。

    t_dist

  4. 优化过程中的技巧:

    • 提前压缩early compression:开始初始化的时候,各个点要离得近一点。这样小的距离,方便各个聚类中心的移动。可以通过引入L2正则项(距离的平方和)来实现。
    • 提前放大early exaggeration:在开始优化阶段, 八、t-SNE - 图138 乘以一个大于 1 的数进行扩大,来避免 八、t-SNE - 图139 太小导致优化太慢的问题。比如前 50 轮迭代,八、t-SNE - 图140 放大四倍。
  5. t-SNE 的主要缺点:

    • t-SNE 主要用于可视化,很难用于降维。有两个原因:

      • t-SNE 没有显式的预测部分,所以它无法对测试样本进行直接降维。

        一个解决方案是:构建一个回归模型来建立高维到低维的映射关系,然后通过该模型来对测试样本预测其低维坐标。

      • t-SNE 通常用于2维或者3维的可视化。如果数据集相互独立的特征数量如果较大,则映射到 2~3 维之后信息损失严重。

    • t-SNE 中的距离、概率本身没有意义,它们主要用于描述样本之间的概率分布。

    • t-SNE 代价函数是非凸的,可能得到局部最优解。

    • t-SNE 计算开销较大,训练速度慢。其计算复杂度为 八、t-SNE - 图141 。经过优化之后可以达到 八、t-SNE - 图142

8.5 t-SNE 改进

  1. 2014Mattern 在论文Accelerating t-SNE using Tree-Based Algorithms 中对t-SNE 进行了改进,主要包括两部分:

    • 使用kNN 图来表示高维空间中点的相似度。
    • 优化了梯度的求解过程。

8.5.1 kNN 图的相似度表示

  1. 注意到 八、t-SNE - 图143 的表达式:

    八、t-SNE - 图144

    • 每个数据点 八、t-SNE - 图145 都需要计算 八、t-SNE - 图146 ,这一项需要计算所有其他样本点到 八、t-SNE - 图147 的距离。当数据集较大时,这一项的计算量非常庞大。

    • 事实上,如果两个点相距较远,则它们互为邻居的概率非常小,因为 八、t-SNE - 图148

      因此在构建高维空间的点的相似度关系时,只需要考虑 八、t-SNE - 图149 最近的若干个邻居点即可。

  2. 考虑与点 八、t-SNE - 图150 最近的 八、t-SNE - 图151 个点,其中 八、t-SNE - 图152 为点 八、t-SNE - 图153 的周围点的概率分布的困惑度。记这些邻居结点的集合为 八、t-SNE - 图154,则有:

    八、t-SNE - 图155

    这种方法会大大降低计算量。但是需要首先构建高维空间的kNN 图,从而快速的获取 八、t-SNE - 图156 最近的 八、t-SNE - 图157 个点。

  3. Maaten 使用VP树:vantage-point tree 来构建kNN 图,可以在 八、t-SNE - 图158 的计算复杂度内得到一个精确的 kNN 图。

8.5.2 梯度求解优化

  1. 八、t-SNE - 图159 进行变换。定义 八、t-SNE - 图160 。则根据:

    八、t-SNE - 图161

    有:八、t-SNE - 图162

    则有:

    八、t-SNE - 图163

    定义引力为:八、t-SNE - 图164,斥力为:八、t-SNE - 图165 。则有:

    八、t-SNE - 图166

  2. 引力部分的计算比较简单。

    考虑到 八、t-SNE - 图167,则有:

    八、t-SNE - 图168

    根据 八、t-SNE - 图169 ,则只可以忽略较远的结点。 仅考虑与点 八、t-SNE - 图170 最近的 八、t-SNE - 图171 个点,则引力部分的计算复杂度为 八、t-SNE - 图172

  3. 斥力部分的计算比较复杂,但是仍然有办法进行简化。

    • 考虑下图中的三个点,其中 八、t-SNE - 图173 。此时认为点 八、t-SNE - 图174八、t-SNE - 图175 对点 八、t-SNE - 图176 的斥力是近似相等的。

    tsne2

    • 事实上这种情况在低维空间中很常见,甚至某片区域中每个点对 八、t-SNE - 图178 的斥力都可以用同一个值来近似,如下图所示。

      假设区域 八、t-SNE - 图179 中 4 个点对 八、t-SNE - 图180 产生的斥力都是近似相等的,则可以计算这 4 个点的中心(虚拟的点)产生的斥力 八、t-SNE - 图181,则区域 八、t-SNE - 图182 产生的总的斥力为 八、t-SNE - 图183

    tsne3

    • Matten 使用四叉树来完成区域搜索任务,并用该区域中心点产生的斥力作为整个区域的斥力代表值。

      并非所有区域都满足该近似条件,这里使用Barnes-Hut 算法搜索并验证符合近似条件的点-区域 组合 。

    • 事实上可以进一步优化,近似区域到区域之间的斥力。

      • 如下所示为区域 八、t-SNE - 图185 和区域 八、t-SNE - 图186 中,任意两个结点之间的斥力都可以用 八、t-SNE - 图187 来近似。其中 八、t-SNE - 图188 代表区域 八、t-SNE - 图189 的中心(虚拟的点)和区域 八、t-SNE - 图190 的中心(虚拟的点)产生的斥力。
      • 同样也需要判断两个区域之间的斥力是否满足近似条件。这里采用了Dual-tree 算法搜索并验证符合近似条件的区域-区域 组合 。

      tsne4