Learning
VOL. VI · NO. 29 · Mathematics · 01 JAN 1970

贝叶斯优化:用最少的实验找到最优参数

数学 · 01 JAN 1970 · 10 min read · 2,308 words
· · ·

产品经理的数学课 · 第29讲

贝叶斯优化:用最少的实验找到最优参数

调参是产品经理的日常——广告出价、推荐算法权重、页面布局参数。贝叶斯优化用「智能猜测」替代「盲目尝试」,用最少的实验找到最优参数。


前言

你的产品有 3 个需要调的参数:

  • 广告出价:10-100 元
  • 推荐权重:0-1
  • 页面布局:3 种方案

问题:如何找到最优参数组合?

穷举法:100 × 10 × 3 = 3000 种组合,每种测试 100 个用户,需要 30 万用户——成本太高。

随机搜索:随机尝试 50 种组合,找到较优解——但可能错过最优。

贝叶斯优化:用「智能猜测」——根据已有的实验结果,预测哪个参数组合最可能最优,然后测试它。


核心概念

贝叶斯优化的流程

  1. 初始化:随机尝试几个参数组合
  2. 建模:用高斯过程(Gaussian Process)建立目标函数的模型
  3. 采集:用采集函数(Acquisition Function)选择下一个要测试的参数
  4. 评估:测试新参数,观察结果
  5. 更新:更新高斯过程模型
  6. 重复:直到预算用完或收敛

高斯过程(Gaussian Process)

高斯过程:对目标函数的「信念」——认为目标函数在每个点的值服从正态分布。

特点

  • 每个点的预测值 μ(x) 和不确定性 σ(x)
  • 已测试的点:不确定性低(接近真实值)
  • 未测试的点:不确定性高(不确定)

例子

  • 测试了出价 50 元,转化率 10%:μ=10%, σ=0%
  • 未测试出价 70 元:μ=10%(基于邻近点的预测), σ=3%(不确定)

采集函数(Acquisition Function)

采集函数:决定下一个要测试的参数——平衡「探索」和「利用」。

常用采集函数

1. 期望改进(Expected Improvement, EI)

$$ EI(x) = \mathbb{E}[\max(f(x) - f_{best}, 0)] $$

  • 利用:选择预测值高的点(f(x) 高)
  • 探索:选择不确定性高的点(σ(x) 高)

2. 置信上界(Upper Confidence Bound, UCB)

$$ UCB(x) = \mu(x) + \kappa \sigma(x) $$

  • κ 控制探索程度:κ 大→更多探索,κ 小→更多利用

3. 概率改进(Probability of Improvement, PI)

$$ PI(x) = P(f(x) > f_{best}) $$

  • 选择比当前最优更好的概率最高的点

贝叶斯优化 vs 网格搜索 vs 随机搜索

网格搜索

  • 优点:简单,易于并行
  • 缺点:维度灾难(参数多时指数增长)

随机搜索

  • 优点:简单,容易并行
  • 缺点:不利用已有信息

贝叶斯优化

  • 优点:高效,利用已有信息
  • 缺点:不能并行(顺序决策),计算成本高

实际应用中的注意事项

1. 处理离散参数

  • 对离散参数做高斯过程可能不准确
  • 解决方案:用 One-Hot 编码或专用核函数

2. 处理多目标

  • 同时优化转化率和用户满意度
  • 解决方案:Pareto 前沿

3. 处理约束

  • 某些参数组合可能违反约束(如预算限制)
  • 解决方案:约束采集函数

产品经理的应用

应用场景一:广告出价优化

你的产品需要优化广告出价(10-100 元),目标是最大化 ROI。

贝叶斯优化过程

轮次出价ROI
130 元2.5
270 元1.8
350 元2.8
445 元3.2
548 元3.5

结果:最优出价约 48 元,ROI 3.5。

行动:设置广告出价为 48 元。

应用场景二:推荐算法权重

你的推荐算法有两个权重:相关性权重 w₁ 和新鲜度权重 w₂(w₁ + w₂ = 1)。

贝叶斯优化

轮次w₁w₂点击率
10.50.58%
20.80.210%
30.70.312%
40.650.3513%
50.680.3213.2%

结果:最优权重 w₁=0.68, w₂=0.32。

行动:设置推荐算法权重。

应用场景三:页面布局优化

你的产品有 3 种页面布局方案,需要选择最优。

贝叶斯优化(离散参数):

轮次布局转化率
1A5%
2B7%
3C6%
4B7.2%
5B7.1%

结果:布局 B 最优(转化率 7.2%)。

行动:选择布局 B。


常见误区

误区一:贝叶斯优化总能找到全局最优

「用贝叶斯优化就一定能找到最优参数」

