t-SNE 简介

目录
  • 一、 核心思想概述
  • 二、 数学原理推导
    • 1. 第一阶段:从距离到概率(SNE)
    • 2. 目标函数:KL 散度
    • 3. 第二阶段:对称 SNE (Symmetric SNE)
    • 4. 第三阶段:引入 t 分布(解决“拥挤问题”)
  • 三、 优化过程(梯度下降)
  • 四、 关键超参数:Perplexity (困惑度)
  • 五、 FAQ
    • 为什么这里要使用概率这个概念呢?我的意思是,高维数据点不都是已经确定了吗?那谁是谁的邻居不也确定了吗?是不是t-SNE只是想定义一种不是距离度量的新的相似度判定标准呢?
    • 既然有密度适应性,那么t-SNE需不需要归一化欧氏距离?
    • 那么t-SNE相比于其他降维方法,他的优势是什么?

t-SNE(t-Distributed Stochastic Neighbor Embedding,t-分布随机邻域嵌入)是一种用于高维数据降维和可视化的非线性机器学习算法。由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出。

它最主要的应用场景是将高维数据(如图像、文本向量)映射到 2D 或 3D 空间中进行可视化,以便观察数据的聚类结构。

以下是对 t-SNE 的详细介绍,重点阐述其数学原理。


一、 核心思想概述

传统的线性降维算法(如 PCA)通过保留最大方差来降维,往往无法很好地保留复杂的非线性流形结构。

t-SNE 的核心思想是:不再关注点与点之间的绝对距离,而是另外定义一种度量策略(下称概率)。

  1. 在高维空间中:如果两个点距离很近,那么它们互为邻居的概率就很高。
  2. 在低维空间中:我们希望移动这些点,使得它们互为邻居的概率分布尽可能与高维空间中的分布一致。

二、 数学原理推导

t-SNE 的推导过程可以分为三个阶段:SNE(随机邻域嵌入)、对称 SNE 和 t-SNE(引入 t 分布)。

1. 第一阶段:从距离到概率(SNE)

假设我们要将高维数据\(X = \{x_1, x_2, \dots, x_N\}\)降维到低维数据\(Y = \{y_1, y_2, \dots, y_N\}\)

在高维空间(High-dimensional space):
我们使用高斯分布将欧氏距离转化为条件概率。对于数据点\(x_i\),其选择\(x_j\)作为邻居的条件概率\(p_{j|i}\)定义为:

\[p_{j|i} = \frac{\exp(-\|x_i - x_j\|^2 / 2\sigma_i^2)}{\sum_{k \neq i} \exp(-\|x_i - x_k\|^2 / 2\sigma_i^2)} \]
  • 物理意义:如果\(x_j\)\(x_i\)越近,概率\(p_{j|i}\)越大。
  • \(\sigma_i\)是什么?:这是以\(x_i\)为中心的高斯分布的方差。t-SNE 不会对所有点使用相同的方差,因为数据的密度不同。在稠密区域,\(\sigma_i\)应该小;在稀疏区域,\(\sigma_i\)应该大。算法通过用户设定的Perplexity(困惑度)来二分搜索确定每个点的\(\sigma_i\)。这是因为,指数衰减非常快,假设最近一个点的距离是\(10\),另一个点的距离是\(10.1\),按理来说这两个点应该差不多,但是从分母的组成项看来,\(\exp(-10^2)\)\(\exp(-(10.1)^2)\)相差非常大,于是第一个点所占的比例就大得多,最后得到的概率就大得多,于是从概率的角度去看,第一个点是邻居,但是第二个点不是,所以我们要使用\(\sigma_i\)去进行缩放

在低维空间(Low-dimensional space):
最初的 SNE 在低维空间也使用高斯分布。设定低维点\(y_i\)选择\(y_j\)作为邻居的概率\(q_{j|i}\)为(方差设为固定值\(\frac{1}{\sqrt{2}}\)):

