Appearance
Q138 · 如何设计一个模型评估的 A/B 测试?
一家电商想把客服模型 A 换成模型 B。离线题库里,B 的正确率更高;但真实用户还会追问、上传订单信息,也会因为回答慢而离开。要知道 B 是否真的改善服务,需要让同一时期、符合相同条件的用户随机使用 A 或 B,事先约定如何衡量效果,再根据完整数据决定是否上线。这就是模型评估中的 A/B 测试。
它回答的是一个因果问题:在其他条件尽量相同的情况下,换成 B 造成了什么变化?如果把上周的 A 与本周的 B 比较,促销活动、周末流量和政策变更也可能造成变化,不能把差异都归功于模型。微软研究院的在线实验指南强调预先写清假设、指标、随机化单位和功效,并检查实验执行质量。微软研究院:实验前设计
先认识实验里的词
| 术语 | 本题中的意思 |
|---|---|
| A / B、对照组 / 实验组 | A 是当前客服模型,B 是候选模型;两组在同一时间服务不同的随机用户。 |
| 随机分流单位 | 用什么实体决定进入哪一组。本例用稳定的用户账号 ID,而非每条消息掷一次硬币。 |
| 分配与实际曝光 | “分配”是用户被指定到 A 或 B;“曝光”是请求实际上由哪个模型处理。降级或故障时两者可能不同,必须分别记录。 |
| 主指标 | 最能代表实验目的、用于主要成功判断的一个预先指定指标。本例为“首次客服问题 24 小时内解决且未再次联系”的用户比例。 |
| 护栏指标 | 即使主指标变好,也不允许越过的安全、体验或成本边界。本例含错误政策承诺率和响应延迟。 |
| 百分点 | 两个百分率直接相减。63% − 60% = 3 个百分点;相对 A 的增长为 3% ÷ 60% = 5%,二者不是同一个数字。 |
| 最小可检测效应(MDE) | 设计样本量时希望有能力检出的差异,例如提升 3 个百分点;不是实验结束后保证能达到的真实增益。 |
| 显著性水平 α 与功效 | α=0.05 表示在预设的检验规则下,当真实差异为零时,长期重复实验中误报的概率上限为约 5%;功效 80% 表示若真实差异达到设计目标,按该规则检出差异的概率约为 80%。 |
| 95% 置信区间 | 由样本和方法计算出的效应范围;若反复按同一方法抽样,长期约 95% 的区间会覆盖固定的真实效应。不能解释成“这次真实值有 95% 概率在区间里”。 |
| 样本比例不匹配(SRM) | 实际分流人数明显偏离预设比例,可能暴露分流、埋点或过滤错误。 |
| 意向分析(ITT) | 按最初分配的组分析所有符合条件的样本;不能只保留成功调用 B 的用户来美化结果。 |
第一步:把“模型更好”写成可检验的假设
产品团队的目标不是抽象的“B 更聪明”,而是“B 让用户问题更可能被解决,同时不增加错误承诺、等待时间和单位服务成本”。先定义一个可复核的业务事件:用户发起本次实验期间的第一件符合条件的客服问题,24 小时内得到解决,且这段时间没有因同一问题再次联系,记为成功;否则记为未成功。指标分母是所有被随机分配且符合条件的这类用户,不能只数模型答过且愿意评价的人。
统计上可以预先规定双侧检验:零假设是 B 与 A 的真实解决率差为 0;备择假设是差不为 0。产品希望 B 正向提升,并认为至少 3 个百分点值得投入。但“观察到 +3 个百分点”“统计上与 0 不同”“有把握至少提升 3 个百分点”是三件不同的事。把成功标准、允许的风险和判断时间写在实验方案里,避免看到数据以后改口径。微软研究院:实验前设计
本例预先约定:主指标是上述解决率;错误政策承诺率不得超过 0.5%;首答响应时间的第 95 百分位数不得超过 4 秒。所谓“错误政策承诺”,例如用户不符合退款条件,模型却承诺“必然自动退款”,由统一规则或人工抽检确认。95 分位数表示约 95% 的首答耗时不高于这个值,不是平均耗时。安全护栏越界可以触发预设的提前停止;主指标的固定样本显著性判断则应等到约定样本和观察窗口完成,不能每天看到小于 0.05 就宣布胜利。微软研究院:实验中监控
第二步:让两组尽量只差模型版本
把符合条件的登录用户按稳定账号 ID 随机映射到 A 或 B,各占 50%。同一用户后续追问仍进入原组;如果每次提问重新分组,用户会同时看到两个模型,体验串组,分析中也把同一人的多条消息误当独立样本。实验记录至少包含用户匿名 ID、分配组、实际调用模型版本、时间、是否发生降级、结果事件和指标计算所需日志。
两组同时接收相同入口和规则的流量,覆盖预定的工作日与周末。尽量固定系统提示词、政策知识库版本、工具、页面、兜底流程和埋点;若这些同时变化,就无法只归因于模型。用户之间若共享客服工单,或人工客服会把一组学到的处理办法用于另一组,仍可能发生“污染”;应识别共享实体,必要时改成按工单、客服团队或其他合适的集群分流,并相应重算样本量。随机化单位应与干预和指标对应,不存在适用于所有业务的“按用户分流”定律。微软研究院:实验前设计
为避免只统计“已看到最终答案”的人,分配后失败、超时、自动回退到 A 的请求仍要留在其原分配组的主要分析里,并单独报告实际曝光和回退率。如果 B 组大量回退,ITT 测到的是“上线 B 且按当前兜底策略运行”的实际效果;要理解 B 模型自身的表现,还需另做诊断,但不能用事后删人代替主要结果。

第三步:在看结果前估算样本量
只用几十位用户,B 即使略好也可能只是随机波动。样本量应在实验前由四个量估算:A 的基线解决率、值得检测的最小差异 MDE、可接受的误报概率 α、以及功效。本例假设历史 A 约 60%,希望检测 +3 个百分点,双侧 α 为 0.05、功效 80%,两组等量。用独立两比例的常见正态近似估算,每组约需 4129 位用户;考虑无效记录等缓冲,计划各收 5000 位符合条件的用户。数字是教学假设,不是任何平台的通用样本量。若改为更小 MDE、聚类分流或相关性更强的重复观测,需要重新计算。NIST:两比例样本量 · statsmodels:双样本比例检验的功效与样本量接口
实验必须同时满足预定人数和观察期:最后一个用户进入实验后还要等其完整的 24 小时结果窗口。A、B 在相同日历时间内并行,而不是 A 跑满五千人再切到 B。样本量估算还需要预先确定是每用户一条首例、每工单一条,还是多条消息;本例以每用户首个合格工单的一次二元结果为统计单位。
第四步:用同一组数字读结果
假设两组各有 5000 位用户,实验结束且 24 小时结果成熟后得到下表。所有数字都是为了说明方法的假设数据。
| 指标 | A 旧模型 | B 新模型 | 预先约定的判断 |
|---|---|---|---|
| 问题解决用户 | 3000 / 5000 = 60% | 3150 / 5000 = 63% | 主指标希望提高 |
| 错误政策承诺 | 20 / 5000 = 0.4% | 45 / 5000 = 0.9% | 不得超过 0.5% |
| 首答耗时 p95 | 3.0 秒 | 4.8 秒 | 不得超过 4.0 秒 |
主指标观察差值是 63% − 60% = +3 个百分点。为理解随机误差,把 A 组成功率记作 pA=0.60、样本数 nA=5000,B 组成功率记作 pB=0.63、样本数 nB=5000。独立二元样本的近似标准误是 sqrt[pA×(1−pA)/nA + pB×(1−pB)/nB],代入得约 0.00973,即 0.973 个百分点。据此用 差值 ± 1.96×标准误 得到近似 95% 置信区间:+1.1 至 +4.9 个百分点。区间没有覆盖 0,在预先约定的双侧、固定样本分析下可称“统计上显著”。它的下界是 +1.1 而非 +3,因此也不能声称“真实提升至少 3 个百分点”。这个近似成立依赖分流和样本独立等条件;若按客服团队聚类、重复用户、多次检验或结果缺失,不能机械沿用公式。NIST:两比例差的定义与区间
但产品决策是暂缓上线 B:错误承诺率 0.9% 超过 0.5% 上限,p95 延迟 4.8 秒也超过 4 秒。主指标显著不豁免安全和体验要求。团队应抽查错误承诺的真实案例、诊断慢请求,修复后再做新一轮干净实验;若 B 已在小流量灰度中运行,按预设规则回退到 A。统计显著也不等于所有细分人群都受益,更不等于离线题库高分自动转化为线上胜出。微软研究院:实验后判断
实验可能怎样失效
- 分流或日志坏了。 约定 50/50 却出现明显的样本比例不匹配,应先查哈希分流、资格过滤、埋点丢失与客户端缓存,再解释模型效果。即使人数刚好各 5000,也仍须检查曝光和结果日志是否完整。微软研究院:诊断 SRM
- 用户串组或条件变化。 同一账号在手机和网页被分到不同组、实验中政策库改版只影响 B,都会污染对照。需要稳定身份、版本日志和同一时间窗;复杂业务可能需要按共享工单或团队分流。
- 结果只看愿意反馈的人。 若只用点“满意”的用户当分母,沉默离开的用户消失,模型看起来可能变好。预先定义事件、分母和缺失值处理,并核对两组结果覆盖率。
- 过早偷看或挑选指标。 每天做固定样本检验,一旦显著就停止,会提高误报机会;事后从十几个指标里挑最好看的也一样。提前写好终点、主指标与护栏;需要持续监测显著性时使用适合顺序检验的设计。安全事故按预定规则立即停止,不必为了统计功效让用户继续暴露。微软研究院:实验中监控
- 把离线分数当发布结论。 离线评测能筛掉明显差的候选,却覆盖不了真实用户的追问、知识更新、工具故障和时延。先做离线集和安全审核,再小流量实验,线上仍要看真实任务和护栏。
面试中可以这样回答
“我会先把模型替换写成可检验的业务假设,选一个主指标,例如客服问题 24 小时解决率,同时设错误政策承诺、时延和成本护栏。分流用稳定用户 ID,让 A、B 在同一时间面对相同资格的用户,固定提示词、知识库和工具,并记录分配组、实际曝光与回退。根据基线、MDE、α 和功效提前算样本量,约定观察期、分母和停止规则。结束后先查分流比例、日志缺失和串组,再看效应大小与置信区间,最后按护栏决定上线。比如解决率从 60% 到 63% 即使统计显著,若错误承诺超过预设上限,我也会暂缓发布、修复并重测。离线基准只能帮助选候选,不能替代线上 A/B。”