贝叶斯优化
第一部分:基础
EN

优化写不出公式的函数

软件工程师遇到的优化问题,大多有公式可循:损失函数可以求导,查询计划可以估算代价,排程可以逐条对照约束检查。本书讨论的是另一类问题:要知道一个输入有多好,唯一的办法是实际尝试,而每次尝试都代价高昂。

本章首先描述这类问题,并说明常用工具为何会在这类问题上浪费评估;然后勾勒全书将要展开的思路,即贝叶斯优化:为未知函数维护一个模型,使模型清楚自身有多不确定,再由这种不确定性决定下一步在何处观察。接着讨论本书副标题所指的情形:函数存在于人的头脑中,唯一的测量是人在两个选项之间做出的选择。本章最后给出全书地图。

1.1 单次评估的代价 #

全书反复出现四个问题。

训练模型。机器学习模型(例如神经网络)通过训练过程拟合数据,而训练过程本身也有一些设置,须在开始之前由人选定:每次更新的步长(学习率)、每次更新使用的样本数(批量大小),以及十几个其他设置。这些设置称为超参数(hyperparameter),因为训练过程不会学习它们。选择不当可能毁掉一次运行:学习率过大时,更新会越过目标,训练始终无法稳定,即发散(diverge)。每种组合的好坏,都必须实际训练模型,并在未参与训练的数据上测量准确率(验证准确率),才能检验,在昂贵的硬件上这可能需要数小时。一个团队或许负担得起五十次这样的运行。

调节外骨骼。动力踝关节外骨骼在每一步中施加力矩,力矩的时机与大小由几个参数设定。合适的设置因人而异。要测量一组设置带来多大帮助,须让穿戴者行走数分钟,同时测量其代谢消耗,而人会疲劳。一次会话或许只能尝试几十种设置(第 33 章)。

冲咖啡。研磨粗细、水温、粉水比与浸泡时间共同决定味道。每杯咖啡需要数分钟制作,并通过品尝来评判。这里没有可以直接读取的数值,只有一个人在判断这一杯是否比上一杯更好。

选择设计的外观。字体、配色方案、材质着色器、三维角色的造型都有参数,有时多达几十个。一组设置是否合适,只能由人观看后判断。

这些问题有四个共同性质,本书将其作为黑箱目标函数(black-box objective)的工作定义:

  1. 存在一个从输入(设置)到分数的函数 ff,目标是找到分数高的输入。输入空间 X\X 通常是由几个到几十个连续参数构成的盒形区域。
  2. ff 没有公式,因此没有梯度;除了评估之外,也无从推断其形状。
  3. 每次评估都代价高昂:耗费时间、金钱、算力或人的耐心。预算是几十到几百次评估,而不是几百万次。
  4. 评估带有噪声:同一输入可能得到不同的分数,因为训练运行因随机种子不同而异,人的状态也时刻在变化。

第四条性质有时以更强的形式出现,咖啡与设计问题即是如此:可能根本没有分数,只有人在选项之间做出的选择。

1.2 常用工具为什么力不从心 #

软件工程师首先想到的工具,使用评估时毫不吝惜,因为在其通常的应用场景中,评估很便宜。

网格搜索(grid search)为每个参数取若干值,并尝试所有组合。dd 个参数各取 kk 个值,需要 kdk^d 次评估:6 个参数各取 10 个值,就是一百万次运行。部分参数无关紧要时,网格搜索还会浪费评估:不重要的参数每取一个值,网格都要把重要参数的每个值重复一遍。Bergstra 与 Bengio(2012)针对超参数优化提出了这一论证,并表明随机搜索(random search),即均匀随机地抽取每个输入,在相同预算下往往优于网格:它在每次运行中都为每个参数尝试一个不同的值。

随机搜索是很强的基线,本书会多次回到它,因为在若干情形下,没有方法能大幅胜过它(第 46.9 节)。但随机搜索无法从自身的结果中学到任何东西。抽取第一百个随机输入时,前九十九个输入如同从未评估过。

梯度下降(gradient descent)每一步都在学习,但需要梯度,而黑箱不提供梯度。用有限差分估计梯度,每步需要 d+1d + 1 次评估,且会因噪声而失效。进化方法(evolutionary methods)及其他基于种群的搜索会利用历史信息,但通常需要几百到几千次评估才能做到,这恰恰是黑箱预算无法承受的。