\[q_{j|i} = \frac{\exp(-\|y_i - y_j\|^2)}{\sum_{k \neq i} \exp(-\|y_i - y_k\|^2)} \]
2. 目标函数:KL 散度

我们的目标是让低维分布\(Q\)尽可能接近高维分布\(P\)。衡量两个概率分布差异的标准方法是 Kullback-Leibler (KL) 散度。

\[C = \sum_i KL(P_i \| Q_i) = \sum_i \sum_j p_{j|i} \log \frac{p_{j|i}}{q_{j|i}} \]

我们要通过梯度下降法最小化这个代价函数\(C\),从而找到最佳的\(Y\)


3. 第二阶段:对称 SNE (Symmetric SNE)

原始 SNE 的条件概率是不对称的(即\(p_{j|i} \neq p_{i|j}\)),这使得梯度计算变得复杂。t-SNE 采用了联合概率分布来简化计算。

我们定义对称的高维概率\(p_{ij}\)

\[p_{ij} = \frac{p_{j|i} + p_{i|j}}{2N} \]

这里的\(N\)是数据点总数。这样保证了\(p_{ij} = p_{ji}\),并且\(\sum_{i,j} p_{ij} = 1\)
同理,低维空间的\(q_{ij}\)也可以写成对称形式。


4. 第三阶段:引入 t 分布(解决“拥挤问题”)

这是 t-SNE 最关键的改进。

问题:拥挤问题 (The Crowding Problem)
在高维空间中,点周围的“容积”比低维空间大得多。例如,在高维空间中,一个点可以有很多个距离相等的邻居,但在 2D 空间中,你很难把这些邻居都安排在离中心点等距并且彼此之间的局部结构仍然保持的位置,最终导致这些点在低维空间被迫挤在一起,破坏了局部结构。

