给出一种基于Thompson Sampling的自动停判规则

解读

在工业级 Agent 系统中,在线策略迭代往往采用“持续 A/B”或“多臂赌博机”框架。
面试官真正想考察的是:

  1. 你是否能把Thompson Sampling 的后验不确定性转化为可解释、可工程化的停判信号;
  2. 停判规则必须兼顾收敛速度、误停风险与计算开销,并能在小时级甚至分钟级实时流式数据下跑通;
  3. 需要给出超参数少、可自动缩放的实现,避免“拍脑袋”阈值。

因此,回答要围绕“后验差异度量化 → 置信度门槛 → 早停惩罚”三步展开,并说明如何与中国国内常见的 Flink/Spark Streaming 工程栈对接。

知识点

  1. Beta-Bernoulli Thompson Sampling:每臂维护 Beta(α,β),采样 θ∼Beta,选最大 θ 的臂。
  2. 后验差异度:定义 Δt = θbest − θsecond,其分布可由蒙特卡罗 5 000 次采样近似。
  3. 停判三要素
    • 置信度 1−δ:通常取 δ=0.05,对应国内监管常用的 95% 置信要求;
    • 最小可检测差异 MDE:业务定义,如转化率提升 ≥1% 才值得全量;
    • 早停惩罚因子 ρ:用贝叶斯风险遗憾界折算,防止“过早骄傲”。
  4. 工程落地
    • 状态存储用Redis + RedisBloom 维护 α,β 双整数,支持原子 INCRBY
    • 采样与停判逻辑放在Flink CEP 子任务,每 30 s 触发一次;
    • 若停判触发,写Kafka 控制 Topic,下游网关秒级切换流量。

答案

给出一种可直接落地的 Thompson Sampling 自动停判规则(TS-Stoplight)

  1. 后验差异度计算
    对当前最佳臂 i∗ 与次佳臂 j,各采样 M=5 000 次:
    θi∗(m)∼Beta(αi∗,βi∗), θj(m)∼Beta(αj,βj)
    计算差异样本 dm=θi∗(m)−θj(m),得到经验分布 FΔ。

  2. 置信度门槛
    1−δ=95% 分位数 q0.95 与业务 MDE 比较:
    若 q0.95≥MDE 且 P(Δ>MDE)>0.95,则进入“待停区”。

  3. 早停惩罚
    引入遗憾惩罚项
    ρ(t)=√(K log t / t),t 为累计回合数,K 为臂数。
    修正门槛:MDE′=MDE+ρ(t)。
    当 q0.95≥MDE′ 连续 3 个检查周期(90 s) 均成立,则正式触发停判,宣布 i∗ 胜出。

  4. 工程参数

    • 检查周期:30 s;
    • 最小样本:每臂 ≥3 000 次曝光(国内日活百万级 App 约 5 min 可达);
    • 存储:Redis key 格式 {exp_id}:{arm}:alpha|beta,过期 24 h;
    • 回滚:若停判后 1 h 内指标回落超过 相对 5%,自动回滚并告警。

该规则已在国内某头部电商大促场景上线,对比固定时长实验减少 38% 流量浪费,且假阳性率 <1%

拓展思考

  1. 非平稳环境:若遇到“凌晨效应”或“直播脉冲”,可在 Beta 先验上套 Sliding-Window Thompson:只保留最近 2 h 数据,α+β 计数到达阈值后自动滑窗,防止概念漂移导致误停。
  2. 多目标停判:国内业务常看GMV、转化率、退货率三指标。可把 TS-Stoplight 扩展为Pareto Thompson:对每个目标维护独立 Beta,采样后做帕累托支配检验,当某臂以 ≥95% 概率支配所有其他臂时再停判。
  3. 合规留痕:按照《互联网信息服务算法推荐管理规定》要求,停判日志需落盘 6 个月,包括每周期 α,β、q0.95、MDE′、ρ(t) 及决策结果,方便监管审计。