没有学习,结果却提高了
团队在同一个小样本集上比较一百个 AI 模型变体,改变提示、配置或训练选择,然后保留最高分。最终赢家表现似乎很有说服力。但分数衡量的是模型质量,还是也包含从众多候选中被选中的运气?企业选择系统时,这个问题很重要:比较代码没有错误,仍可能产生错误预期。
为隔离机制,设想一百个毫无知识的候选,每次二选一猜对概率都是 50%。在二十个案例上评估,选择正确次数最多者。我们将证明,赢家在选择样本上的平均准确率约为 77.32%,但在新数据上仍为 50%,并计算出现看似有希望的 75% 的概率。这是明确假设下的概率实验,不是真实网络基准。
公式之前:到底选择了什么
准确率是正确回答数除以评估案例数。如果在看结果前选定候选,多次重复的平均准确率为 50%。但我们先看全部分数再选择,这在机制上偏向正向测量波动:幸运波动进入获胜结果,不幸波动留在被淘汰结果中,无需任何人伪造数字。
把用于选择的二十个案例称为选择集,也可叫验证集,但用途比名称重要:只要影响模型偏好,就参与了开发。独立测试评估的是已经固定的选择。提示变体、阈值、预处理方案、示例选择也有同样问题,并不局限于神经网络权重。
概率模型及其假设
令 n = 20 为案例数,M = 100 为候选数,Xⱼ 为候选 j 的正确回答次数。每个正确性指示量服从伯努利分布:以 p = 0.5 概率为一,否则为零。假设案例之间、候选之间独立,且候选在查看分数前固定。这些假设很强:同一真实模型的相近配置,错误往往相关。
C(20,k) 是二项式系数,表示在二十个位置放置 k 次成功的方法数。每个成败序列概率都是 1/2²⁰,因此序列数乘以单个概率,就是相应计数概率。这些量没有物理单位;准确率是比例或百分比。没有假定学习算法,因为实验中候选不会学习。
寻找最大值时,罕见结果会变得常见
预先选定的候选至少答对十五例,就达到 75%。概率需要把十五到二十次的概率相加,而非只计算恰好十五次。有限求和得 α = 0.0206947,约 2.07%,对单个候选较罕见。但问题不是某个指定候选能否做到,而是一百个中是否至少一个做到。
第二式使用补事件:没有人达到十五次。单个候选概率为 1 − α,独立性使一百个同时未达标的概率为 (1 − α)¹⁰⁰。从一减去它,约为 87.65%。因此,即使所有真实性能都等于随机猜测,出现至少一个 75% 在本实验中仍是常见结果。罕见的是固定候选的事件,而非搜索赢家的事件。
这不是看到真实模型得分后,模型无用的概率。我们计算的是特定无信号假设下的结果分布;反转条件需要额外假设。50% 基线也只属于这个公平二选一游戏。类别失衡、指标改变或案例相关时,应按问题建立相应零假设分布。
最佳者平均看起来有多好?
定义 Z = maxⱼ Xⱼ,即获胜正确次数,无须模拟即可计算均值。非负整数可写为指示量之和:大于零记一,大于一再记一,以此类推。取期望后,均值成为跨越各阈值概率的总和。令 F(k) 表示单个候选最多答对 k 次的概率。
一百个候选的结果为 77.3197%。公式也揭示方向:零到一之间的 F,指数增大不会让值变大,所以增加候选时,每项 1 − Fᴹ 都不会减小。观测最大值按构造改善,但每个候选的成功概率没变。只有一个候选时,结果恰好为 50%,可用于检查计算。
| 候选数 M | 所选者期望准确率 | P(最大值 ≥ 75%) |
|---|---|---|
| 1 | 50.00% | 2.07% |
| 5 | 62.91% | 9.93% |
| 10 | 67.03% | 18.87% |
| 50 | 74.63% | 64.85% |
| 100 | 77.32% | 87.65% |

