1. 引言:目标不是黑箱,而是黑箱内的地形
如果你做过超参搜索、材料配方设计、仿真器标定、甚至广告点击率优化,你对“黑盒优化”的痛苦应该不陌生:函数没有梯度、拿不到解析式、每一次评估都贵得离谱。经典贝叶斯优化靠高斯过程当代理模型,算是这个领域最常见的解法,但它有个“房间里的大象”——高斯过程本质上是用一个强先验去硬套未知地貌,套得准不准,完全看函数脾气是否温和。
这篇挂在 NeurIPS 2025 的工作,标题里直接写着“Optimizing the Unknown”,方向很明确:不再把未知函数当作一个需要猜的标量映射,而是把它当作一个“能量地形”来建模,再用强化学习的信息去指导我们该往哪里踩。我第一次看到这个组合的时候,第一反应是“又一篇缝合怪”,但认真把 EBM(Energy-Based Model,能量基模型)在贝叶斯优化里的位置捋清楚之后,发现这条路其实比传统代理模型更贴合真实工程场景。
这篇文章我打算按自己的理解把它拆开聊:先讲黑盒优化的核心痛点,再讲能量模型为什么适合做代理,最后展开“Reinfo”里的强化学习组件到底在解决什么问题,以及实现过程中最容易翻车的几个环节。对于正在做超参搜索、实验设计、昂贵仿真优化的读者,这套思路应该能帮你打开一个之前没怎么注意过的工具箱。
2. 问题设定:我们手里到底有什么
2.1 黑盒优化的形式化描述
黑盒优化的问题可以压缩成一句话:有一个函数 f(x),我们只能通过查询拿到 y = f(x),拿不到梯度,也拿不到中间过程,而且查询一次可能要花几分钟、几小时、甚至几轮实验。目标是在有限的查询预算内,找到让 y 最小的 x。
注意“有限”这个词。真实工程里,预算通常不是几百次,而是几十次,运气差点十几次就烧完了。这种情况下,优化器的每个决策都含金量极高:选错了点,可能就意味着一次失败的物理实验、一轮白跑的仿真、或者一批浪费的训练任务。
贝叶斯优化(Bayesian Optimization, BO)之所以能成为主流,是因为它把“怎么选下一个点”拆成了两个子问题:一是用代理模型拟合已有观测,二是设计采集函数,用模型的不确定性和预测值来权衡探索与利用。经典做法是高斯过程(GP)做代理,EI、UCB、PI 这类采集函数做决策。
2.2 高斯过程的强项与软肋
高斯过程在低维、平滑、样本量小的场景下确实是无冕之王。它自带不确定性估计,闭合的解析形式也很漂亮,几十个点就能给出不错的后验。可一旦你遇到下面几种情况,GP 就会开始拉胯:
- 函数有多个明显不同的模态,比如一个配置空间里同时存在几个性能相近的局部最优区;
- 输入维度涨到二十、五十以上,GP 的距离计算会被高维空间的稀疏性干扰;
- 观测噪声不是高斯分布,有厚尾、有离群点;
- 搜索空间是离散组合结构,比如神经网络的架构、分子图、材料组分,GP 的核函数很难设计。
在这些场景下,GP 的“平滑先验”反而成了一种约束。它会把概率质量集中在单一模态附近,导致优化器反复探索已经看过的区域,而对远距离的潜在好区视而不见。这正是这篇工作想解决的核心问题:能不能换一种更灵活的分布模型,让代理真正“看见”未知地形的多样性?
2.3 换个视角:把优化问题看作分布学习
我在读这个标题的时候,觉得最有意思的一个思维转换是:与其把我们要做的工作理解为“逼近一个函数 f”,不如把它理解为“从数据分布里采出更好的 x”。
把观测到的点 (x, y) 当成一个联合分布的样本,那问题就变成:我们要估计 p(x, y),然后从这个分布的条件模式中找出高 y 对应的 x。这就跟能量基模型非常自然地接上了。EBM 不直接预测 y,而是用一个能量函数去刻画整个样本空间的形状,低能量的区域对应高概率,也对应高价值的解区域。
这种视角的迁移是这篇文章和传统 BO 拉开差距的起点。
3. 能量基模型:把代理从“点估计”升级成“地形图”
3.1 什么是能量基模型
能量基模型的思路来源于统计物理。它假设存在一个能量函数 E_θ(x, y),样本出现的概率跟能量的负指数成正比:
p_θ(x, y) = exp(-E_θ(x, y)) / Z(θ)
这里 Z(θ) 是配分函数,通常很难精确计算。但 EBM 的聪明之处在于:很多训练和采样算法根本不需要显式算出 Z,只需要能比较相对能量、能对输入算梯度就够了。这就像你看一张地形图,不需要知道海平面绝对高度,只需要能看出哪里是谷底、哪里是山脊,就能规划路线。
这篇工作在标题里把 EBM 和黑盒贝叶斯优化拉到一起,动机其实很直白:GP 给的是一个带不确定性的回归面,而 EBM 给的是一个完整的概率地形。后者在表达多模态、复杂边界和离散结构时,能力强很多。
3.2 两种建模取向:回归型还是生成型
用 EBM 做代理模型,至少有两条路可以走:
第一种是回归型:把能量函数设计成 E_θ(x, y) = (y - μ_θ(x))² / (2σ_θ²(x)),本质还是用神经网络预测均值和方差,只是套了能量模型的外壳。这条路改动小,实现稳定,但思想上的新意有限。
第二种是生成型:直接建模联合分布 p_θ(x, y),把 x 和 y 一起放进能量函数,然后通过条件采样来得到候选点。我判断这篇工作更偏向第二种,因为标题里强调的是“Optimizing the Unknown”——优化未知本身,而不是仅仅预测未知。
生成型的优势在于:传统 BO 需要采集函数来权衡预测值和不确定性,像是先预测再决策;而 EBM 可以直接条件化在 y 的高值区域,从 p(x | y 较好) 里采样新候选,一步到位。
3.3 从能量模型里怎么采样候选点
从 EBM 中采样最常用的工具是 Langevin 动力学,本质上是带噪声的梯度下降。给定当前样本 x_t,更新公式为:
x_{t+1} = x_t + ε * ∇_x log p(x_t) + noise
换成 EBM 的写法,就是:
x_{t+1} = x_t - ε * ∇_x E(x_t) + √(2ε) * η
其中 η 是标准高斯噪声。整个更新过程可以理解为:能量梯度把样本往低能量区推,噪声保证它不会被某个局部坑彻底锁死。实际使用时,通常要跑几十步 burn-in,然后取最后几步的样本作为候选。
这里有个很有意思的连接点:Langevin 采样和优化本质上是一回事,只是优化走的是确定性路径,采样走的是带随机性的路径。EBM 把这个连接天然地包含在流程里,所以从代理到采集的过程非常丝滑,省去了传统 BO 里“拟合模型”和“优化采集函数”两个阶段之间的格式转换。
3.4 训练 EBM 的常用目标
训练 EBM 最大的障碍是配分函数不可计算,所以不能直接做最大似然。常见的替代方案有两种:
对比散度(Contrastive Divergence, CD):从训练数据出发做几步 Langevin 采样得到一个“对比样本”,然后让真实数据能量更低、对比样本能量更高。实现简单,但对比样本质量差时会有偏。
评分匹配(Score Matching):直接匹配梯度分布,让模型对数据的梯度接近真实分布的梯度。不需要采样,但要求能对输入求二阶导,内存开销大。
这篇工作在工程落地时大概率会碰到一个两难:CD 快而不准,评分匹配准而慢。我的建议是,如果查询预算极度有限、观测点不超过一百个,用 CD 训练,配一个稍大一点的步数和足够的 burn-in;如果预算宽松、观测点上千,评分匹配会更稳。
4. 强化学习组件:让优化器学会“问问题”
4.1 标题里“Reinfo”指的是什么
标题被截断了,我看“Reinfo”大概率是 Reinforcement Learning 的缩写。这也解释了为什么这套框架会在“怎么选下一个评估点”这个环节引入强化学习的思路:贝叶斯优化的每个决策阶段,本质上就是一个序贯决策问题,只是经典方法用采集函数做贪心决策,而强化学习可以把这个过程建模成更完整的策略学习问题。
你完全可以把 BO 看成一场和环境交互的游戏:优化器是智能体,黑盒函数是环境,每一次查询是动作,得到的观测值是奖励。强化学习的语言描述这个流程毫不违和。区别在于,传统 BO 每轮靠代理模型重新做一次决策,而带 RL 的框架可以让决策策略记住历史轨迹的规律,越选越聪明。
4.2 EBM 和强化学习是怎么耦合的
从我个人的理解来看,这套方法里 EBM 和 RL 的分工可以这样拆:
- EBM 负责提供“地形先验”:它告诉系统哪里能量低、哪里有希望,但本身不决定下一步该不该去。
- RL 策略负责“决策习惯”:它根据当前观测到的历史样本,输出一个下一步探索方向的分布,同时从 EBM 的地形里吸收信息,过滤掉明显没价值的区域。
换句话说,EBM 是地图,RL 是向导。地图再精确,向导如果只会东看一眼西看一眼,效率也高不到哪里去;反过来,向导再聪明,手里只有一张分辨率极低的地图,照样会把队伍带进沟里。
4.3 奖励设计是整个组件的命门
强化学习组件最容易被搞砸的就是奖励函数。黑盒优化的天然奖励就是查询点对应的 y 值,但这会遇到两个问题:
第一,奖励范围不固定。如果 y 本身在 0.1 到 0.2 之间波动,和它在 1 到 1000 之间波动,策略的更新幅度必须完全不同。不加处理的话,策略很容易被几个异常大的奖励带偏。
第二,奖励稀疏。预算有限,每个训练回合只有十几个样本点,奖励信号密度极低,直接端到端做策略梯度基本学不动。
基于这两点,我推测这篇工作会用两个技巧:一个是把奖励做标准化,比如在对一个 batch 内做 min-max 归一化或者 z-score;另一个是引入基线,用整个 batch 的平均奖励当 baseline,让策略梯度只放大“比平均好”的样本。这样一来,即使绝对奖励值起伏很大,策略依然知道该往哪个方向偏移。
4.4 探索与利用的动态平衡
传统 BO 的探索靠采集函数里的不确定性项,比如 UCB 的 β*σ(x),使用的是一种静态的、按公式计算的探索权重。而 RL 组件的引入让探索权重变成自适应:如果最近几轮评估发现某个区域一直在打脸,策略会自然而然地降低对该区域的采样概率;如果某个区域连续给出惊喜,策略会加大投入。
这种自适应能力正是传统 BO 最缺的东西。GP 的探索权重跟观测点的距离计算绑定,当函数存在尖锐的局部变化时,GP 要么过度自信、要么过度保守。RL 策略则可以绕过这种统计假设,直接用结果反馈修正行为。
这也解释了为什么这篇工作敢在标题里用“Optimizing the Unknown”——它并不试图让代理模型去猜一个完美的真实函数,而是让策略在真实反馈中不断调整对未知区域的优先级判断。
5. 从原理到实现:关键环节与高频踩坑
5.1 EBM 训练不稳定的三个常见原因
场景一:能量坍塌。如果训练时只有正样本参与更新,模型很容易把所有样本的能量都压到负无穷,最后整个分布变成一个尖峰。解决办法是每步都拉一个对比样本,甚至用一个小批量的 Langevin 采样专门产生负样本。
场景二:步长不匹配。Langevin 步长太大会发散,太小会原地打转。我见过很多新手把噪声方差和梯度步长混在一起调,结果模型一会儿震荡一会儿冰冻。建议先固定噪声尺度,只调步长,看到样本分布稳定之后再反过来微调噪声。
场景三:维度灾难。输入维度一旦超过几百,Langevin 采样的收敛速度会明显变慢,因为高维空间中能量梯度方向噪声太大。这通常需要引入更高效的采样器,比如 HMC,或者用分层采样,先对低维潜变量采样再映射回原空间。动手之前先想清楚搜索空间的维度,再决定是不是真要用 EBM。
5.2 采样收敛怎么判断
EBM 采样不像普通神经网络的推理那样给定输入就能拿输出,它是一个迭代过程。判断 Langevin 采样是否收敛,我一般看三样东西:
- 样本能量的分布方差是否稳定。如果能量值还在持续下降,说明采样还没到平稳态。
- 不同初始点的样本是否趋于同一个区域。多条链从不同位置出发,最后能量分布相似,才算收敛。
- 采样轨迹的自相关性。如果相邻两步样本几乎重叠,说明步长太小;如果跳来跳去能量忽高忽低,说明步长太大。
这块在论文里往往只是轻描淡写一句“用 N 步 Langevin 采样”,但实际跑起来是最耗费调试时间的环节。建议在正式优化之前,先用一个简单的二维测试函数把采样器的参数调好,再进入真实任务。
5.3 强化学习组件的方差控制
很多人在混合了 EBM 和 RL 之后才意识到,最大的问题不是模型不收敛,而是收敛得太动荡。策略梯度本身的方差就大,再叠加 EBM 训练的随机性,整个优化流程会像一个喝醉的人在爬山。
我在实操中比较有效的一套配置是:
- 策略更新频率不要每轮都做。攒一个 mini-batch 的历史数据,每隔几轮统一更新一次策略,降低梯度的相关性。
- 强烈建议使用 baseline。不管是最简单的 batch 平均,还是用一个小网络做 value baseline,都能显著抑制奖励尺度变化带来的方差。
- 给策略加熵正则。强制策略不要过早坍塌到一个固定的采样分布,保持对未知区域的探索余地,尤其是在预算还剩很多的时候。
5.4 评估指标与对比基准
做这类方法研究,光看最终找到的最小值是不够的,因为黑盒优化的随机性太强。我在复现类似工作的时候,一般看下面几个指标:
| 指标 | 含义 | 你要关注的点 |
|---|---|---|
| Regret 曲线 | 当前最优值与全局最优的差距 | 看收敛速度和稳定性 |
| 每次迭代的最优提升 | 单次查询带来的收益 | 评估查询效率 |
| 探索区域覆盖率 | 访问过的空间分散程度 | 判断策略是否被局部最优困住 |
| 模型能量分布的多样性 | 有效候选点的分散程度 | EBM 是否真正建模了多模态 |
对比基准上,除了经典的 EI / UCB,建议再对比一下近期比较热的 TPE 和进化策略。TPE 也是密度估计派,跟 EBM 的思路有可比性,但实现简单很多,正好可以检验 EBM 多花的算力有没有换回效果。
5.5 超参和资源消耗的现实考虑
这套方法比传统 BO 贵得多。EBM 的 Langevin 采样需要多次前向传播,RL 策略更新又要额外的反向传播,整个流程的时间开销是 GP-BO 的十倍以上都很正常。如果你的评估函数本身只花几秒钟,用这套方法大概率是亏的;只有当单次评估的成本非常高,比如物理实验、完整仿真、大模型微调,才有动力引入这么重的代理。
给一组粗略的初始配置,可以拿去做起点:
- EBM 用两层 MLP,128 个隐藏单元,激活用 Swish;
- Langevin 采样步数先设 50,步长 0.1,噪声 0.01;
- 策略网络用一层 GRU + 一层 MLP,学习率 1e-4;
- 每 5 轮评估更新一次 RL 策略;
- 奖励做 z-score 归一化,加 batch 平均 baseline。
这组配置不一定最优,但它能让你在大多数中等规模问题上先跑起来,再根据实际曲线去调。
6. 我的个人判断和适用边界
聊到最后,我想说点自己的真实感受。
这套“EBM + RL 强化版贝叶斯优化”的组合,它的价值不在某个单一模块有多强,而在于它把“代理模型”和“决策策略”之间的耦合方式彻底改变了。传统 BO 是先学好模型再决策,决策完再学新模型,两个阶段交替得很生硬;EBM + RL 更像是让模型的能量地形和策略的行动倾向同时演化,信息流动是双向的。
但反过来,它也不是万能药。如果你的优化问题本身平滑、低维、观测便宜,GP-BO 依然是更理性的选择。这套方法的适用边界很清晰:函数多模态、评估昂贵、预算紧张、且你有足够的离线计算资源去支撑 EBM 训练和采样。超出这个范围,就是在用大炮打蚊子。
另外,如果你准备在真实项目里复现,我强烈建议你别一上来就在高维空间里硬怼。先用二维或三维的人工函数把整套流水线跑通,确认 EBM 采样不发散、RL 策略真的在改进探索方向,再逐步放大规模和维度。我遇到的大多数失败案例,问题都不是算法理论,而是 Langevin 采样根本没走稳,导致代理模型的能量地形完全失真,后续策略再好也白搭。
最后留一个小技巧:实现的时候,把 EBM 的能量值记录到日志里。你不光要看优化曲线,还要看能量的变化轨迹。如果能量单调下降,说明模型在过拟合当前观测区;如果能量剧烈震荡,说明采样器参数不对。能量值的走势,往往比最终的优化曲线更能告诉你系统到底出了什么问题。