网格随机贝叶斯优化f−0.50.00.51.0f(x)0.00.20.40.60.81.0输入 x51015评估次数0.00.5已找到的最优值真实最大值
网格随机贝叶斯优化f−0.50.00.51.0f(x)0.00.20.40.60.81.0输入 x51015评估次数0.00.5真实最大值已找到的最优值
图 1.1 同一份预算的三种用法。左:网格(黄色)、均匀随机采样(紫色)与贝叶斯优化(橙色)在贯穿全书的示例目标函数(虚线)上的评估位置,大圆点标出各自找到的最优点。右:目前找到的最优值随评估次数的变化。点击播放或拖动时间轴观看这场比赛;切换到二维,观察网格如何变粗;开始新一轮随机运行,观察随机搜索在多大程度上依赖运气。这些函数是标准测试函数,而非真实的调参问题。

这幅图在示例目标函数上展示了这种权衡。该函数是一维的,左侧是一座宽阔的小山,右侧是一个更窄、更高的尖峰。一维情形下,十六次评估足以让每种方法最终找到尖峰,区别在于找到的快慢。贝叶斯优化通常只需寥寥几次评估就能到达尖峰,因为每次评估之后,它都会判断下一次评估放在何处最有用。二维情形下,网格每个轴只有四个取值,可能恰好整个跨过尖峰;随机搜索则时而幸运,时而不然。维度每增加一维,单次评估每多耗一小时,差距都会进一步扩大。

第 1.2 节引用的文献 1
  1. Bergstra 与 Bengio(2012)Random Search for Hyper-Parameter Optimization

1.3 先建模,再决策 #

贝叶斯优化把“尝试输入”替换为一个两步循环。

第一步维护一个代理模型(surrogate),即根据已有评估建立的 ff 的统计模型。对每个尚未尝试的输入,代理模型不仅给出分数的预测,还如实给出这一预测的不确定程度。在已评估的输入附近,模型很有把握;远离这些输入,则没有把握。本书的代理模型是第二部分的高斯过程,它把这两方面合成关于 f(x)f(\vx) 的概率分布,对每个输入 x\vx 都是如此(输入用粗体表示,因为它通常是由几个数组成的列表)。

第二步是决策。采集函数(acquisition function)根据代理模型,按评估每个未尝试输入的有用程度为其打分,循环随后评估得分最高的输入。好的采集函数要平衡评估一个输入的两种理由:其预测分数高,即利用(exploitation);或其分数高度不确定、有可能很高,即探索(exploration)。第三部分从这种平衡出发,推导出经典的采集函数。

隐藏的目标函数后验均值95% 区间下一次查询−1.0−0.50.00.51.01.5f(x)目前最优 0.69,真实最大值 0.820.000.020.040.060.00.20.40.60.81.0输入 x采集函数:期望改进
隐藏的目标函数后验均值95% 区间下一次查询−1.0−0.50.00.51.01.5f(x)目前最优 0.69,真实最大值 0.820.000.020.040.060.00.20.40.60.81.0输入 x采集函数:期望改进
图 1.2 示例目标函数上的优化循环。蓝色曲线与色带是代理模型的预测及其不确定性;下方的橙色曲线是采集函数,其峰值即下一次评估的位置。逐步执行:起初,采集函数偏好色带宽的区域;后来则集中于预测值高的区域。第 11 章将解释这幅图的每个部分。

在模型上投入计算,看似额外开销:每次评估之后,都要重新拟合代理模型并求采集函数的最大值。但这些计算只需几毫秒到几秒,而 ff 的每次评估需要几分钟到几天。评估代价高昂时,每次评估之前先行思考,是最经济的做法。这就是支持贝叶斯优化的全部理由,也是它的适用边界:当 ff 很便宜时,这些簿记工作便得不偿失。

这一思路早于机器学习。Kushner(1964)提出用随机过程模型决定在何处评估带噪声的一维函数,Močkus(1975)发展了贝叶斯决策的观点,Jones 等人(1998)则以高效全局优化(efficient global optimization)之名,使它在工程设计中得以实用。Snoek 等人(2012)将其引入机器学习的超参数优化;如今它已是机器学习、化学与材料科学、机器人学中的标准工具(第 15 章)。

第 1.3 节引用的文献 4
  1. Kushner(1964)A New Method of Locating the Maximum Point of an Arbitrary Multipeak Curve in the Presence of Noise
  2. Močkus(1975)On Bayesian Methods for Seeking the Extremum
  3. Jones 等人(1998)Efficient Global Optimization of Expensive Black-Box Functions
  4. Snoek 等人(2012)Practical Bayesian Optimization of Machine Learning Algorithms

1.4 当目标函数是一个人 #

咖啡与设计问题打破了上述循环的一个假设,即评估一个输入会返回一个数。人可以给一杯咖啡打 1 至 10 分,但评分会在一次会话中漂移,受此前评过的选项影响,并向量表中部集中(第 16.1 节)。人能可靠完成的是比较:这一杯,还是那一杯。

偏好贝叶斯优化(preferential Bayesian optimization,PBO)保留这一循环,改变测量方式。每次查询向人展示两个选项(或少数几个),回答是此人更偏好哪一个。代理模型随之成为关于隐藏效用(utility)的模型:效用即此人对每个选项的喜好程度,应当能够解释其选择;采集函数则决定下一次展示哪一对选项。在学习任何理论之前,读者即可亲自尝试:下图展示两种颜色,并从回答中学习读者更偏好哪一种。

你更喜欢哪一个?A30°B210°−2−1012效用0°90°180°270°360°AB你的回答 · 0 次比较 · 最佳猜测 –°还没有回答。第一对是固定的,之后由 EUBO 选择。
你更喜欢哪一个?A30°B210°−2−1012效用0°90°180°270°360°AB你的回答 · 0 次比较 · 最佳猜测 –°还没有回答。
图 1.3 初识偏好贝叶斯优化。回答十余次比较;曲线表示模型估计的你对每种色相的喜好程度,星形表示它推测的你最喜欢的颜色。第 19 章将解释下一对选项如何选出。

当人成为循环的一部分,系统就不再只是在测量。它选择展示的选项对,可能塑造此人逐渐形成的喜好。人会疲劳、会学习、会改变主意,有些人干脆拒绝选择。第七部分汇集这些方法用于真人时的实际情况,第九部分则探讨心理学、神经科学、经济学与哲学如何看待是否存在一个有待发现的固定偏好。本书把这些问题视为主题本身的一部分,而非附带的告诫。

1.5 怎样读本书 #

本书分为十个部分。前四个部分是教学内容,第五部分把方法用于真实问题,最后五个部分报告研究。

  • 第一部分(基础)讲解后文所需的概率、线性代数、高斯分布、贝叶斯推断与信息论,不假定读者离校后用过这些知识。
  • 第二部分(高斯过程)构建代理模型:函数上的分布、回归与核函数,以及遗憾界所依赖的核函数分析。
  • 第三部分(贝叶斯优化)讲解优化循环、采集函数、遗憾理论与实践。
  • 第四部分(从比较中学习)把上述内容推广到比较:选择模型、近似推断、偏好学习、偏好贝叶斯优化、查询设计与对决赌博机。
  • 第五部分(案例研究)通过四个真实问题完整演示这些方法:分类器、化学反应、外骨骼,以及一张由读者亲手增强的照片。
  • 第六部分(研究前沿)梳理自 González 等人(2017)以来九年的研究,总结其在偏好贝叶斯优化的模型、采集函数、理论、规模扩展、软件与评测方面确立的结论。
  • 第七部分(人在回路)汇集来自交互式设计、可穿戴机器人、健康、建筑、科学与工业的证据。
  • 第八部分(相邻计算领域)讨论偏好贝叶斯优化与大语言模型背后的偏好模型之间的联系,以及它与奖励学习、推荐、排序和自动化科学的联系。
  • 第九部分(偏好是什么?)报告其他学科对被优化对象的认识。
  • 第十部分(综合)把各条线索汇总为建议、未解决问题与展望。

研究部分有一个共同的论点。到 2026 年,偏好贝叶斯优化的算法已经成熟,难点已经转移到测量上:一次比较究竟测量了什么,回答应当如何建模,以及提问本身如何影响回答者。正因如此,本书用三个部分讨论人以及其他学科对偏好的认识;这一论点也是阅读这三个部分时应当把握的线索(本书的论点)。

