第4章 采集函数(Acquisition Function)入门:EI、PI、UCB 的原理

贝叶斯优化里,代理模型(比如高斯过程)负责猜——猜哪个点的效果可能好。但真正做决策的,是采集函数。它告诉算法:“嘿,下一个该试哪个参数组合了。”

我做质控参数调优时,最常打交道的三个采集函数,就是 EI、PI 和 UCB。这三者其实干的是同一件事:平衡“探索”和“利用”。

说白了,探索就是去那些我们还没怎么测过的地方看看,利用就是守着当前已知的最优参数附近使劲挖。每个采集函数对这两者的权衡方式不一样。

核心一句话:采集函数 = 在当前代理模型下,评估每个候选点“值得一试”的程度。

4.1 概率提升(PI — Probability of Improvement)

PI 的逻辑最简单。它只问一个问题:“这个参数组合,比我目前见过的最好结果更好的概率有多大?”

公式长这样:

PI(x) = Φ( (μ(x) - f* - ξ) / σ(x) )

其中 Φ 是标准正态分布的累积分布函数,μ(x) 是预测均值,σ(x) 是预测标准差,f* 是当前最优观测值,ξ 是一个很小的正数(我一般设 0.01)。

怎么理解?

如果某个点的预测均值 μ 远高于 f*,而且 σ 很小(模型对它很自信),那 PI 值就高。反过来,如果 σ 很大(不确定性高),即便 μ 比 f* 低,PI 也可能给个不错的分——因为它觉得“万一这地方的噪声往下拉了呢?”

我踩过的坑:曾经有一次我只用 PI 做采集函数,结果模型死守在已探索区域附近,死活不肯去未知地带试新参数。原因就是 PI 对高水平线的“利用”太贪婪了,导致探索严重不足。后来我在公式里加了个 ξ 小量(trade-off参数),情况才改善。

PI 的特点:

  • 计算极快,适合需要大量采样的场景。
  • 对探索的鼓励相对较弱——除非你显式调大 ξ。
  • 遇到过局部最优解时容易“自闭”。

4.2 期望提升(EI — Expected Improvement)

EI 比 PI 多算了一步。它不仅关心“能不能比当前好”,还关心“如果能,能好多少”。

公式:

EI(x) = (μ(x) - f* - ξ) * Φ(Z) + σ(x) * φ(Z)
其中 Z = (μ(x) - f* - ξ) / σ(x)

φ 是标准正态分布的概率密度函数。

你想想看:PI 只看概率,不看幅度。EI 则是“概率 × 提升量”的期望。这在实践中往往更合理。

我个人习惯:在质控参数优化的初期阶段,我几乎只用 EI。因为它既不会像 PI 那样太保守,也不会像 UCB(下面要讲)那样在早期过于激进。

EI 的优势:

  • 自动平衡探索和利用,不需要手动调参。
  • 对模型不确定性反应更细腻。
  • 收敛性有理论保证——这在发论文或做严谨报告时很有说服力。

4.3 置信上界(UCB — Upper Confidence Bound)

UCB 的思路不太一样。它不直接算“提升”,而是给每个点算一个“乐观估计的上限”。

公式:

UCB(x) = μ(x) + κ * σ(x)

κ 是一个可调节的系数(通常 κ ≥ 0)。κ 越大,模型越倾向于探索不确定性高的区域。

为什么叫“置信上界”?因为 σ(x) 代表不确定性,μ(x) + κσ(x) 可以看作是预测值的“上限”。如果我们假设高斯过程给出的预测是合理的,那么真实值有大约 95% 的概率落在 μ ± 2σ 内。所以选 UCB 最大的点,相当于选“最乐观情况下表现最好”的点。

UCB 的调参关键:

  • κ 就是你的探索欲望强度。κ = 0 时 UCB 退化为纯利用(只选均值最高的点)。
  • κ 太大,容易乱跑,浪费很多实验次数在完全没意义的区域。
我曾经犯过的错:调一个芯片测试项的阈值时,我把 κ 设成了 8,想着“多探索探索没坏处”。结果模型在参数空间里到处乱转,连续 20 次采样都没找到优于基线的结果。后来我把 κ 设为 2.0,再配上衰减策略(随着迭代次数增加自动减小 κ),效果才正常。

4.4 三者的横向对比

特性 PI EI UCB
核心思想 比当前最优好的概率 比当前最优好的期望幅度 预测值的乐观上限
探索倾向 低(默认) 中(自动平衡) 高(κ 控制)
需调参数 ξ(扰动项) ξ(扰动项) κ(探索系数)
计算开销 极低 低 极低
适用阶段 精细调优期 全流程通用 早期探索期
风险 易局部过拟合 无明显短板 κ 选错可能极差

4.5 实际项目中的选择策略

我不建议死守某一个采集函数。我自己在真实项目里,一般这样切换:

  1. 前 20% 的迭代:用 UCB,κ = 2~3。目的是快速覆盖参数空间的未知区域,建立全局代理模型。
  2. 中间 60% 的迭代:切到 EI。让模型自己平衡探索和利用,稳步逼近最优区域。
  3. 最后 20% 的迭代:转到 PI,加一个小 ξ(比如 0.01)。这时候最需要的是在最优区域附近精细挖掘,不需要再出去乱跑了。
一个小技巧:如果你不确定该用哪个,就直接用 EI。它在绝大多数情况下表现都不差——虽然不是理论上的最优,但胜在稳健。我手头二十多个质控参数优化项目里,有十六个是 EI 收的官。

4.6 采集函数的核心流程

为了让你更直观地理解这三者的关系,我画了一张流程图——它展示了贝叶斯优化中采集函数所处的位置和决策逻辑。

贝叶斯优化中采集函数的决策流程 初始观测样本 构建高斯过程代理模型 选择采集函数计算候选点得分 PI / EI / UCB PI:概率提升 EI:期望提升 UCB:置信上界 选择得分最高的点进行实验 每个采集函数都包含「利用已有模型»和「探索未知区域」两种信息的权衡

图中可以看得很清楚:代理模型构建完后,采集函数根据不同的公式策略(PI、EI、UCB),为每个候选点打一个分,然后算法挑出得分最高的那个点去做下一轮实验。

4.7 几个实用建议

  • 不要只盯着一个采集函数用到底。我见过不少团队,选了一个采集函数就再也不换,结果优化效率一直上不去。
  • 结合质控业务场景来选。如果你的测试成本极高(比如一次实验要烧掉几万块),UCB 的早期探索可能太浪费了,这时优先考虑 EI。
  • κ 和 ξ 不是摆设。很多文献直接取固定值,但实际项目中我还是建议调一下——哪怕只是简单的网格搜索也会带来明显提升。

总结在实际项目中的体会:PI 适合最后冲刺,EI 适合稳扎稳打,UCB 适合开局撒网。把这三种武器配合好,贝叶斯优化在质控参数调优这件事上就能省下你至少 50% 的实验量。