t-SNE算法是SNE的改进版本,都是用于降维的。
SNE(非t-SNE)的核心思想是:
步骤1)对于高维数据中的每个点(x),将该点到所有其他点(y)的欧几里得距离转换为条件高斯概率。
○ 例如,考虑下图数据集中左侧标记为红色的点。
○ 将到所有其他点的欧几里得距离转换为高斯概率(上图右侧的分布)表明,相对于其它点,红色点有更高的概率是它的邻居。
步骤2)对于每个数据点xi,随机初始化其在2维空间中的对应点yi。这些将是它们在低维空间中的投影。
步骤3)就像我们在步骤1中定义了高维空间中的条件概率一样,我们再次使用高斯分布来定义低维空间中的条件概率。
步骤4)现在,每个数据点i都有一个高维的概率分布和一个对应的低维分布:
○ 目标是使这两个概率分布相匹配。因此,我们可以使得对应点yi的位置可学习,以便最小化这种差异。
○ 使用KL散度作为损失函数帮助我们实现这一目标。它衡量了当我们使用分布Q来近似分布P时,丢失了多少信息。
○ 理想情况下,我们希望损失值最小(即零),这将在P等于Q时实现。
该模型可以使用梯度下降进行训练,效果相当不错。例如,下图展示了t-SNE算法在256维手写数字数据上产生的2维可视化效果: