Articles
    10 分钟阅读作者 Selma Kovellek更新于

    AI产品的A/B测试:一次实验要同时算好几本账

    一个新模型灰度两周,任务完成率涨了 3 个百分点,幻觉率却从 1% 升到 1.6%,单次请求成本贵了四成(示意数字)。该不该上?只盯一个 KPI 的团队会说上,把账算全的团队多半会说不。

    测传统功能,盯住一个核心指标通常就够了。AI 产品的实验却要同时算好几本账。因为 AI 系统生成概率性输出:同一个问题,它不一定每次都给同样的回答。它会随新数据不断变化,也会随用户的情况和提示词而变。可靠性、安全和成本在线上都在变,所以一次实验要同时检查:模型好不好、用户有没有得到价值、护栏有没有守住、模型会不会慢慢变差,以及每次调用花多少钱。

    这几本账经常互相打架,所以 AI 实验需要多指标评估。离线评估(不接触用户的测试)必要但不够,用户的真实行为和真实成本,只有线上 A/B 测试才能看出来。服务成本要完整算清楚。安全、公平和合规要从设计实验的第一天就写进去,等结果出来再补就晚了。下面各节按这个顺序,把统计、人工评估、经济账和治理要求串成一个决策流程。

    假设分 3 层写,随机化单元先定好

    AI 实验要同时考虑模型的表现、用户怎么用和系统的限制,所以假设最好分三层写:

    • 模型层:具体会改善什么。更准、编造更少(即更少“幻觉”)、更懂用户意思、更快、更安全。
    • 体验层:产品体验会怎么变。推荐更相关、操作更顺、引导更好、阻力更少。
    • 用户结果层:最后能量化的影响。任务完成率更高、留存更好、更快用上有价值的功能、转化更高。

    三层缺一层,假设就容易在“模型变好了”和“用户得到好处”之间断掉。

    同样重要的,是提前写下可能出现的坏结果,也就是失败方式。其中不少是 AI 特有的:编造内容、不安全内容、答非所问、变慢、预测偏差,以及提示词太长或推理太多导致成本暴涨。

    定好要争取什么、要防住什么之后,才能选实验方式。常见的有:

    • 经典 A/B;
    • 用 A/B/C 同时对比多个模型版本;
    • 带门控(gating)的 A/B:只有在模型有把握、安全、系统容量够的时候,才让新版本回答;
    • 适合高方差个性化系统的多臂老虎机,它会自动把更多流量分给表现更好的版本;
    • 作为 A/B 前安全步骤的影子测试:新模型在后台处理真实请求,但用户看不到它的回答。换新的模型架构或模型家族时,这一步尤其重要。

    选好实验方式后,还有一件容易被忽略、却决定结论成不成立的事:按什么单位分组。普通功能测试几乎默认按用户分。但 AI 功能可以按单次请求、按一次会话或按用户分。同一个用户在一次长对话里可能连续触发几十次调用。如果按请求分,同一个人会在两个版本之间来回跳,体验前后不一致,行为数据也被自己弄乱了。按用户分更干净,代价是需要更多样本、更长时间。

    更麻烦的是,两个版本之间并不总是互不影响。比如检索系统共用同一个向量索引和缓存,新版本写进去的内容会被旧版本读到。又比如用户反馈实时回到同一个排序模型,实验组的行为就会改变对照组看到的结果。这违反了 A/B 测试成立的前提:两组互相独立。结果往往是效果被系统性地低估或高估。

    发现这种问题不需要更复杂的统计,先把数据流画清楚就够了:哪些东西是两组共用的,在哪一层分的组,两者是不是同一个粒度。如果共用的部分隔离不了,就按地区或按客户整体分组。这通常比按个人分组更诚实。

    4 类指标各管一件事,方差决定要等多久

    AI 实验必须用多维指标体系。

    先看模型质量。基础是准确率、精确率、召回率和 F1,生成式场景还要加上相关性评分。编造的频率和严重程度要分开算:一次少见但严重的错误,往往比很多小偏差更危险。误报和漏报能说明模型具体错在哪里。模型自报的把握准不准(校准),决定了它的自我判断有多可信。最后是响应时间:在产品里,一个来得太晚的正确答案,常常等于错误答案。

    模型变化可能直接推翻实验结论,所以要持续跟踪:两组的数据分布有没有变、向量表示有没有偏移、准确率是否随时间下降、新问题是否带来更多编造、模型把握是否越来越分散。和它并列的是一组决定实验能否继续的安全护栏:有害或冒犯性内容、偏见、隐私泄露、不安全推荐、模型在极端情况下的脆弱,以及兜底(fallback)触发太频繁。

    行为和产品这一层要回答:模型的回答变好之后,用户的行为是否真的跟着变了。参与度和漏斗转化反映短期反应;同期群留存说明效果能不能持续到第一次使用之后。任务完成率和搜索成功率看模型是否帮用户达成目的,用户满意度则补上行为数据看不到的主观感受。

    经济这一侧,AI 功能的成本主要看调用成本、上下文长度和 token 用量:一次请求带的历史越多,回答就越贵。再往上还有检索的负载和多步推理的开销,因为一条调用链会把一次用户操作的成本成倍放大。所在的计算区域也会影响账单,同一功能在不同区域的价格可能差不少。所以 PM 通常要做成本测算和盈利测算。

    还要提醒一点:AI 指标的波动通常比普通转化指标大。原因不难理解:个性化让每个用户看到的回答都不同;少见的长尾问题带来大量离群值;编造这类事件本身就是次数少、影响大。波动大,就意味着同样的效果要更多样本才能稳定发现,也意味着实验早期的曲线会剧烈抖动。

    正是这种抖动,引出了最常见的错误:偷看。每天盯着看板,一看到显著就想停。如果在一个按固定样本量设计的检验里反复中途查看、随时准备叫停,实际误判的概率会远高于名义上的 5%。很多“上线后就消失的收益”就是这么来的。

    有两条实际的出路。一是在设计阶段就用功效分析把样本量和实验时长定死,把中途的显著当作噪声,而不是信号。二是改用专门为持续查看设计的方法,比如序贯检验或贝叶斯方法。它们允许边看边判断,代价是判定标准要更保守。

    减少波动也能直接省样本:用实验前的数据(比如用户过去两周的活跃度)做回归调整,扣掉一部分本来就能预测的波动。分组方式不用改,需要的样本就能降下来。实验前的数据和实验指标关系越紧密,省得越多。新用户没有历史数据,这一招对他们基本没用。举个直观的例子:如果基线转化率约 4%,想以 80% 的功效检测出 0.3 个百分点的绝对提升,每组需要的样本会到几万人的量级。波动越大,这个数越往上走。

    样本量到底要多大:一个算给你看的例子

    把上面那句“数万量级”落到公式上。检验两个比例的差异时,每组所需样本量可用这个近似式估算:

    n ≈ 16 × p(1-p) / δ²
      p = 基线转化率
      δ = 想检出的绝对提升(最小可检测效应 MDE)
      16 ≈ (z₀.₉₇₅ + z₀.₈)² × 2 -- 对应 95% 置信、80% 功效

    代入基线 p = 4%、目标 δ = 0.3 个百分点(0.003):

    n ≈ 16 × 0.04 × 0.96 / 0.003²
      = 16 × 0.0384 / 0.000009
      ≈ 68,000(每组)

    也就是每个变体约 6.8 万人、两组合计十几万,这还是没算 AI 额外方差的干净版本。若逐用户的生成差异让指标方差再高出五成,按同一公式所需样本也要上抬约五成,逼近每组 10 万。这组数点明了两件事:δ 落在分母且带平方,把想检出的提升砍半,样本量就要翻四倍;真正吃样本的,是你想抓住的那零点几个百分点。这也是 AI 实验难以在几天内速成的根本原因:更高的方差叠上更小的目标效应,双双把样本量往上推。

    样本量回答的是“要多少人”,却回答不了“看哪个数”。上面这些指标并不等权:当质量、行为、安全和成本朝不同方向变化时,必须事先规定谁让步、谁一票否决。护栏指标是硬约束,越过就停,不参与加权;主要指标决定值不值得上;模型与经济指标解释为什么会这样、代价有多大。把这套优先级在开测前写死,实验才不会在最后变成一场按预期挑数字的辩论。

    离线评估负责筛选,输赢要看线上

    两类评估都少不了,但分工不同。

    离线评估检查模型本身的质量:在标注好的数据集和黄金评测集(一套有标准答案的固定测试题)上打分,再加上编造检测、相关性测试、故意刁难的提示词、安全预检和成本估算。

    线上 A/B 测试检查真实效果:真实用户的问题有什么变化、少见情况下的表现、用户是否信任、漏斗怎么变、成本高峰,以及真实流量下的响应时间。这一步 PM 要看结果是否显著、效果有多大。

    两者对不上时,常见原因有:模型没读懂用户真正想要什么、遇到了没见过的新提问方式、用户构成变了、界面有阻力、解释不够,或者门控和路由出了错。

    前面多次提到编造率、相关性、安全性,但这些数怎么得到,往往比用它们做决策更难。人工标注最可信,但又贵又慢,只能抽一部分做。用一个更强的模型当裁判可以大量打分,但裁判有自己的偏好:它偏爱更长、更自信、格式更漂亮的回答,而这些可能和真实质量无关。可行的做法是两者结合:先让模型裁判全部打分,再用一份人工标注的标准集校准裁判的偏差,并给出误差范围。没有误差范围的分数,不该直接用来决定是否上线。

    校准的账并不复杂。假设从两个变体里各抽 500 条回答做人工标注,发现模型裁判判为“有幻觉”的回答里,人工只认同 80%;而人工认定的幻觉里,裁判漏掉了 25%。那么裁判报告的 2% 幻觉率,换算回人工口径大约是 2% × 0.8 ÷ 0.75 ≈ 2.1%。更要紧的是检查两个变体的偏差是否一样:如果新模型的回答更长、更“自信”,裁判可能对它更宽容,这时两组之间的差值本身就是被裁判放大或抹平的。每组 500 条只够发现明显的偏差,想把差值的误差压到 1 个百分点以内,标注量要上千。

    还要区分被平均值掩盖的东西。幻觉的危害极不均匀,一次把剂量说错的医疗回答,抵得过成千次无关痛痒的措辞瑕疵,所以按严重度分层、单独盯住尾部,比看一个总体幻觉率更有意义。同样地,离线金标集只能覆盖你已经想到的情况,真实流量里最伤人的往往是没被标注过的新提示类型,这也是“离线漂亮、在线翻车”的一个具体来源。

    护栏一票否决,主要指标定去留

    前面定下的优先级,落到 go / no-go 判定上,就是三层结构:

    • 主要指标(用户价值、转化率、参与度与留存)决定这件事值不值得上;
    • 次要指标覆盖 precision/recall、幻觉率与延迟,用来解释质量为什么变化;
    • 护栏指标必须全部为绿色:安全性、偏见、成本阈值、合规性与漂移稳定性,任何一项亮红都直接否决。

    分层之外还要把取舍显性化,因为典型的权衡随处可见:准确率对延迟、相关性对成本、覆盖率对风险、个性化深度对公平性,这些多维度的权衡需要单独建模。而权重不是通用的,必须贴合产品战略:自动化场景里幻觉风险最关键,推荐系统里相关性优先,企业产品把安全与合规摆在最高优先级,低利润产品则对推理成本格外敏感。

    成熟团队很少一次只跑一个实验,几十个实验同时在线是常态。多数情况下它们互不相干,可以各自随机、各自评估;但 AI 实验之间的耦合比普通功能更常见,比如两个都改动同一条推理链、同一个检索索引或同一份提示模板的实验叠在一起,效应不再是简单相加,一个实验的处理组可能恰好富集了另一个实验的某个变体。

    判断的界线其实很清楚:共享了状态、或作用于同一段管线的实验需要正交化设计,或干脆排队;彼此独立的可以放心并行。把这件事事先想清楚,好过事后为一个对不上的结果反复找原因。

    “贵”往往是调用方式的问题

    AI 功能可能同时抬高使用指标和压低毛利,所以值得把推理当作一项普通的可变成本来管理。核心的成本驱动因素包括:

    • token 数量与上下文窗口长度;
    • 模型规模与类型;
    • 检索次数与 prompt 复杂度;
    • 模型链路带来的多步调用;
    • 吞吐量与并发。

    围绕它们要设几道成本护栏,给单次请求成本、单次任务完成成本、成本占收入比例与峰值负载预算都定上限。光有均值还不够,得用规模测试把极端情况压出来:周末流量峰值、企业批处理、超长上下文滥用、恶意提示攻击,以及产品发布后的流量激增。

    把推理成本当成给定条件去被动承受,是很多团队的默认姿态,但成本更应该被当成一个可以实验的变量。同一个功能,缓存命中率、上下文裁剪策略、按难度把请求路由到大小不同的模型,都会把单次成本拉开几倍的差距:简单请求交给小模型、只在不确定时才升级到大模型,往往能在几乎不损失质量的情况下砍掉大半开销。这意味着“贵”常常不是模型的属性,而是调用方式的属性。

    因此值得在实验里额外设一条对照:不仅比模型 A 和模型 B,也比同一个模型在不同调用策略下的成本-质量曲线。要回答的问题也随之变成:在能接受的质量下,这个模型最低能做到多便宜?忽略这条,往往会因为一次没优化过的昂贵实现,误杀掉一个其实经济可行的模型。

    建模时还要记住,推理价格本身变化很快。斯坦福大学《2025 年 AI 指数报告》统计,在 MMLU 上达到 GPT-3.5 水平的模型,每百万 token 的调用价格从 2022 年 11 月的 20 美元降到了 2024 年 10 月的 0.07 美元。这意味着一个按半年前价格算出“不划算”的变体,今天可能已经划算;反过来,产品团队也常把降价省下的钱花在更长的上下文和更多轮自检上,用量一涨,单次成本又回到原处。

    所以成本护栏最好写成“每个成功任务的成本”,并在每次换模型或调价后重新核算,实验开始时的数字很快就会过时。按 1 美元约合 7.1 元人民币粗算,上面那个价格从约 142 元降到了约 0.5 元每百万 token,两年不到降了两百多倍。

    把路由策略放进账里算一遍。假设日活 20 万,人均每天 5 次请求,即每天 100 万次推理。全部走大模型、单次 0.02 元,每天 2 万元,一个月约 60 万元。若把 70% 的简单请求路由到单次 0.002 元的小模型,单次平均成本变成 0.3 × 0.02 + 0.7 × 0.002 = 0.0074 元,每天 7,400 元,一个月约 22 万元,省下六成以上。

    代价要用同一个实验来量:如果被分到小模型的那部分请求任务完成率掉了 1 个百分点,就要问这 1 个点值不值每月 38 万元。答案取决于一个成功任务能带来多少毛利,这个数只有业务方能给。

    实验期间受影响的是真实用户

    在 AI 实验里,重要的不只是结果是否更好,还有这个结果是怎么得来的。开测前要确认几件事:内容安全、偏见在可接受范围内、数据来源合法、必要时具备可解释性,以及各用户群之间的公平性。实验文档也要落到纸面,至少包含假设、评估标准、风险场景、离线结果、成本阈值、护栏与回滚计划。最关键的是那条硬规则:即便 KPI 提升,只要出现偏见、危险的边缘场景、隐私敏感行为或严重幻觉,都必须立即叫停。

    伦理检查常被排在实验清单的最后一项,容易让人以为它只是合规盖章。但在真实产品里,实验期间接触到问题输出的是真实用户,他们并不知道自己在处理组里。这带来两个具体要求:一是知情与撤出机制,尤其在健康、金融、就业这类高风险场景,用户应当能看出结果由 AI 生成,并有回到人工或旧版本的通道;二是事故的归属要在开测前就定清楚,一旦出现偏见或有害输出,谁有权一键回滚、谁负责复盘,不能等事情发生了再临时找人。

    这些约束看起来拖慢速度,实际却是在保护实验本身。一次未被察觉的伤害,赔上的是用户对整个功能乃至品牌的信任;这种信任一旦掉下去,再好看的 KPI 也换不回来。

    除了上线、重训、下线,AI 实验的结论还可能是证据不足、修正设计后重测,或在预先约定的条件下继续收集数据。所有这些结局的判定标准都要在开测前写死,免得最终决策跟着团队的预期走:

    1. 上线(Ship):关键 KPI 上升、模型指标优于基线、成本可接受、没有安全或偏见问题、漂移稳定,且离线与在线一致;
    2. 重训(Retrain):漂移出现、幻觉恶化、成本难以预测、不同群体间相关性差异增大,或离线与在线不一致;
    3. 下线(Kill):护栏被触发、安全风险出现、用户信任下降、利润率崩塌、用户挫败提升,或模型在负载下不稳定。

    2 周的好数字,可能只因为“新”

    一个反复出现、又反复被忽略的陷阱是:AI 功能上线初期的漂亮数字,有一部分只是因为它“新”。用户会去点新出现的推荐、去试探新的对话能力,短期参与度被好奇心抬高,几周后回落到接近基线。反过来也有“改变厌恶”,习惯旧交互的老用户一开始抵触,指标先跌后升。这两种效应都可能让一次两周的实验得出与长期真相相反的结论。

    要把短期反应和持久价值分开,靠的是时间维度上的设计,多堆几个指标无济于事。观察指标随实验天数的走势,看它是收敛到一个稳定水平,还是仍在漂移;保留一个长期留出组,让一小部分用户在数月内持续不接触新功能,作为对抗缓慢漂移的干净参照;并优先看只有回头用户才可能贡献的指标,比如次周留存和重复完成任务的比例;首次点击在这里说明不了什么。对高风险变更来说,宁可让实验多跑几周,换来一个不会在上线后蒸发的结论。

    什么时候不必这么重?

    小团队常有一个合理的疑问:一套多指标、长留出组、功效分析齐全的流程,跑一次要几周,而很多改动只是调一句提示词、换一个温度参数,回滚只要几秒。为这种改动排一个月的实验,学习速度全耗在等待上,还不如快速灰度、出问题就撤。

    有三种情况,确实可以从简:改动可以秒级回滚;影响面小,比如只在内部工具或不到 5% 的流量上;不涉及健康、金融、未成年人这类高风险场景。这时用离线黄金评测集加小流量灰度、配合自动熔断就够了,不必上完整的 A/B。反过来,换模型家族、改检索架构、动定价相关的输出,或者流量少到每组凑不够几万人时,省掉实验设计省下的那几周,往往要在上线后加倍还回去。流量不够时更诚实的做法是把最小可检测效应放大,只问“有没有大的变化”,并把这个限制写进结论。

    决策要接进运行系统才算数

    前面的护栏、阈值和回滚计划,只有被接进线上系统才真正生效。安全护栏应当做成自动熔断,不能指望有人盯着看板发现问题:当有害内容比例或成本单价越过阈值时,流量自动回落到基线,这比任何事后复盘都更能挡住损失。分流比例、门控条件和回滚开关最好由配置驱动、可以秒级切换,这样一旦影子阶段或小流量阶段暴露问题,止损不必依赖一次上线发布。

    同样重要的是,实验结束后模型不会静止。数据分布会漂移,今天通过全部护栏的模型,三个月后可能在悄悄变化的输入上退化,所以上线之后,持续监测才刚刚开始:把关键的质量、安全与成本指标接入常态化告警,用定期重跑的金标集捕捉退化。一次严谨的实验回答的是“现在能不能上”,而运行系统回答的是“它还值不值得留着”。

    把前面各节串起来,一次合格的实验大致这样走完:护栏、主要指标以及上线、重训、下线三种结局的判定条件在开测前写进实验文档,之后不再改动;样本量用功效分析把 AI 额外的方差算进去,时长事先定下,中途看到显著也不收手;成本护栏按“每个成功任务的成本”来写,并且至少对照一种更便宜的调用策略,免得一个没优化过的实现误杀掉本来可行的模型。

    参与度上升而幻觉增多这类冲突,在这样的流程里不必开会讨论,护栏优先,该版本不上线。真正拉长周期的是最后一段:通过之后,同一套质量、安全与成本指标接进告警,长期留出组再保留几个月,等新颖效应退去、曲线稳定下来,新版本才成为下一轮实验的基线。把实验周期估成两周的团队,漏算的往往就是这几个月。

    Share:XLinkedInTelegramWhatsAppEmail