为什么新测试回到 50%
令 J 为所选候选编号,Aⱼ 为其在新测试上的准确率。J 只取决于选择结果。按假设,测试结果与之独立,每个候选期望准确率为 0.5。因此知道谁获胜,不会提供有关新结果的有利信息。把所有可能赢家分别列出,再按选择概率加权即可。
关键是独立性,而不是文件名中的“测试”。如果用新结果更换赢家、选择阈值或决定展示哪些案例,协议就不再满足该条件。对已固定赢家做一次测试,不是在新集合上重新举办百人竞赛;它估计该候选,但不能消除有限样本不确定性或样本缺乏代表性的问题。
已运行模拟及其测量对象
脚本用 Python 3.14.0、种子 20261004 运行 5,000 次重复。每次生成一百个二十次试验的计数,选择最大值,同分时取最小编号,再为赢家生成一百个新正确性结果。候选分布相同且测试独立,因此无需生成其余九十九者的测试。计算不涉及真实标签、训练网络或 AI 服务调用。
选择平均准确率为 77.286%,新测试为 50.0476%,分别接近理论 77.3197% 与 50%。剩余差异是有限随机重复的蒙特卡洛波动。JSON 保存每次赢家编号及两个计数,以及种子、版本、理论结果;代码也能重建候选抽样。种子并非为了获得更有利结果而选择。
脚本还报告模拟均值标准误,约为 0.064 和 0.070 个百分点,等于重复间标准差除以 √5000。它们量化独立公平硬币假设下的模拟精度,而非真实产品性能的不确定性。必须区分两层:非常精确的模拟,也可能只是精确描述一个不适用于实际问题的概率模型。
两种办法:计入搜索或分离检验
若在同一集合上判断最大值,参考分布必须包含搜索过程。独立时已有精确公式。候选不独立但各事件边际概率有效时,可用并集上界:至少一个越过阈值的概率,不超过各自概率之和。这是 Bonferroni 控制的基础,简单但常较保守。
要求总体上界不超过 5% 时,本例首个可用整数阈值是二十次中十八次,即 90%。上界约为 2.0123%,独立时精确概率约为 1.9923%。低于 5% 部分源于离散性:不能要求答对 17.4 次。这并不使任何百次实验自动有效;二项分布假设与比较集合必须对应真实协议。
另一条路是为固定流程保留最终测试。数据少时,嵌套交叉验证可分离选择与评估:内层选择变体,外层在未参与选择的数据上评估完整流程。本文不执行该算法,也不虚构结果。关键是评估完整选择过程,而不是已在全部可用数据上优化过的赢家。
独立性不成立时
考虑相反极端:一百个候选给出完全相同回答。计数相同,最大值等于单个计数,期望准确率回到 50%,达到十五次的概率仍为 2.07%,而非 87.65%。表格中的一百个名字不等于一百次独立尝试。两极之间存在许多依赖结构,不能凭直觉选一个相关系数去除候选数量。
案例也可能相关:相邻视频帧或近重复文档,未必提供二十个独立观测。本例 n 直接进入单个候选准确率方差 p(1 − p)/n。n = 20 时标准差约为 11.18 个百分点。缺少独立性时,该公式未必反映真实波动。单纯增加行数可能制造虚假的精确感。
增加样本有多大帮助?
保持 M = 100,只改变 n 重算精确求和。每候选一百例时,期望最大值降为 62.4762%;五百例时为 55.6017%,真实能力始终为 50%。更多独立观测缩小每个估计的波动,减少运气优势,但不存在某个规模自动消除偏差:一百例仍约高估 12.48 个百分点,五百例仍高估 5.60。这是概率模型结果,不是通用测试规模建议。
这有助于理解有限评估预算:搜索更多配置与更精确地测量各配置,是不同资源用途。搜索既可能找到真正更好的候选,也增加选中幸运波动的机会;在适当假设下,更多测量减少不确定性。本例无法估计第一种收益,因为所有候选等价。它量化的是:为何不能把观测最大值呈现得仿佛搜索从未发生。
代码中,getrandbits(n) 产生 n 个伪随机位,bit_count 统计一的数量,是简洁的成功次数生成法,并非文档模型。cdf 求和二项系数,mean_max 使用最大值公式。断言检查 M = 1、期望最大值递增,以及模拟与理论近似一致。组合计数是精确整数,最终概率与幂用浮点数。展示值经过舍入,不声称真实数据上的实验精度。
证据、局限与结论
Cawley 与 Talbot 在 2010 年 JMLR 论文中,通过实验证明选择过拟合及部分评估协议的偏差。我们阅读了方法和协议比较。本二项示例隔离更简单的机制,并未复现其分类器。
赢家未必是坏模型。真实性能不同的候选中,搜索可以找到更好系统;这里只把能力设为相同,以隔离运气。独立评估也不保证所有企业或未来环境中的表现。准确结论是:让候选赢得搜索的分数,本身并不是其在新案例上表现的无偏估计。
解读比较时,应问哪些数据选择模型、考虑了多少次尝试,以及哪些数据在不改变选择的情况下验证它。这些问题把统计学与具体决策联系起来。赢家的 77% 并非伪造,而是正确测得;但若将它当作一般能力,就回答了错误问题。理解区别,才能区分配置搜索成功与价值证据充分。
参考文献与代码
from experiment import run
r = run()
print(round(r['exact']['expected_selected_accuracy'], 6))
print(round(r['exact']['family_tail_15'], 6))
print(r['simulation'])
代码、数据与说明 · JSON. 教学计算使用 Python 3.14.0,图使用 Matplotlib 3.11.2。分析由 AI 辅助,不声称经过同行评审或人工审核。原创 ImageGen 封面仅作示意,不记录 EL-AI 人员、场所或实际安装。来源查阅于 2026 年 10 月 4 日。

