MMD平方估计为何是负数:删除对角项后的无偏代价
比较两批特征分布时,MMD常被当成一种距离。于是程序输出负数,第一反应往往是核矩阵不合法,或者浮点误差太大。但如果计算的是MMD平方的无偏估计,负数完全可能是正确结果。先确认估计对象与求和规则,才知道应该检查什么。
AI生成概念示意图:留空的对角格与倾斜天平表达删除自配对后的估计变化,不对应精确核矩阵或统计值。
非负的对象和随机估计不是同一件事
总体MMD²可写成两个分布在核特征空间中均值之差的平方范数,因此非负。展开后是E[k(X,X′)]+E[k(Y,Y′)]-2E[k(X,Y)],其中X与X′独立同分布,Y与Y′独立同分布,两组之间也独立。
给定样本X₁到X_m与Y₁到Y_n,本文用U表示常见的平方无偏估计:两组内部只累加i≠j的核值,分别除以m(m-1)和n(n-1);跨组累加全部m×n个核值,再乘以-2/(mn)。要求m、n都至少为2,求和按有序配对计数。
内部删除的是“同一个观测和自己配对”,不是删除数值相同的不同观测。离散数据中,两次独立抽到相同数值非常正常,仍应保留。跨组的同编号X_i与Y_i也不能因为编号相同就顺手删掉;本文的两组独立抽样没有共享的观测身份。
四个观测就能算出明显负值
采用高斯核k(a,b)=exp[-(a-b)²/2],带宽固定为1。设一次抽样得到X=(-1,1)、Y=(-1,1)。这可以是两个独立抽样碰巧相同的结果,并不表示把一组数据复制成另一组后仍声称独立。
同值核为1,异值核为c=e⁻²≈0.135335。X内部去掉两个对角元素后,剩下的两个有序核值都是c,平均为c;Y内部同样为c。跨组四项依次是1、c、c、1,平均为(1+c)/2。
所以U=c+c-2×(1+c)/2=c-1≈-0.864665。这离零很远,显然不是机器精度造成的轻微下溢。负的只是这个随机估计值,不是总体距离本身。把变量命名为“无偏MMD平方估计”,比统称“距离”更不容易误导使用者。
如果改用包含内部对角项的V型平方统计量,两组内部都除以4,平均均为(1+c)/2,因此V=0。这也符合两组经验分布恰好相同的事实。V是两个经验核均值之差的平方范数,天然非负;U删去自配对之后,就不再是这个直接的平方范数。
枚举全部抽样,比一句“期望无偏”更有说服力
设两个总体完全一样,都以一半概率取-1、一半概率取1。各自独立抽两次,总共有16种等概率的有序结果。对每种结果按照前述公式计算U,可以分为三类:10种得到0,4种得到c-1,2种得到2(1-c)。
平均值为[10×0+4(c-1)+2×2(1-c)]/16=0,正好等于两个相同总体的MMD²。无偏说的是重复独立抽样后的平均正确,并没有保证每一次估计落在参数的合法取值区间。负值在这里承担了抵消正向波动的作用。
若把每次负数都裁成0,四个负项消失,平均就变成(1-c)/4≈0.216166,不再无偏。同一枚举里,V的平均是(1-c)/2≈0.432332,也为正。因此“非负”和“无偏”是两种不同性质,不能同时从某一个版本的名字里推断出来。
这种枚举还提供了非常实用的单元测试:不仅检查那一个负数例子,还检查16项总和接近0、负项恰好四个,以及打乱各组内部顺序不改变结果。本文用标量双循环和核矩阵两种实现分别重算,避免两个验证步骤复用同一段错误索引。
哪一种实现错误仍然值得怀疑
先检查分母。若删除内部对角项,却仍除以m²和n²,就已经换了估计量;若用上三角无序配对,则分母和系数也要同步调整。再检查跨组项的系数2、核带宽、样本维度以及广播方向,别让一个距离矩阵被错误求成单个总距离。
不同论文或库也可能采用把(X_i,Y_i)看作一对、再对配对索引删除对角的另一种无偏形式。它会排除部分跨组项,与本文公式在有限样本下通常不同。两者都可能无偏,但不能拿同一组输入的逐位相等当成理所当然;应核对具体公式,而不只看函数名里是否有“unbiased”。
如果实现的是V型平方统计量,较大的负数才应触发额外排查:是否使用了非正定相似度,矩阵是否对称,或者累计运算是否出现问题。极小的舍入负值与本文约-0.864665这种结构性负值应分开处理。也不要直接对负的U开平方,再把产生的非数值解释成模型训练崩坏。
用于检验和训练时,分别定义规则
负值不证明两批数据来自相同分布,正值也不自动证明存在显著差异。做两样本检验,需要与校准过的阈值比较,并说明样本独立性、置换方式或其他零假设近似。重复时间序列、同一个体的多次记录或配对样本,不能不加调整地套用独立同分布结论。
核也决定了比较的对象。线性核只看到均值层面的差异;满足相应条件的特征核才能把总体零差异与分布相同联系起来。高斯核带宽过大或过小,都可能让有限样本下有用的差异难以辨认,不能靠把所有结果强行缩放成正数来修复。
无偏也不等于误差总是更小。比较估计量时,还要考虑方差、均方误差和实际决策用途;非负版本可能更便于解释,但这种便利不应伪装成额外的统计保证。若把多个批次的结果求平均,应明确每批的样本量与加权方式,不能只挑选正值批次进行汇总。
置换检验还依赖零假设下组别可以交换。如果先用当前两组样本挑选最能把它们分开的核,再把核当成事先固定来校准,便可能过度乐观。应使用适当的数据划分,或在校准过程中包含同样的选择步骤,并记录完整流程,而不只存储最后那个差异数值。
若把统计量用作训练目标,选择U、V或裁零版本会改变目标、偏差和梯度行为,应写进实验记录。若只为展示把负U显示为0,也应保留原始值,并在计算检验阈值时使用一致规则。最关键的检查不是“界面有没有负号”,而是代码究竟在估计哪个数学对象。
资料核对日期:2026年10月3日。两点总体与16种枚举为原创教学构造,已本地复算;本文未实施真实分布漂移检测或模型训练实验。
参考资料
Gretton等:A Kernel Two-Sample Test,JMLR 2012,第2.2节、公式3至5与第3节