不一定。贝叶斯优化可能:

  • 陷入局部最优(采集函数偏好利用)
  • 需要大量实验才能收敛
  • 高斯过程模型不准确

但通常比网格搜索和随机搜索更高效

误区二:贝叶斯优化可以并行

「可以同时测试多个参数组合」

传统贝叶斯优化是顺序的(每次测试一个参数)。

并行贝叶斯优化

  • 批量采集函数(Batch Acquisition)
  • 同时选择多个参数组合
  • 但效率通常低于顺序方法

误区三:贝叶斯优化不需要专业知识

「贝叶斯优化自动调参,不需要人工干预」

需要专业知识

  • 选择合适的高斯过程核函数
  • 设计合适的采集函数
  • 处理约束和离散参数

贝叶斯优化是工具,不是万能药

误区四:贝叶斯优化适用于所有问题

「任何优化问题都用贝叶斯优化」

贝叶斯优化适用于

  • 实验成本高(如 A/B 测试)
  • 参数空间中等规模(10-50 维)
  • 目标函数光滑

不适用于

  • 实验成本低(用网格搜索或随机搜索)
  • 参数空间很大(>100 维)
  • 目标函数不连续

PM/BA 应用

场景贝叶斯优化工具决策价值
广告出价超参数优化最大化 ROI
推荐权重多目标优化最大化点击率
页面布局离散优化最大化转化率
模型调参机器学习超参数提升模型性能
实验设计主动学习减少实验次数

课后测验

题目 1

贝叶斯优化的核心思想是什么?

A. 穷举所有参数组合
B. 随机尝试参数组合
C. 用高斯过程建模,用采集函数选择下一个参数
D. 用梯度下降优化参数

查看答案与解析

答案:C(用高斯过程建模,用采集函数选择下一个参数)

贝叶斯优化

  1. 用高斯过程建立目标函数的模型(预测值 + 不确定性)
  2. 用采集函数选择下一个参数(平衡探索和利用)
  3. 测试新参数,更新模型
  4. 重复直到收敛

关键:利用已有信息,智能选择下一个参数(不是盲目尝试)。

题目 2

你用贝叶斯优化调参,当前最优 ROI 是 3.5。采集函数建议测试一个新参数,预测 ROI 是 3.2,不确定性是 0.5。以下哪种解释最准确?

A. 不应该测试这个参数(预测值低于当前最优)
B. 应该测试这个参数(有潜力超过当前最优)
C. 随机选择一个参数测试
D. 测试当前最优参数

查看答案与解析

答案:B(应该测试这个参数)

采集函数的逻辑

  • 预测值 3.2(低于当前最优 3.5)
  • 不确定性 0.5(有不确定性)
  • 期望改进 EI > 0(有概率超过当前最优)

为什么测试?

  • 如果真实值 = 3.2 + 0.5 = 3.7(超过当前最优)
  • 如果真实值 = 3.2 - 0.5 = 2.7(低于当前最优)
  • 采集函数权衡了这两种可能性

行动:测试这个参数,观察真实 ROI。

题目 3

以下哪种情况最适合使用贝叶斯优化?

A. 每次实验成本很低(如点击模拟)
B. 参数空间很大(100 维)
C. 目标函数不连续(有跳跃)
D. 每次实验成本高(如真实 A/B 测试)

查看答案与解析

答案:D(每次实验成本高)

贝叶斯优化的优势:用最少的实验找到最优参数。

适合场景

  • 实验成本高(真实 A/B 测试需要大量用户)
  • 参数空间中等规模(10-50 维)
  • 目标函数光滑

不适合场景

  • 实验成本低(用网格搜索或随机搜索)
  • 参数空间很大(>100 维,高斯过程计算成本高)
  • 目标函数不连续(高斯过程预测不准确)

本课要点

  1. 贝叶斯优化:用高斯过程建模,用采集函数选择下一个参数
  2. 高斯过程:对目标函数的「信念」(预测值 + 不确定性)
  3. 采集函数:平衡探索和利用(EI, UCB, PI)
  4. vs 网格/随机搜索:更高效,但不能并行
  5. 应用:广告出价、推荐权重、页面布局、模型调参

延伸阅读

  • Shahriari et al., 《Taking the Human Out of the Loop: A Review of Bayesian Optimization》 — 贝叶斯优化综述
  • Frazier, 《A Tutorial on Bayesian Optimization》 — 贝叶斯优化教程
  • Snoek et al., 《Practical Bayesian Optimization of Machine Learning Algorithms》 — 贝叶斯优化在机器学习中的应用

下一步

下一课:多臂老虎机:探索与利用的最优平衡 — 用老虎机算法在探索新选项和利用已知最优之间找到平衡。


工具提示:用 Python 的 scikit-optimize 或 Ax 库实现贝叶斯优化——从简单的 1 维优化开始,理解采集函数的工作原理。