解决方案:长尾分布
为了解决这个问题,t-SNE 在低维空间中不再使用高斯分布,而是使用自由度为 1 的学生 t 分布(Student's t-distribution),也就是柯西分布(Cauchy distribution)。

为什么有效?
t 分布比高斯分布由更“重”的尾部(Heavy-tailed)。
这意味着:为了在低维空间表示相同的高维概率(相似度),低维点之间的距离需要比使用高斯分布时更远一点。 这就人为地把原本要挤在一起的点“撑开”了。

最终的低维概率\(q_{ij}\)公式:

\[q_{ij} = \frac{(1 + \|y_i - y_j\|^2)^{-1}}{\sum_{k \neq l} (1 + \|y_k - y_l\|^2)^{-1}} \]

注意这里没有了指数函数\(\exp\),运算速度也更快。


三、 优化过程(梯度下降)

最终的代价函数(基于对称概率和 t 分布)为:

\[C = KL(P\|Q) = \sum_{i \neq j} p_{ij} \log \frac{p_{ij}}{q_{ij}} \]

\(y_i\)求导,得到的梯度公式非常优雅:

\[\frac{\partial C}{\partial y_i} = 4 \sum_j (p_{ij} - q_{ij})(y_i - y_j)(1 + \|y_i - y_j\|^2)^{-1} \]

物理直观解释:
这可以看作是一个弹簧系统:

  • \(p_{ij}\)(高维相似度) 代表弹簧的“目标”拉力。
  • \(q_{ij}\)(低维相似度) 代表当前的拉力。
  • 如果\(p_{ij} > q_{ij}\)(高维很近,低维很远),则产生吸引力,拉近\(y_i\)\(y_j\)
  • 如果\(p_{ij} < q_{ij}\)(高维很远,低维很近),则产生排斥力,推开\(y_i\)\(y_j\)

四、 关键超参数:Perplexity (困惑度)

在使用 t-SNE 时,最重要的参数是 Perplexity。

  • 定义:Perplexity 是\(2\)的香农熵次幂。
  • 直观理解:它可以被看作是每个点这种算法认为的“有效邻居”的数量。
  • 影响:
    • 太小:算法只关注极局部的结构,数据可能碎成很多小团簇。
    • 太大:算法关注全局结构,可能导致所有点混在一起,失去局部细节。
  • 典型值:通常在 5 到 50 之间。对于大数据集,通常设置得大一些。

五、 FAQ

为什么这里要使用概率这个概念呢?我的意思是,高维数据点不都是已经确定了吗?那谁是谁的邻居不也确定了吗?是不是t-SNE只是想定义一种不是距离度量的新的相似度判定标准呢?

数据点是确定的,邻居关系也是确定的。这里的“概率”并不是指物理世界中的随机性,而是一种数学上的“归一化手段”和“加权方式”。

简单直接地回答你的疑问:你是对的,t-SNE 本质上就是定义了一种新的、非线性的相似度判定标准,而使用“概率分布”的形式主要是为了解决“不同区域密度不一致”和“维度不匹配”这两个难题。

下面详细解释为什么非要套一层“概率”的外壳,而不是直接用距离:

  1. 如果直接用低维空间的欧氏距离去拟合高维空间的欧氏距离,会出现一个问题,长距离的权重过大。

    假设高维空间中,点 A 和点 B 很远(比如距离是 100),点 A 和点 C 更远(距离是 1000)。
    在降维时,如果算法试图保持“距离比例”,它会拼命想把 A 和 C 拉得比 A 和 B 远 10 倍。但实际上,对于我们来说,100 和 1000 都属于“我不关心的路人”。这就是t-SNE只关注局部结构而忽略全局结构的体现
    直接优化距离会把大量计算资源浪费在保持这些“遥远点的相对距离”上,导致局部结构(邻居关系)被破坏。这就是“不同区域密度不一致”

  2. 那么可以为每个点引入一个\(sigma_i\),来对欧氏距离做缩放;但是由于这里是线性衰减而不是指数衰减,衰减速度不够快,所以效果不好

  3. 于是引入指数函数

  4. 但是现在我们需要找到一个能够自动找到\(\sigma_i\)的算法,我们可以利用信息论里面的“熵”,所以引入概率

既然有密度适应性,那么t-SNE需不需要归一化欧氏距离?

直接回答:是的,非常需要。

即使 t-SNE 拥有强大的“密度适应性”(通过调整\(\sigma_i\)),在将数据输入 t-SNE 之前,你仍然必须对数据进行归一化(Normalization)或标准化(Standardization)。

为了解释清楚为什么,我们需要区分两个概念:“点与点的疏密” 和 “特征与特征的尺度”。


  1. t-SNE 解决的是“点与点的疏密” (Row-wise)
    t-SNE 的\(\sigma_i\)机制处理的是样本(行)层面的不均匀。

    • 场景:
      • 样本 A 住在市中心(周围有 100 个邻居,距离都在 0.1 以内)。
      • 样本 B 住在郊区(周围只有 1 个邻居,距离是 100)。
    • t-SNE 的作用:它会自动给样本 A 一个小的\(\sigma\),给样本 B 一个大的\(\sigma\)
    • 结果:它让市中心和郊区在概率图上看起来“差不多热闹”。
  2. 归一化解决的是“特征与特征的尺度” (Column-wise)
    归一化(如 Min-Max)或标准化(如 Z-score)处理的是特征(列)层面的不均匀。

    如果不做归一化,会发生什么?
    t-SNE 的第一步是计算欧氏距离。欧氏距离对特征的数值范围非常敏感。

    如果数据未归一化,你的 t-SNE 其实只是在对“数值最大的那个特征”进行降维,其他特征都变成了无效的噪声。这时在高维空间中,只考虑数值最大的特征和考虑所有特征的概率分布相似,所以如果对两种情形都做t-SNE的话,得到的低维分布也应该很相似,就是忽略了其他特征

那么t-SNE相比于其他降维方法,他的优势是什么?

我们将它与三类主要的竞争对手进行对比:线性方法(如 PCA)、其他流形学习方法(如 LLE, Isomap) 以及 现代竞争对手(如 UMAP)。


  1. 相比于 PCA(主成分分析)
    —— 非线性结构 vs. 线性投影

    PCA 是线性的,它像是一个“投影仪”,把物体影子投在墙上。
    t-SNE 是非线性的,它像是一个“拓扑学家”,把卷曲的物体展开。

    • 处理复杂流形的能力(Swiss Roll 例子):
      • 场景:假设数据像一个“瑞士卷”蛋糕卷在一起。
      • PCA:它只能“压扁”这个蛋糕。原本在蛋糕里隔了好几层的点(直线距离近,但实际在卷面上很远),会被 PCA 误认为是邻居。PCA 无法解开卷曲的结构。
      • t-SNE:它关注局部的邻居关系。它会发现:“虽然点 A 和点 B 空间距离近,但它们在‘流形’上不相连”。于是 t-SNE 能把这个瑞士卷像铺地毯一样展开。
    • 关注点的差异(局部 vs 全局):
      • PCA:致力于保留最大方差(全局结构)。它会让相距很远的点在低维依然很远,但往往会牺牲局部细节,导致不同的簇混在一起。
      • t-SNE:致力于保留局部邻域。它不惜扭曲全局形状,也要保证“本来就是一伙的”点紧紧抱在一起。这使得 t-SNE 在区分簇(Clustering)方面完胜 PCA。

  1. 相比于其他流形学习方法(LLE, Isomap)
    —— 解决“拥挤”与“短路”问题

    在 t-SNE 出现之前,LLE 和 Isomap 是主流,但它们效果往往不够好。

    • 解决“拥挤问题”(The Crowding Problem):
      • LLE / Isomap:它们没有使用 t 分布这种长尾分布的技巧。当把高维数据硬塞进 2D 时,为了保持距离,所有点往往会向中心坍缩,重叠在一起,变成一团乱麻。
      • t-SNE:正是因为引入了 t 分布(你的“不同形状尺子”概念),它强制把低维的点推开。这使得 t-SNE 产生的图像中,簇与簇之间有清晰的空白间隔,非常易于人类观察。
    • 对噪声的鲁棒性(Isomap 的短路问题):
      • Isomap:基于“测地距离”(Geodesic distance,类似在高维曲面上走迷宫的最短路径)。如果数据中有几个噪点(Shortcut),Isomap 会以为这是一条捷径,导致整个流形结构的判断出错(短路)。
      • t-SNE:基于“概率”。因为是加权求和,个别噪点的影响会被概率平滑掉,不会因为一两个坏点就破坏整体结构。

  1. 独特的“密度适应性”(Density Adaptation)
    —— 这一点很多算法都做不到

    这得益于你之前理解的\(\sigma_i\)(方差)的动态调整。

    • 场景:数据集中有一个“超高密度簇”和一个“超稀疏簇”。
    • 其他算法(如 PCA, MDS):稀疏簇在图上会占巨大面积,稠密簇会缩成一个不可见的点。
    • t-SNE:因为它根据 Perplexity 自动调整每个点的\(\sigma\),它实际上对稀疏区域进行了“压缩”,对稠密区域进行了“放大”。
    • 优势:它能让你在一张图上,同时看清稠密簇内部的细节和稀疏簇的结构。 这种“视觉上的归一化”对于探索性数据分析(EDA)简直是神器。

  1. 相比于 UMAP(Uniform Manifold Approximation and Projection)
    —— 纯粹的视觉分离度

    UMAP 是 t-SNE 最强劲的现代对手(2018年提出),速度更快且保留更多全局结构。但 t-SNE 依然有其独特优势:

    • 视觉分离感:t-SNE 产生的图像,簇与簇之间的分离通常比 UMAP 更“夸张”、更彻底。
    • 优势:如果你只是想向老板或客户展示“看!这些数据分成了明显的几类!”,t-SNE 往往能画出更漂亮、更黑白分明的图(虽然这种距离有时是人为撑大的)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1152604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手部关键点检测傻瓜教程:Mac用户福音,云端GPU即开即用

手部关键点检测傻瓜教程&#xff1a;Mac用户福音&#xff0c;云端GPU即开即用 1. 为什么Mac用户需要云端GPU方案 作为一名UI设计师&#xff0c;当你想要研究手势交互设计时&#xff0c;可能会遇到一个尴尬的问题&#xff1a;公司配发的MacBook Pro虽然外观时尚&#xff0c;但…

从 bootloader 到 OTA:全面构建固件防篡改体系,90%企业都该补上这一课

第一章&#xff1a;固件防篡改体系的核心价值在现代物联网与嵌入式系统中&#xff0c;固件作为设备运行的底层基础&#xff0c;其完整性直接关系到系统的安全性与可靠性。一旦固件被恶意篡改&#xff0c;攻击者可植入持久化后门、窃取敏感数据或操控设备行为&#xff0c;造成难…

Unity插件框架稳定性优化:BepInEx运行时架构深潜与崩溃根因定位技术

Unity插件框架稳定性优化&#xff1a;BepInEx运行时架构深潜与崩溃根因定位技术 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 在Unity扩展生态中&#xff0c;BepInEx作为核心插件…

Windows右键菜单终极优化指南:ContextMenuManager完全使用教程

Windows右键菜单终极优化指南&#xff1a;ContextMenuManager完全使用教程 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 随着Windows系统使用时间的推移&#…

嵌入式系统如何抵御固件攻击?:一文掌握安全启动实现五大关键步骤

第一章&#xff1a;嵌入式系统固件攻击的威胁全景嵌入式系统广泛应用于物联网设备、工业控制系统、医疗设备及消费电子产品中&#xff0c;其固件作为底层运行的核心组件&#xff0c;正成为攻击者的重要目标。随着设备互联程度加深&#xff0c;固件层面的安全漏洞可能被利用以实…

MediaPipe侧脸检测详解:AI人脸隐私卫士实战

MediaPipe侧脸检测详解&#xff1a;AI人脸隐私卫士实战 1. 引言&#xff1a;AI 人脸隐私卫士的诞生背景 随着社交媒体和数字影像的普及&#xff0c;个人隐私保护问题日益突出。尤其是在多人合照、公共监控或远距离抓拍场景中&#xff0c;未经处理的人脸信息极易造成隐私泄露。…

NVIDIA显卡性能深度优化:3步解锁隐藏性能的终极秘籍

NVIDIA显卡性能深度优化&#xff1a;3步解锁隐藏性能的终极秘籍 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 想要彻底释放显卡隐藏性能&#xff1f;厌倦了官方控制面板的限制&#xff1f;NVIDIA Pro…

非标准角度人脸处理:AI卫士侧脸检测实战优化

非标准角度人脸处理&#xff1a;AI卫士侧脸检测实战优化 1. 引言&#xff1a;AI 人脸隐私卫士的现实挑战 在社交媒体、公共监控和数字档案管理日益普及的今天&#xff0c;人脸隐私泄露风险正成为公众关注的核心问题。传统的人工打码方式效率低下&#xff0c;难以应对海量图像…

动态打码效果评估:主观与客观指标结合

动态打码效果评估&#xff1a;主观与客观指标结合 1. 引言&#xff1a;AI 人脸隐私卫士 - 智能自动打码 随着社交媒体和数字影像的普及&#xff0c;个人隐私保护问题日益突出。在多人合照、公共监控截图或用户上传内容中&#xff0c;未经处理的人脸信息极易造成隐私泄露。传统…

如何快速重置JetBrains IDE试用期:免费延长30天的完整指南

如何快速重置JetBrains IDE试用期&#xff1a;免费延长30天的完整指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否曾经因为JetBrains IDE试用期到期而被迫中断开发工作&#xff1f;面对IntelliJ IDEA、…

AI人脸隐私卫士如何避免漏检?多模型融合策略详解

AI人脸隐私卫士如何避免漏检&#xff1f;多模型融合策略详解 1. 引言&#xff1a;AI 人脸隐私卫士的现实挑战 随着社交媒体和智能设备的普及&#xff0c;个人图像数据在互联网上的传播速度与范围呈指数级增长。一张看似普通的合照&#xff0c;可能无意中暴露了多位陌生人的面…

航拍无人机抖动问题?排查ArduPilot与BLHeli配置错误

航拍无人机抖动&#xff1f;别急着换桨&#xff0c;先查飞控和电调的“软病”你有没有遇到过这种情况&#xff1a;花大价钱配了碳纤维机架、高精度云台、4K相机&#xff0c;结果飞起来一拍视频&#xff0c;画面全是“果冻纹”或轻微频闪。第一反应是螺旋桨动平衡没做好&#xf…

智能打码系统快速入门:5步部署AI隐私卫士

智能打码系统快速入门&#xff1a;5步部署AI隐私卫士 1. 引言&#xff1a;为什么我们需要智能打码&#xff1f; 随着社交媒体和数字影像的普及&#xff0c;个人隐私保护已成为不可忽视的技术议题。在多人合照、公共监控截图或新闻配图中&#xff0c;未经处理的人脸信息极易造…

微信红包插件深度解析:无需ROOT的智能抢红包技术指南

微信红包插件深度解析&#xff1a;无需ROOT的智能抢红包技术指南 【免费下载链接】WeChatLuckyMoney :money_with_wings: WeChats lucky money helper (微信抢红包插件) by Zhongyi Tong. An Android app that helps you snatch red packets in WeChat groups. 项目地址: ht…

BetterGenshinImpact:智能自动化技术深度解析与实战指南

BetterGenshinImpact&#xff1a;智能自动化技术深度解析与实战指南 【免费下载链接】better-genshin-impact &#x1f368;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools F…

百度网盘下载加速终极指南:轻松突破限速实现高速下载

百度网盘下载加速终极指南&#xff1a;轻松突破限速实现高速下载 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗&#xff1f;想要轻松获取学…

智能打码系统优化:提升侧脸检测的准确性

智能打码系统优化&#xff1a;提升侧脸检测的准确性 1. 背景与挑战&#xff1a;传统打码方案在复杂场景下的局限 随着数字影像的广泛应用&#xff0c;个人隐私保护成为社会关注的核心议题。尤其在公共平台发布合照、监控视频或新闻图片时&#xff0c;未经处理的人脸信息极易引…

AI人脸隐私卫士性能测试:处理速度与精度的平衡

AI人脸隐私卫士性能测试&#xff1a;处理速度与精度的平衡 1. 引言&#xff1a;AI 人脸隐私卫士 —— 智能自动打码的时代需求 随着社交媒体和数字影像的普及&#xff0c;个人隐私保护问题日益突出。一张看似普通的合照&#xff0c;可能无意中暴露了他人面部信息&#xff0c;…

Python纪念币预约自动化工具:小白也能5分钟快速上手

Python纪念币预约自动化工具&#xff1a;小白也能5分钟快速上手 【免费下载链接】auto_commemorative_coin_booking 项目地址: https://gitcode.com/gh_mirrors/au/auto_commemorative_coin_booking 还在为抢不到纪念币而烦恼吗&#xff1f;这款Python纪念币预约自动化…

BepInEx崩溃终极修复指南:快速解决Unity游戏启动异常

BepInEx崩溃终极修复指南&#xff1a;快速解决Unity游戏启动异常 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是Unity游戏开发中最常用的插件框架和游戏补丁工具&#x…