t-SNE困惑度不是邻居个数:用一行概率算出2.83

22分钟前 2阅读

把t-SNE的困惑度设成三十,并不意味着每个样本只连接最近的三十个点。这个参数首先约束的是原始空间里一行条件概率的熵。它可以取非整数,也不能直接当作二维图上某个圆圈内的点数。用只有三个候选邻居的例子,就能把这种区别算清楚。

t-SNE困惑度不是邻居个数:用一行概率算出2.83

AI生成概念示意图:不同粗细的连接表达不均匀权重,光晕表示可调局部尺度;图形不对应精确概率或二维嵌入结果。

从距离到条件概率

固定中心点i,把它到其他点j的平方距离记为d²。先计算权重exp[-d²/(2σᵢ²)],再除以该行所有非自身点的权重之和,得到pⱼ|ᵢ。自身项设置为零,不参与归一化。这里σᵢ是中心点自己的带宽,不要求每个中心使用相同值。

定义以二为底的熵H=-Σpⱼ|ᵢlog₂pⱼ|ᵢ,困惑度为2ᴴ。若有三个邻居且概率都是三分之一,熵为log₂3,困惑度恰好为3。若概率集中到一个邻居,其余趋于零,熵趋于零,困惑度就趋于1。因此它像是“同样均匀时需要多少个邻居”的有效数量。

这一定义并没有先挑出一个整数个数的硬集合。理想精确计算中,只要距离有限、带宽为正,所有非自身点的高斯权重都为正。工程实现可以使用近邻稀疏化或近似加速,但这种计算策略与困惑度的数学定义仍是两回事,不能反过来用稀疏矩阵非零数解释参数。

三个实际邻居,困惑度可以是2.83

构造中心到三个邻居的平方距离为2ln2、4ln2、4ln2。它们可以在一维空间实现:中心放在零,邻居放在√(2ln2)、√(4ln2)和-√(4ln2),并非随意编造一个不可能的距离表。

令σᵢ=1,三个未归一化权重正好为1/2、1/4、1/4,总和已经是1。于是熵为-(1/2)log₂(1/2)-2×(1/4)log₂(1/4)=1.5比特;困惑度为2¹·⁵=2√2≈2.828427。

三个邻居都有非零权重,困惑度却小于3,原因是第一个邻居占了一半质量,分布不够均匀。把这个结果四舍五入成“三个邻居”,虽然能作粗略口头描述,却丢掉了参数真正控制的内容。如果代码直接截取三个近邻并给相同权重,熵就会变成另一个值。

改带宽,而不是改邻居名单

保持这三个点不动,把σᵢ缩小为1/√2。三个权重变成1/4、1/16、1/16,归一化后为2/3、1/6、1/6。此时熵约1.251629比特,困惑度约2.381102,明显下降,但候选邻居仍然是原来的三个。

若希望该行困惑度等于2,可以对带宽进行一维求根。本例得到σᵢ≈0.601165,对应概率约为(0.772908,0.113546,0.113546)。重新计算熵并取指数,得到2,而不是恰好两个非零概率。这个例子是核验“搜索目标正确”与“截断个数正确”并不等价的直接证据。

算法对每个中心分别做这种尺度适配,所以相同目标困惑度通常会得到不同带宽。局部密集处与稀疏处的距离尺度可能很不一样。如果把所有原始距离都乘以同一个正数,同时把带宽乘以同一个数,条件概率保持不变;只改变计量单位,不应改变这行相似关系。

最近距离并列会限制可达到的值

在只有三个候选点的完整行里,困惑度不会超过3;当带宽趋于无穷,分布趋向均匀,上界被逼近。若最近距离唯一,带宽趋于零时困惑度趋于1;若恰有两个点并列最近,它们在这个极限里平分质量,困惑度下界则是2。

更极端地,若三个点到中心完全等距,那么任何正带宽都会得到均匀分布,困惑度始终为3。此时要求目标2,不是多迭代几轮就能完成的数值问题,而是目标不在这一行的可达范围内。返回一个极小带宽,并不等于达到了指定困惑度。

因此应检查搜索残差和终止状态,尤其是重复点、量化后距离并列,以及候选集过小的情况。某个库允许输入参数,并不保证每一行都能精确达到目标。报告中可以记录目标与实际熵的差异,并区分有限迭代容差、浮点下溢和结构性不可达这三种原因。

别把数值稳定技巧变成新的定义

计算指数时,可把该行最小平方距离从所有平方距离中减去,再计算权重。这个操作给所有未归一化权重乘了相同因子,归一化后的概率不变,却能减少全部指数都下溢为零的风险。熵计算还应采用零概率项贡献为零的约定,避免直接求零的对数。

如果输入已经是平方距离,不能再平方一次;如果传入的是普通欧氏距离,也不能把公式中的平方悄悄省略。两种错误都可能被后续带宽搜索部分遮掩,因为程序仍能凑出指定熵,但权重在各邻居间的分配已经改变。测试需要同时核验概率向量,而不只核验熵。

熵还不是概率向量的完整描述。不同分布可能具有相同熵,交换三个邻居的身份也不会改变困惑度。因此验收时既要看有效邻居数量,也要看大权重究竟给了谁;数据行错位或者距离矩阵列顺序错误,可能完全逃过仅检查困惑度的测试。

原始空间的约束,不是二维图的读数规则

t-SNE接下来会把这些条件概率对称化为联合相似度,并在低维空间用重尾分布构造另一组相似度,优化两者的差异。困惑度发生在前面的原始空间建模步骤,不要求二维结果的每个点周围也有同样数量、同样半径或同样密度的邻居。

所以不能从二维簇画得很紧,反推原数据一定更密集;也不能把两簇之间的空白长度直接读成原始特征距离。比较不同设置时,应固定预处理与距离定义,记录初始化和随机性,再回到原始空间检查邻域关系与已知业务标签。漂亮的分离图只能提供探索线索。

本例的独立复算使用稳定概率公式、熵计算与单独的一维求根,并检查单位缩放、等距点和并列最近点。它没有运行完整二维优化,也不评价某个困惑度对真实数据更好。把这一小层先验清楚,才不容易把可视化变化误归因于“模型突然发现了新类别”。

资料核对日期:2026年10月3日。坐标与数值均为原创教学构造,已本地复算;没有使用真实用户数据或测量降维质量。

参考资料

van der Maaten与Hinton:Visualizing Data using t-SNE,JMLR 2008,第2、3节


文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。