跳到主要内容

对非确定性 AI 功能进行 A/B 测试:为何你的实验框架假设了错误的零假设

· 阅读需 12 分钟
Tian Pan
Software Engineer

你的 A/B 测试框架是为按钮和横幅颜色而生的。它假设当你向用户展示变体 B 时,变体 B 每次的行为都相同。这个假设是如此根本,以至于没有人费心去明说它。然而对于 AI 功能而言,这个假设完全是错的。

当处理本身是非确定性的——当同一个提示每次请求都会产生不同的输出时——你试图测量的方差被你无意中制造的方差所掩盖。大多数团队都是经历了惨痛教训才意识到这一点:本应在一周内达到显著性的实验跑了一个月;周二看起来显著的结果到周四又逆转了;而"获胜"的变体在推广到 100% 流量后却毫无提升。

这不是一个小小的统计干扰问题,而是实验平台的工作方式与 LLM 驱动功能的实际行为之间的结构性错配。

方差问题比你想象的更严重

传统 A/B 测试假设处理是一种固定干预。把按钮从蓝色改为绿色不会引入任何额外的方差——处理组中的每个用户都看到同样的绿色按钮。唯一的方差来源是用户之间的差异。

LLM 驱动的功能打破了这一假设。同一个用户,用同样的查询,在同一天,每次请求都可能得到截然不同的回复。这是由以下几个相互叠加的原因造成的:

  • 温度与采样:即使很小的温度值也会在 token 层面引入随机性,并在整个回复中级联放大
  • 提供方侧的非确定性:多项研究已证实,即使温度为零,LLM API 也无法保证逐位相同的输出,这源于批量计算中的浮点数非确定性
  • 上下文窗口敏感性:对话轮次、检索结果或系统提示顺序的细微差异,都可能改变整个输出分布
  • 模型版本漂移:提供方会静默更新模型,导致同一实验中周一和周三的输出分布发生偏移

实际结果是:你的实验现在有两个方差来源——用户间方差(框架能处理)和处理内方差(框架无法处理)。处理内方差会膨胀你的标准误,这意味着你的功效计算是错的。你用的那个样本量计算器假设处理是确定性的。你需要更多样本——有时多得多——才能检测出同等效应量。

举个具体例子:在确定性功能中,从 0.82 的基线检测 3% 的提升可能大约需要每个变体 1,400 个样本。加上 LLM 功能的处理内方差,这个数字可能翻倍甚至三倍,取决于模型引入了多大的输出方差。

你的随机化单元很可能是错的

大多数实验平台以用户为单位进行随机化:用户 47291 被分配到处理组,在实验期间他们的每次交互都使用处理变体。这对静态干预非常有效。

对于多轮 AI 功能,用户级随机化会产生一种微妙的混淆。考虑一个聊天机器人实验,你正在测试两种不同的系统提示。用户 A 在变体 B 下进行了三轮对话。第一次回复会塑造第二个问题,第二个问题会塑造第二次回复,而第二次回复又会塑造第三个问题。到第三轮时,你测量的已不再是系统提示的效果,而是系统提示加上前两次非确定性回复的累积影响。

对话轨迹变得路径依赖,同一处理组中的不同用户可能处于截然不同的路径上。这不是会被平均掉的随机噪声——而是由轮次间非确定性交互引入的系统性方差。

两种显而易见的修复方案都不够干净:

  • 会话级随机化意味着同一用户可能早上看到变体 A,下午看到变体 B。任何跨会话聚合的指标(留存率、周活跃使用量)都会因交叉效应而受到污染。
  • 请求级随机化对于多轮功能更糟糕,因为这意味着用户在对话中途经历不同的变体,这会以混淆测量的方式影响其行为。

对于多轮 AI 功能,最不坏的方法是用户级随机化结合对话级分析。使用基于确定性哈希的分配来持久分配用户,但将每次完整的对话作为分析单元,而不是单个回复。这既保留了用户所需的一致性,也给你足够多的每用户独立观测来估计用户内方差。

真正有效的指标

经典的实验手册告诉你选一个主要指标,定义最小可检测效应,然后计算样本量。对于 AI 功能,这份手册有一个空缺:你到底要测量什么?

传统产品指标(点击率、转化率、页面停留时间)仍然重要,但它们遗漏了 AI 功能最主要的失败模式。一个聊天机器人可以执行得完美无缺——低延迟、无错误、无崩溃——却给出了一个完全错误的答案。你的监控显示一切正常,而你的用户却怒火中烧。

你需要同时运行两层指标:

自动化质量指标,可以对每个回复进行程序化评估:

  • 忠实度:回复是否基于所提供的上下文?
  • 检索质量:RAG 功能的平均倒数排名(MRR)和归一化折损累积增益(NDCG)
  • 护栏通过率:回复是否满足安全性和格式约束?
  • 回复连贯性和引用准确性

行为信号,需要观察用户收到回复后的行为:

  • 重新生成率:用户点击"再试一次"的频率?
  • 后续模式:用户是否提出了澄清性问题(部分失败的信号),还是转向了新话题(成功的信号)?
  • 任务完成率:用户是否达成了他们的目标?
  • 会话放弃时机

关键洞察在于:自动化质量指标数量大但测量的是代理指标,而行为指标测量的是你真正关心的东西,但信号密度较低。你两者都需要,并且需要在启动实验之前预先注册哪个是主要决策指标。否则,你最终会挑选任何发生变化的指标——这是一种 p-hacking,当实验花费的时间超出预期时,这种诱惑尤为强烈。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates