Bayesian Optimization:BoTorch、Optuna 与实验设计
Bayesian Optimization 处理的是昂贵实验下的序贯决策:用已有 trial 建立 surrogate model,估计候选配置的期望表现和不确定性,再用 acquisition function 选择下一次最有信息价值或业务价值的实验点。它不是 grid search 的加速版本,而是把“试哪个配置”建模为探索、利用和约束之间的动态权衡。
Bayesian Optimization / BoTorch / Optuna / Experiment Design 解读
Source Anchors
| Source | Link | 读它要抓住什么 |
|---|---|---|
| Practical Bayesian Optimization of Machine Learning Algorithms | https://arxiv.org/abs/1206.2944 | 用 Gaussian Process 建模昂贵目标函数,并用 acquisition function 高效选择下一次实验 |
| BoTorch | https://botorch.org/ | 基于 PyTorch / GPyTorch 的可编程 Bayesian Optimization 工程框架 |
| BoTorch paper | https://arxiv.org/abs/1910.06403 | Monte Carlo acquisition、模块化设计、batch BO 和实验设计能力 |
| Optuna | https://optuna.readthedocs.io/en/stable/index.html | Study / trial / sampler / pruner 的工程化超参优化流程 |
| Ax | https://ax.dev/ | 实验管理、参数优化、A/B 和 BO 平台化思路 |
| NIST AI RMF | https://www.nist.gov/itl/ai-risk-management-framework | 把自动实验和优化纳入风险管理、测量和治理 |
核心导读
Bayesian Optimization 处理的是昂贵实验下的序贯决策:用已有 trial 建立 surrogate model,估计候选配置的期望表现和不确定性,再用 acquisition function 选择下一次最有信息价值或业务价值的实验点。它不是 grid search 的加速版本,而是把“试哪个配置”建模为探索、利用和约束之间的动态权衡。
在 AI 系统中,RAG 参数、模型路由、prompt 策略、Agent 阈值、价格、容量和风控规则都可能形成高成本实验空间。架构价值在于把参数空间、指标契约、安全约束、Pareto trade-off、实验日志、审批和回滚纳入同一个 ExperimentOps 控制面,使优化器产生的建议能被验证、追踪和治理。
核心问题
AI 产品里有大量需要调优的配置,但每次实验都可能昂贵、耗时或有风险。
RAG 系统要调 chunk size、overlap、embedding model、top-k、reranker、引用阈值、拒答阈值和模型路由。每个组合都要跑评测集、看引用正确性、延迟、成本和安全失败率。
Agent 系统要调工具调用策略、重试次数、澄清问题触发条件、模型选择、人工升级阈值和终止条件。每次实验都可能增加工具成本,也可能引入越权或错误执行风险。
金融零售业务还要调欺诈强认证阈值、信贷审批 cut-off、催收触达频率、优惠金额、库存补货参数、客服队列优先级和容量配置。很多参数不是纯技术参数,而是直接影响收入、损失、客户体验、投诉、合规和运营成本。
简单 grid search 有三个问题。
第一,它不利用历史实验信息。已经知道某些区域效果差,仍然机械遍历。
第二,它不表达不确定性。某个配置看起来好,可能只是样本噪声;某个区域还没试过,可能隐藏更好解。
第三,它很难同时处理多目标和约束。真实系统很少只追求 accuracy,通常还要控制 latency、cost、PII leakage、complaint rate、fairness、SLO 和人工队列容量。
Bayesian Optimization 要解决的是:
在实验预算有限、目标函数昂贵、结果带噪声的情况下,如何选择下一次实验,让学习效率最大化。
它把调参从“枚举配置”变成“实验决策”。
方法/论文贡献
Practical Bayesian Optimization of Machine Learning Algorithms 的核心贡献,是把机器学习超参调优明确建模为昂贵黑盒函数优化问题。真实目标函数未知,只能通过一次次实验观察结果;每次实验成本高,因此要用更少 trial 找到好配置。
Gaussian Process 在这个框架中常作为 surrogate model。它不仅预测某个配置的期望表现,还预测不确定性。这个不确定性让 BO 能够在 exploitation 和 exploration 之间做有原则的权衡。
Acquisition function 是第二个关键贡献。它不是直接代表业务目标,而是代表“下一次实验的价值”。Expected Improvement、Probability of Improvement、Upper Confidence Bound、Knowledge Gradient 等方法用不同方式回答:下一次试哪里最值得。
BoTorch 的贡献偏工程和研究平台化。它把 BO 构建在 PyTorch / GPyTorch 生态上,支持可微、模块化、Monte Carlo acquisition、batch candidate generation、多目标和约束优化。对企业来说,BoTorch 更适合需要自定义目标、复杂约束和研究级灵活性的实验平台。
Optuna 的贡献偏工程落地。它用 study、trial、sampler、pruner 的抽象,把超参优化接入日常训练脚本。它不只支持 BO,也支持 TPE、随机搜索、剪枝和分布式实验。对企业团队来说,Optuna 的价值是降低自动调参接入门槛。
Ax 则更接近实验管理平台:参数定义、trial 管理、指标约束、A/B 实验、candidate generation 和结果跟踪放在一个系统里。它提醒我们,优化算法必须和实验治理一起出现。
这些贡献合在一起形成一个产品架构判断:BO 不是单个 notebook 里的调参函数,而是企业实验系统中的 decision engine。
机制原理:黑盒目标函数
BO 假设有一个未知目标函数:
f(configuration) -> outcome
例如:
f(chunk_size=512, top_k=8, reranker=on, model=gpt-x)
-> quality=0.82, latency_p95=1.9s, cost=$0.04, safety_fail=0.3%
真实函数通常不可解析。你不知道为什么某个配置好,只能运行实验观察。目标可能有噪声:同一配置在不同样本、时间、渠道或负载下表现不同。
BO 的第一步不是盲试,而是明确参数空间。
| 参数类型 | 示例 | 设计风险 |
|---|---|---|
| Continuous | threshold、temperature、discount rate | 范围过宽会浪费实验 |
| Integer | top-k、retry count、batch size | 离散点太多会增加搜索成本 |
| Categorical | model type、reranker on/off、channel | 类别间距离不一定有自然含义 |
| Conditional | 只有 reranker=on 时才有 reranker threshold | 参数依赖要显式建模 |
| Forbidden combination | 高成本模型 + 大 top-k + 低延迟 SLO | 不应让优化器反复探索不可行区域 |
参数空间定义本身就是产品设计。范围、默认值、禁用组合和约束,表达的是团队对系统边界的理解。
机制原理:Surrogate Model
Surrogate model 是对未知目标函数的近似。它根据已完成实验,预测未试配置的结果。
Gaussian Process 的直觉是:
相似配置应该有相似结果,但相似关系和不确定性要从数据中更新。
它给出两类输出:
| 输出 | 含义 | 产品解释 |
|---|---|---|
| Mean | 当前认为该配置的平均表现 | 这个配置可能有多好 |
| Uncertainty | 对该配置估计有多不确定 | 这里是否值得继续学习 |
不确定性是 BO 区别于普通预测模型的关键。一个配置的预测均值可能不是最高,但因为不确定性大,仍值得尝试;另一个配置预测均值很高,但周围已经试过很多次,继续实验的信息价值可能有限。
在高维、离散、条件参数多的工程系统中,GP 不总是最稳。Optuna 的 TPE、随机搜索加剪枝、树模型 surrogate、神经 surrogate 或混合策略都可能更合适。因此学习 BO 时不要执着“必须 GP”,要抓住 surrogate + acquisition + sequential update 的结构。
机制原理:Acquisition Function
Acquisition function 决定下一次实验。它把 surrogate 的均值和不确定性转化成一个可优化的“实验价值”。
常见 acquisition 的直觉如下:
| Acquisition | 直觉 | 适用判断 |
|---|---|---|
| Expected Improvement | 选择预期能超过当前最好结果最多的点 | 单目标 baseline,兼顾好和不确定 |
| Probability of Improvement | 选择超过当前最好或指定阈值概率最高的点 | 有明确达标线时直观 |
| Upper Confidence Bound | 均值 + 不确定性奖励 | 需要显式控制探索强度 |
| Knowledge Gradient | 选择最能提升未来决策质量的点 | 实验昂贵且信息价值很重要 |
| qNEI / batch acquisition | 一次推荐一批候选 | 并行实验、GPU 队列或批量评测 |
产品上可以把 acquisition 解释成:
下一次实验不是“看起来最好的配置”,而是“在当前证据下最值得花预算验证的配置”。
这点很重要。很多业务方会问:为什么不直接试当前预测最优?答案是:如果我们只试预测最优,就容易陷入局部区域;如果只试未知区域,又会浪费预算。Acquisition function 是在收益和学习之间做权衡。
机制原理:Multi-Objective 和 Constrained BO
企业 AI 很少是单目标。
RAG 调优不是只要答案正确,还要引用充分、延迟可控、成本可控、权限正确、拒答合理、敏感信息不泄露。
欺诈策略不是只要损失最低,还要误拦率、客户摩擦、交易完成、投诉、人工队列和公平性可接受。
这时有两种常见建模方式。
第一,把所有指标合成一个 scalar objective:
business_score = quality - cost_penalty - latency_penalty - risk_penalty
这种方式简单,但会隐藏 tradeoff。权重一改,结论可能完全变。
第二,使用 multi-objective / constrained BO。把质量、成本、延迟、风险等作为多个目标或约束,用 Pareto frontier 展示可行 tradeoff。
| 类型 | 示例 |
|---|---|
| Objective | 最大化 answer quality、risk-adjusted revenue、loss reduction |
| Constraint | P95 latency < 2s、cost < budget、PII leakage = 0 |
| Guardrail | complaint rate 不恶化、manual queue 不超过容量 |
| Segment constraint | 关键客群、渠道或地区指标不能低于门槛 |
在受监管场景中,安全和合规指标通常不适合变成可交易的软目标。它们应该是硬约束或 release gate。
为什么有效
BO 有效的第一层原因,是它利用历史实验信息。每次实验不是独立事件,而是更新对参数空间的认知。
第二层原因,是它把不确定性纳入实验决策。普通调参常只看平均结果,BO 会区分“已经知道不好”“看起来不错但证据少”“可能很好但还不确定”。
第三层原因,是它适合昂贵实验。RAG、Agent、模型路由和业务策略实验往往每次都要跑评测、人工抽检、成本核算和风险检查。样本效率直接影响平台迭代速度。
第四层原因,是它能把技术调优和业务权衡连接起来。质量、成本、延迟、风险、人工队列和客户体验可以被放入同一个实验决策记录中。
第五层原因,是它天然支持 continuous improvement。上线配置不是一次定死的,而是在数据、模型、知识库、客户行为和成本结构变化时持续优化。
局限和误用
第一类误用,是把 BO 当成自动找到“最佳配置”的机器。BO 只能优化你定义的目标和约束。如果指标错了,它会更高效地找到错误目标的极值。
第二类误用,是把评估集反复用到过拟合。每一次 BO trial 都在消耗 eval set 的独立性。RAG 和 prompt 调优尤其容易把系统调到对固定评测题表现很好,对真实生产问题泛化较差。
第三类误用,是忽略实验噪声。生产流量、时间窗口、样本组成、模型版本、知识库版本、系统负载都会影响结果。如果结果 store 不记录环境,surrogate 会学习到混杂信号。
第四类误用,是让优化器探索不可接受配置。例如为了提高任务完成率,降低拒答阈值;为了降低成本,选择不满足引用质量的检索策略;为了提升通过率,放松欺诈强认证。安全边界必须先于优化。
第五类误用,是忽略 segment。总体质量上升可能掩盖某些客户群、语言、产品线或渠道的退化。金融零售实验必须按关键 segment 查看指标。
第六类误用,是把推荐配置直接上线。BO 产生的是 candidate,不是 production decision。候选配置还要经过离线评测、人工审查、canary、监控和回滚设计。
架构/产品价值
企业需要的是 Experiment Optimization Architecture,而不是孤立调参脚本。
use case intake
-> parameter registry
-> metric and constraint contract
-> experiment planner / optimizer
-> experiment runner
-> evaluator and safety gate
-> results store
-> Pareto and uncertainty view
-> decision memo
-> release / rollback workflow
关键组件如下:
| 组件 | 职责 |
|---|---|
| Parameter registry | 定义参数范围、类型、条件依赖、默认值和禁止组合 |
| Metric contract | 定义主指标、护栏指标、成本、风险、SLO 和 segment 指标 |
| Optimizer service | BoTorch、Optuna、Ax 或自研 sampler 生成候选配置 |
| Experiment runner | 执行离线 eval、批处理实验、shadow、A/B 或仿真 |
| Safety gate | 阻断违反安全、合规、权限、预算或 SLO 的候选 |
| Results store | 保存配置、指标、版本、样本、环境和审批记录 |
| Decision UI | 展示 Pareto frontier、uncertainty、trial history 和推荐理由 |
| Release controller | 支持 canary、分层发布、自动降级和回滚 |
产品价值有三层。
第一层是效率:减少无效实验,把专家和 GPU 预算投向更有价值的配置。
第二层是透明:每次参数变化都有指标、约束、版本和决策证据。
第三层是治理:优化器不能绕过安全门禁,业务方也不能只凭单一指标推动上线。
金融零售系统案例
RAG 参数调优
一个合规政策 RAG 助手可能有这些参数:
| 参数 | 示例 |
|---|---|
| Retrieval | chunk size、overlap、top-k、hybrid search weight |
| Reranking | reranker model、rerank top-n、score threshold |
| Generation | model route、temperature、max tokens、citation format |
| Safety | refusal threshold、policy risk threshold、human escalation trigger |
目标和约束需要分开:
| 类型 | 指标 |
|---|---|
| 主目标 | answer correctness、faithfulness、task success |
| 证据指标 | citation accuracy、retrieval recall、unsupported claim rate |
| 运营指标 | latency P95、cost per answer、cache hit rate |
| 安全约束 | PII leakage、policy violation、unauthorized answer |
| 产品指标 | user reopen、human escalation appropriateness、complaint trigger |
BO 可以在实验预算内推荐下一批配置。但如果某个配置质量略高、成本翻倍、引用错误集中在信贷产品,不能简单上线。正确做法是把它放到 Pareto view 中,与低成本但质量略低的配置比较,并按风险域决定是否分层发布。
Agent 工具策略调优
Agent 系统常见可调参数包括工具重试次数、澄清问题阈值、模型路由、检索先后顺序、人工升级阈值和停止条件。
优化目标不能只看 task success。还要看:
- unauthorized tool call。
- wrong system of record。
- missing evidence。
- excessive latency。
- cost per resolved task。
- human override rate。
- customer-facing error。
BO 在这里可以用于离线 trace eval 或 shadow 环境。高风险工具调用不应由优化器决定是否放开;它只能在已批准动作空间内优化顺序、阈值和路由。
欺诈强认证阈值
欺诈模型阈值调优看似简单,但目标冲突明显。较低阈值能降低欺诈损失,却提高误拦、交易放弃和投诉;较高阈值减少摩擦,却可能放过攻击。
可以把实验目标定义为 risk-adjusted value,同时设置约束:
fraud_loss reduction maximize
false positive friction <= threshold
manual queue volume <= capacity
complaint rate not worse than baseline
vulnerable customer impact monitored
如果引入 BO,必须使用分层指标。商户类别、地区、交易金额、客户生命周期和设备可信度都可能改变最优阈值。总体最优阈值不一定适合每个 segment。
评测与上线门禁
上线 BO 驱动的优化流程前,需要明确门禁。
| Gate | 需要证明什么 |
|---|---|
| Parameter scope | 优化器只能探索已批准参数和范围 |
| Metric contract | 主指标、护栏、成本、风险和 segment 指标定义清楚 |
| Safety constraints | 禁止配置和硬约束不可被优化器覆盖 |
| Eval integrity | holdout、rotating eval、生产抽检和防过拟合机制存在 |
| Trial reproducibility | 配置、数据、环境和系统版本可复现 |
| Pareto review | 不用单一分数掩盖质量/成本/风险 tradeoff |
| Human approval | 高影响配置上线前有业务、风险或平台 owner 审批 |
| Rollback | 每次配置发布可以快速回退 |
| Monitoring | 上线后持续跟踪 drift、cost spike、SLO、投诉和 segment 退化 |
BO 输出的是候选配置和证据,不是自动上线命令。
学习验证
学习这篇后,可以用一个 RAG、Agent 或金融风控参数问题做完整练习。
- 定义参数空间,区分 continuous、integer、categorical、conditional 和 forbidden combination。
- 写出主目标、约束指标、护栏指标和 segment 指标。
- 说明为什么 grid search 或随机搜索不够。
- 画出 surrogate model 和 acquisition function 的决策关系。
- 比较 EI、UCB、PI 和 batch acquisition 的适用直觉。
- 设计 results store schema,确保每个 trial 可复现。
- 画出 Pareto frontier,并解释为什么没有单一“最佳配置”。
- 给出 eval set 过拟合的防护方案。
- 说明哪些安全约束必须作为硬门禁,而不是 reward penalty。
- 设计从 BO 推荐配置到 canary、监控和回滚的发布流程。
完成这些验证后,应该能把 BO 从“自动调参技巧”提升为“受治理约束的序贯实验决策系统”。
关键结论
Bayesian Optimization 的核心是用 surrogate model 和 acquisition function 高效选择下一次实验。
它特别适合实验昂贵、预算有限、目标带噪声、需要探索/利用权衡的 AI 和业务参数调优场景。
企业落地时,BoTorch、Optuna 或 Ax 只是技术实现选择;更重要的是 parameter registry、metric contract、safety gate、results store、Pareto view、decision memo 和 release controller。
优化器不能替代业务目标定义。指标错、约束错、评估集污染或安全门禁缺失时,BO 会更快地把系统推向错误方向。
成熟的 ExperimentOps 平台不追求一次找到神奇配置,而是让每一次配置变化都有证据、边界和可回滚路径。
SOTA 状态标注 (2026-07-01)
本篇属于第二、三遍深读池(参考架构/深读笔记),未列入 12 周主线必读。时效基线为写作时点;引用前请按 CLAUDE.md 全局时效性硬规则复查最新进展。模块级 SOTA 对照见 docs/AI_SYSTEMATIC_LEARNING_ROADMAP_2026.md 各周「2026 SOTA 对照」行与文末「SOTA 检查」。