熟悉概率的读者可以略读第一部分;熟悉高斯过程的读者可以从第三部分开始;熟悉贝叶斯优化的读者可以从第四部分开始。

各章都遵循以下几条约定。

  • 图可以交互。滑块、按钮和点击会改变图中显示的内容;每条图注都说明可以尝试什么,以及哪些数值仅为示意。没有 JavaScript 时,每幅图也能正常显示。
  • 推导完整写出。多步推导放在框中,每行一步,每步均注明依据;逐步展开按钮每次显示一步,读者可以先自行尝试推出下一步。
  • 参考文献附于引用之处。鼠标悬停在引用上时,会显示完整的文献信息。每节末尾有一个折叠的来源列表,每章末尾有完整列表,每个部分的页面列出该部分各章引用的全部文献。未经同行评审的工作带有标注:预印本、工作论文、研讨会论文、软件或非同行评审。
  • 推断均有标记。在研究部分,凡是本书根据证据得出的推断、而非任何来源报告的发现,句末都标出(推断)。
  • 习题附有解答,折叠于每道习题下方。
第 1.5 节引用的文献 1
  1. González 等人(2017)Preferential Bayesian Optimization

1.6 习题 #

习题 1.1

一个调参问题有 8 个参数,其中只有 2 个影响分数,预算为 256 次评估。完整网格会为每个重要参数尝试多少个不同的值?随机搜索又会尝试多少个?

解答

8 维中包含 256 个点的完整网格,每个参数有 2561/8=2256^{1/8} = 2 个值,因此每个重要参数只在 2 个不同的值上被尝试,而这些值的每种组合会在不重要的参数上重复 64 次。随机搜索每次评估都重新抽取每个参数,因此为每个重要参数尝试 256 个不同的值(以概率一)。这正是 Bergstra 与 Bengio(2012)的论证。

习题 1.2

一次评估需要 2 小时,拟合代理模型并求采集函数的最大值需要 20 秒。在一次共 50 次评估的运行中,贝叶斯优化的簿记工作占总时间的比例是多少?评估代价降到多少时,簿记工作所花的时间会与评估相同?

解答

每次迭代用 20 秒做决策、7,200 秒做评估,因此簿记工作占整个运行的 20/7220≈0.3%20 / 7220 \approx 0.3\%。当一次评估只需 20 秒时,簿记时间与评估时间相等,此时同样的预算大致可以换来两倍数量的随机评估。实践中,簿记工作还会随观测数量的增加而增长(第 8.4 节),因此对于评估便宜而预算又大的函数,更简单的方法往往是更好的选择。

第 1.6 节引用的文献 1
  1. Bergstra 与 Bengio(2012)Random Search for Hyper-Parameter Optimization

延伸阅读 #

参考文献

  1. Bergstra, J., and Bengio, Y. (2012). Random Search for Hyper-Parameter Optimization. Journal of Machine Learning Research. 引用于 §1.2 §1.6
  2. Frazier, P. I. (2018). A Tutorial on Bayesian Optimization. arXiv. 预印本
  3. Garnett, R. (2023). Bayesian Optimization. Cambridge University Press.
  4. González, J., Dai, Z., Damianou, A., and Lawrence, N. D. (2017). Preferential Bayesian Optimization. International Conference on Machine Learning. 引用于 §1.5
  5. Jones, D. R., Schonlau, M., and Welch, W. J. (1998). Efficient Global Optimization of Expensive Black-Box Functions. Journal of Global Optimization. 引用于 §1.3
  6. Kushner, H. J. (1964). A New Method of Locating the Maximum Point of an Arbitrary Multipeak Curve in the Presence of Noise. Journal of Basic Engineering. 引用于 §1.3
  7. Močkus, J. (1975). On Bayesian Methods for Seeking the Extremum. Optimization Techniques IFIP Technical Conference. 引用于 §1.3
  8. Shahriari, B., Swersky, K., Wang, Z., Adams, R. P., and de Freitas, N. (2016). Taking the Human Out of the Loop: A Review of Bayesian Optimization. Proceedings of the IEEE.
  9. Snoek, J., Larochelle, H., and Adams, R. P. (2012). Practical Bayesian Optimization of Machine Learning Algorithms. Advances in Neural Information Processing Systems 25 (NeurIPS 2012). 引用于 §1.3