正文
平均值提供了一部分信息,但没有说清楚每种等待时间有多常见。要理解这些结果之间的关系,需要认识分布、期望与方差。
先用一个很简化的假设模型。令 X 表示完成一次会议查询所需的秒数,暂时只考虑两种结果:
| 查询用时 X | 假设概率 |
|---|---|
| 2 秒 | 75% |
| 6 秒 | 25% |
这不是某个系统的性能实测,也不是说实际查询只能花两秒或六秒。我们只是把情况简化,让后面的计算容易看清楚。
X 叫随机变量,可以先理解成:给不确定结果安排一个数值表示。在任务完成前,我们还不知道这一次会取哪个值;完成后,才观察到具体用时。
分布描述随机变量可能取哪些值,以及概率怎样分配。 对于这个离散例子,两个值的概率都非负,加起来为 1,就构成了一份完整的概率分配。
“离散”表示可能值可以逐个列出;这不要求它们一定都是整数。比如只允许取 0.5、1.5、2.5,也可以是离散变量。
现在想给查询时间一个代表整体位置的数,可以把各个值按概率加权:
E[X] = 2×0.75 + 6×0.25 = 3 秒。
E[X] 是 X 的期望,也叫分布的均值。对于有限离散分布,期望就是“每个可能值乘上对应概率,再把结果加起来”。它不是不看概率、把所有不同值简单平均。离散分布与期望的定义
在这个模型里,直接把 2 和 6 平均,会得到 4 秒,却忽略了较快情况更常发生。按概率加权得到的 3 秒,才对应我们设定的分布。
值得留意,模型里没有一次查询会恰好花 3 秒。期望可以不是任何单次结果,所以不能把“平均三秒”说成“每次三秒”,也不能承诺下一次一定不超过它。
当适当的重复抽取条件满足时,很多次结果的平均值可以用来接近期望;但有限次数的平均仍会波动。现实中的服务负载还可能变化,不能只凭“测得次数多”,就忽略数据是不是来自同一运行条件。
还可以用另一个假设模型比较:某种处理过程始终需要 3 秒。它的期望同样是 3 秒,却没有前一种模型的等待波动。
这说明,均值相同,不代表用户体验或结果分配相同。第一种情况经常很快,偶尔较慢;第二种情况在这个设定下保持固定。只报一个平均数,无法区分二者。
方差用来描述数值围绕均值的离散程度。 计算时,先看每个值偏离均值多少,把偏差平方,再按相应概率取平均:
Var(X) = E[(X−E[X])²]。
平方的作用之一,是避免正负偏差互相抵消。对于我们的两种查询时间,计算如下:
Var(X) = (2−3)²×0.75 + (6−3)²×0.25 = 3 秒²。
这个单位是“秒的平方”,因为偏差经过了平方。方差开平方得到标准差,本例为 √3,约 1.73 秒;标准差与原变量具有相同单位,更方便比较尺度。方差、标准差与单位
比较时还要使用一致单位。如果把秒换成毫秒,时间数值放大 1000 倍,方差数值就会放大 1000000 倍;标准差则放大 1000 倍。仅仅看到方差数字变大,不能据此判断服务突然更不稳定。
标准差也不是每次偏差的固定值。它在描述分布整体的离散程度,不表示每次都偏离均值 1.73 秒,更没有单独保证所有结果都在某个区间里。
始终为 3 秒的另一种假设过程,方差为零。对于方差存在的分布,方差为零意味着结果以概率 1 等于均值;这不等于已经证明真实服务永远没有异常,我们首先还要检查模型是否适合现实。
接下来,再从概率模型转到手里的一批数据。
假设观察记录为 2、2、2、6 秒。它们的算术平均也是 3 秒,四个值与均值的偏差平方之和为:
1 + 1 + 1 + 9 = 12 秒²。
如果我们只是描述这四条记录构成的整个有限总体,平均平方偏差为 12/4=3 秒²。这也等于给每条记录相同权重时,其经验分布的方差。
如果这四条记录被当成从更大总体取得的样本,目的是估计那个总体的方差,就会遇到另一种常见公式:把平方偏差之和除以 n−1,而不是 n。
这里 n=4,于是样本方差为 12/3=4 秒²。
二者不是谁把除法算错了,而是在回答不同的问题。除以 n 可以描述当前这批数据;除以 n−1,则是在相应抽样假设下,为估计总体方差所作的调整。不能仅凭“这些数被叫作样本”,就断言所有计算只能除以 n−1。
在独立同分布、总体方差有限等常见条件下,用样本均值计算偏差并除以 n−1,得到总体方差的无偏估计。这里“无偏”说的是反复按同样方式抽样,估计量的期望等于目标方差,不保证每次算出的数都更接近真值。样本方差与 n−1 校正
直观上,样本均值已经利用了这批数据来确定中心,各偏差还满足相加为零的约束。n−1 校正与这些关系有关;它并不能修复数据选取不当,也不能让四条记录突然变得足够充分。
只有一个样本时,这个样本方差公式的分母为零,不能直接使用。并且,方差估计无偏,不意味着把它开平方以后,标准差估计也自动具有同样性质。
实际时延往往还需要更细致的表示。它可以有许多小数取值,数学上常用连续分布建模。
连续分布常用概率密度描述,但密度曲线在某一点的高度,不是“恰好取这个值的概率”。概率对应一段区间下的面积,整条密度曲线下的总面积为 1;密度高度可以大于 1,也不违反概率不能超过 1。连续分布与概率密度
在这种理想连续模型下,单个精确值的概率可以为零,但某次观察仍然会取得一个具体值。仪器显示“两秒整”通常还涉及记录精度与取整,不能把它和数学上的无限精确点混为一谈。
离散与连续是模型选择,不是说一台设备测出了小数,就必然已经找到了正确的连续分布。我们仍然需要根据任务与资料,判断怎样表示更合适。
均值和方差也不能完整决定所有分布。两组结果即使这两个数相同,仍可能在极端等待、偏斜或多个集中位置等方面不同。查看分位数、图形和具体任务条件,可能提供额外信息。
如果只是挑选网络顺畅时的查询,得到的分布也不能代表全部任务;若同一时段的请求共享负载,观测之间还可能相关。计算公式可以正确,数据口径却仍然不适合回答用户的问题。
在 Agent 评估中,我们可能关心完成时间、调用次数、费用和成功结果等不同变量。每个变量的分布及其适用条件,需要分别说明。某一类任务的平均表现,也不能直接决定另一条任务的具体结果。变化小也不等于内容正确:一个程序总是写出同样的错误时间,依然可能表现得很稳定,所以正确性需要另行核实。
这一篇讨论的有限例子,都有明确的期望与方差。对于一般分布,这些量未必都存在;使用平均和方差概括问题时,也需要确认相应前提。
有了分布的概念,下一篇就可以继续问:一组概率有多难预测,预测出的分布与参考分布有什么差别?这些问题会引出熵、交叉熵与 KL 散度。
当前学习编号:03.06 分布、期望与方差。
下一学习编号:03.07 熵、交叉熵与 KL 散度。后续还有其他学习编号。
关联分支:数据与估计对应 03.09 抽样误差与置信区间、03.10 假设检验与效应量、23.13 重复试验、稳定性与置信区间;任务表现对应 23.17 时延、吞吐、成本与质量权衡、25.10 首 Token 时延与端到端时延。
条件变化对应 04.13 分布偏移与分布外数据;机器学习中的相关概念另见 04.10 偏差与方差。这些支系会在各自编号中单独展开。