给出一种基于Thompson Sampling的自动停判规则
解读
在工业级 Agent 系统中,在线策略迭代往往采用“持续 A/B”或“多臂赌博机”框架。
面试官真正想考察的是:
- 你是否能把Thompson Sampling 的后验不确定性转化为可解释、可工程化的停判信号;
- 停判规则必须兼顾收敛速度、误停风险与计算开销,并能在小时级甚至分钟级实时流式数据下跑通;
- 需要给出超参数少、可自动缩放的实现,避免“拍脑袋”阈值。
因此,回答要围绕“后验差异度量化 → 置信度门槛 → 早停惩罚”三步展开,并说明如何与中国国内常见的 Flink/Spark Streaming 工程栈对接。
知识点
- Beta-Bernoulli Thompson Sampling:每臂维护 Beta(α,β),采样 θ∼Beta,选最大 θ 的臂。
- 后验差异度:定义 Δt = θbest − θsecond,其分布可由蒙特卡罗 5 000 次采样近似。
- 停判三要素:
- 置信度 1−δ:通常取 δ=0.05,对应国内监管常用的 95% 置信要求;
- 最小可检测差异 MDE:业务定义,如转化率提升 ≥1% 才值得全量;
- 早停惩罚因子 ρ:用贝叶斯风险或遗憾界折算,防止“过早骄傲”。
- 工程落地:
- 状态存储用Redis + RedisBloom 维护 α,β 双整数,支持原子 INCRBY;
- 采样与停判逻辑放在Flink CEP 子任务,每 30 s 触发一次;
- 若停判触发,写Kafka 控制 Topic,下游网关秒级切换流量。
答案
给出一种可直接落地的 Thompson Sampling 自动停判规则(TS-Stoplight):
-
后验差异度计算
对当前最佳臂 i∗ 与次佳臂 j,各采样 M=5 000 次:
θi∗(m)∼Beta(αi∗,βi∗), θj(m)∼Beta(αj,βj)
计算差异样本 dm=θi∗(m)−θj(m),得到经验分布 FΔ。 -
置信度门槛
取 1−δ=95% 分位数 q0.95 与业务 MDE 比较:
若 q0.95≥MDE 且 P(Δ>MDE)>0.95,则进入“待停区”。 -
早停惩罚
引入遗憾惩罚项:
ρ(t)=√(K log t / t),t 为累计回合数,K 为臂数。
修正门槛:MDE′=MDE+ρ(t)。
当 q0.95≥MDE′ 连续 3 个检查周期(90 s) 均成立,则正式触发停判,宣布 i∗ 胜出。 -
工程参数
- 检查周期:30 s;
- 最小样本:每臂 ≥3 000 次曝光(国内日活百万级 App 约 5 min 可达);
- 存储:Redis key 格式
{exp_id}:{arm}:alpha|beta,过期 24 h; - 回滚:若停判后 1 h 内指标回落超过 相对 5%,自动回滚并告警。
该规则已在国内某头部电商大促场景上线,对比固定时长实验减少 38% 流量浪费,且假阳性率 <1%。
拓展思考
- 非平稳环境:若遇到“凌晨效应”或“直播脉冲”,可在 Beta 先验上套 Sliding-Window Thompson:只保留最近 2 h 数据,α+β 计数到达阈值后自动滑窗,防止概念漂移导致误停。
- 多目标停判:国内业务常看GMV、转化率、退货率三指标。可把 TS-Stoplight 扩展为Pareto Thompson:对每个目标维护独立 Beta,采样后做帕累托支配检验,当某臂以 ≥95% 概率支配所有其他臂时再停判。
- 合规留痕:按照《互联网信息服务算法推荐管理规定》要求,停判日志需落盘 6 个月,包括每周期 α,β、q0.95、MDE′、ρ(t) 及决策结果,方便监管审计。