优化写不出公式的函数
软件工程师遇到的优化问题,大多有公式可循:损失函数可以求导,查询计划可以估算代价,排程可以逐条对照约束检查。本书讨论的是另一类问题:要知道一个输入有多好,唯一的办法是实际尝试,而每次尝试都代价高昂。
本章首先描述这类问题,并说明常用工具为何会在这类问题上浪费评估;然后勾勒全书将要展开的思路,即贝叶斯优化:为未知函数维护一个模型,使模型清楚自身有多不确定,再由这种不确定性决定下一步在何处观察。接着讨论本书副标题所指的情形:函数存在于人的头脑中,唯一的测量是人在两个选项之间做出的选择。本章最后给出全书地图。
1.1 单次评估的代价 #
全书反复出现四个问题。
训练模型。机器学习模型(例如神经网络)通过训练过程拟合数据,而训练过程本身也有一些设置,须在开始之前由人选定:每次更新的步长(学习率)、每次更新使用的样本数(批量大小),以及十几个其他设置。这些设置称为超参数(hyperparameter),因为训练过程不会学习它们。选择不当可能毁掉一次运行:学习率过大时,更新会越过目标,训练始终无法稳定,即发散(diverge)。每种组合的好坏,都必须实际训练模型,并在未参与训练的数据上测量准确率(验证准确率),才能检验,在昂贵的硬件上这可能需要数小时。一个团队或许负担得起五十次这样的运行。
调节外骨骼。动力踝关节外骨骼在每一步中施加力矩,力矩的时机与大小由几个参数设定。合适的设置因人而异。要测量一组设置带来多大帮助,须让穿戴者行走数分钟,同时测量其代谢消耗,而人会疲劳。一次会话或许只能尝试几十种设置(第 33 章)。
冲咖啡。研磨粗细、水温、粉水比与浸泡时间共同决定味道。每杯咖啡需要数分钟制作,并通过品尝来评判。这里没有可以直接读取的数值,只有一个人在判断这一杯是否比上一杯更好。
选择设计的外观。字体、配色方案、材质着色器、三维角色的造型都有参数,有时多达几十个。一组设置是否合适,只能由人观看后判断。
这些问题有四个共同性质,本书将其作为黑箱目标函数(black-box objective)的工作定义:
- 存在一个从输入(设置)到分数的函数 ,目标是找到分数高的输入。输入空间 通常是由几个到几十个连续参数构成的盒形区域。
- 没有公式,因此没有梯度;除了评估之外,也无从推断其形状。
- 每次评估都代价高昂:耗费时间、金钱、算力或人的耐心。预算是几十到几百次评估,而不是几百万次。
- 评估带有噪声:同一输入可能得到不同的分数,因为训练运行因随机种子不同而异,人的状态也时刻在变化。
第四条性质有时以更强的形式出现,咖啡与设计问题即是如此:可能根本没有分数,只有人在选项之间做出的选择。
1.2 常用工具为什么力不从心 #
软件工程师首先想到的工具,使用评估时毫不吝惜,因为在其通常的应用场景中,评估很便宜。
网格搜索(grid search)为每个参数取若干值,并尝试所有组合。 个参数各取 个值,需要 次评估:6 个参数各取 10 个值,就是一百万次运行。部分参数无关紧要时,网格搜索还会浪费评估:不重要的参数每取一个值,网格都要把重要参数的每个值重复一遍。Bergstra 与 Bengio(2012)针对超参数优化提出了这一论证,并表明随机搜索(random search),即均匀随机地抽取每个输入,在相同预算下往往优于网格:它在每次运行中都为每个参数尝试一个不同的值。
随机搜索是很强的基线,本书会多次回到它,因为在若干情形下,没有方法能大幅胜过它(第 46.9 节)。但随机搜索无法从自身的结果中学到任何东西。抽取第一百个随机输入时,前九十九个输入如同从未评估过。
梯度下降(gradient descent)每一步都在学习,但需要梯度,而黑箱不提供梯度。用有限差分估计梯度,每步需要 次评估,且会因噪声而失效。进化方法(evolutionary methods)及其他基于种群的搜索会利用历史信息,但通常需要几百到几千次评估才能做到,这恰恰是黑箱预算无法承受的。
这幅图在示例目标函数上展示了这种权衡。该函数是一维的,左侧是一座宽阔的小山,右侧是一个更窄、更高的尖峰。一维情形下,十六次评估足以让每种方法最终找到尖峰,区别在于找到的快慢。贝叶斯优化通常只需寥寥几次评估就能到达尖峰,因为每次评估之后,它都会判断下一次评估放在何处最有用。二维情形下,网格每个轴只有四个取值,可能恰好整个跨过尖峰;随机搜索则时而幸运,时而不然。维度每增加一维,单次评估每多耗一小时,差距都会进一步扩大。
第 1.2 节引用的文献 1
- Bergstra 与 Bengio(2012)Random Search for Hyper-Parameter Optimization
1.3 先建模,再决策 #
贝叶斯优化把“尝试输入”替换为一个两步循环。
第一步维护一个代理模型(surrogate),即根据已有评估建立的 的统计模型。对每个尚未尝试的输入,代理模型不仅给出分数的预测,还如实给出这一预测的不确定程度。在已评估的输入附近,模型很有把握;远离这些输入,则没有把握。本书的代理模型是第二部分的高斯过程,它把这两方面合成关于 的概率分布,对每个输入 都是如此(输入用粗体表示,因为它通常是由几个数组成的列表)。
第二步是决策。采集函数(acquisition function)根据代理模型,按评估每个未尝试输入的有用程度为其打分,循环随后评估得分最高的输入。好的采集函数要平衡评估一个输入的两种理由:其预测分数高,即利用(exploitation);或其分数高度不确定、有可能很高,即探索(exploration)。第三部分从这种平衡出发,推导出经典的采集函数。
在模型上投入计算,看似额外开销:每次评估之后,都要重新拟合代理模型并求采集函数的最大值。但这些计算只需几毫秒到几秒,而 的每次评估需要几分钟到几天。评估代价高昂时,每次评估之前先行思考,是最经济的做法。这就是支持贝叶斯优化的全部理由,也是它的适用边界:当 很便宜时,这些簿记工作便得不偿失。
这一思路早于机器学习。Kushner(1964)提出用随机过程模型决定在何处评估带噪声的一维函数,Močkus(1975)发展了贝叶斯决策的观点,Jones 等人(1998)则以高效全局优化(efficient global optimization)之名,使它在工程设计中得以实用。Snoek 等人(2012)将其引入机器学习的超参数优化;如今它已是机器学习、化学与材料科学、机器人学中的标准工具(第 15 章)。
第 1.3 节引用的文献 4
- Kushner(1964)A New Method of Locating the Maximum Point of an Arbitrary Multipeak Curve in the Presence of Noise
- Močkus(1975)On Bayesian Methods for Seeking the Extremum
- Jones 等人(1998)Efficient Global Optimization of Expensive Black-Box Functions
- Snoek 等人(2012)Practical Bayesian Optimization of Machine Learning Algorithms
1.4 当目标函数是一个人 #
咖啡与设计问题打破了上述循环的一个假设,即评估一个输入会返回一个数。人可以给一杯咖啡打 1 至 10 分,但评分会在一次会话中漂移,受此前评过的选项影响,并向量表中部集中(第 16.1 节)。人能可靠完成的是比较:这一杯,还是那一杯。
偏好贝叶斯优化(preferential Bayesian optimization,PBO)保留这一循环,改变测量方式。每次查询向人展示两个选项(或少数几个),回答是此人更偏好哪一个。代理模型随之成为关于隐藏效用(utility)的模型:效用即此人对每个选项的喜好程度,应当能够解释其选择;采集函数则决定下一次展示哪一对选项。在学习任何理论之前,读者即可亲自尝试:下图展示两种颜色,并从回答中学习读者更偏好哪一种。
当人成为循环的一部分,系统就不再只是在测量。它选择展示的选项对,可能塑造此人逐渐形成的喜好。人会疲劳、会学习、会改变主意,有些人干脆拒绝选择。第七部分汇集这些方法用于真人时的实际情况,第九部分则探讨心理学、神经科学、经济学与哲学如何看待是否存在一个有待发现的固定偏好。本书把这些问题视为主题本身的一部分,而非附带的告诫。
1.5 怎样读本书 #
本书分为十个部分。前四个部分是教学内容,第五部分把方法用于真实问题,最后五个部分报告研究。
- 第一部分(基础)讲解后文所需的概率、线性代数、高斯分布、贝叶斯推断与信息论,不假定读者离校后用过这些知识。
- 第二部分(高斯过程)构建代理模型:函数上的分布、回归与核函数,以及遗憾界所依赖的核函数分析。
- 第三部分(贝叶斯优化)讲解优化循环、采集函数、遗憾理论与实践。
- 第四部分(从比较中学习)把上述内容推广到比较:选择模型、近似推断、偏好学习、偏好贝叶斯优化、查询设计与对决赌博机。
- 第五部分(案例研究)通过四个真实问题完整演示这些方法:分类器、化学反应、外骨骼,以及一张由读者亲手增强的照片。
- 第六部分(研究前沿)梳理自 González 等人(2017)以来九年的研究,总结其在偏好贝叶斯优化的模型、采集函数、理论、规模扩展、软件与评测方面确立的结论。
- 第七部分(人在回路)汇集来自交互式设计、可穿戴机器人、健康、建筑、科学与工业的证据。
- 第八部分(相邻计算领域)讨论偏好贝叶斯优化与大语言模型背后的偏好模型之间的联系,以及它与奖励学习、推荐、排序和自动化科学的联系。
- 第九部分(偏好是什么?)报告其他学科对被优化对象的认识。
- 第十部分(综合)把各条线索汇总为建议、未解决问题与展望。
研究部分有一个共同的论点。到 2026 年,偏好贝叶斯优化的算法已经成熟,难点已经转移到测量上:一次比较究竟测量了什么,回答应当如何建模,以及提问本身如何影响回答者。正因如此,本书用三个部分讨论人以及其他学科对偏好的认识;这一论点也是阅读这三个部分时应当把握的线索(本书的论点)。
熟悉概率的读者可以略读第一部分;熟悉高斯过程的读者可以从第三部分开始;熟悉贝叶斯优化的读者可以从第四部分开始。
各章都遵循以下几条约定。
- 图可以交互。滑块、按钮和点击会改变图中显示的内容;每条图注都说明可以尝试什么,以及哪些数值仅为示意。没有 JavaScript 时,每幅图也能正常显示。
- 推导完整写出。多步推导放在框中,每行一步,每步均注明依据;逐步展开按钮每次显示一步,读者可以先自行尝试推出下一步。
- 参考文献附于引用之处。鼠标悬停在引用上时,会显示完整的文献信息。每节末尾有一个折叠的来源列表,每章末尾有完整列表,每个部分的页面列出该部分各章引用的全部文献。未经同行评审的工作带有标注:预印本、工作论文、研讨会论文、软件或非同行评审。
- 推断均有标记。在研究部分,凡是本书根据证据得出的推断、而非任何来源报告的发现,句末都标出(推断)。
- 习题附有解答,折叠于每道习题下方。
第 1.5 节引用的文献 1
- González 等人(2017)Preferential Bayesian Optimization
1.6 习题 #
一个调参问题有 8 个参数,其中只有 2 个影响分数,预算为 256 次评估。完整网格会为每个重要参数尝试多少个不同的值?随机搜索又会尝试多少个?
解答
8 维中包含 256 个点的完整网格,每个参数有 个值,因此每个重要参数只在 2 个不同的值上被尝试,而这些值的每种组合会在不重要的参数上重复 64 次。随机搜索每次评估都重新抽取每个参数,因此为每个重要参数尝试 256 个不同的值(以概率一)。这正是 Bergstra 与 Bengio(2012)的论证。
一次评估需要 2 小时,拟合代理模型并求采集函数的最大值需要 20 秒。在一次共 50 次评估的运行中,贝叶斯优化的簿记工作占总时间的比例是多少?评估代价降到多少时,簿记工作所花的时间会与评估相同?
解答
每次迭代用 20 秒做决策、7,200 秒做评估,因此簿记工作占整个运行的 。当一次评估只需 20 秒时,簿记时间与评估时间相等,此时同样的预算大致可以换来两倍数量的随机评估。实践中,簿记工作还会随观测数量的增加而增长(第 8.4 节),因此对于评估便宜而预算又大的函数,更简单的方法往往是更好的选择。
第 1.6 节引用的文献 1
- Bergstra 与 Bengio(2012)Random Search for Hyper-Parameter Optimization
延伸阅读 #
- Garnett(2023)是一本全面的现代贝叶斯优化教材,与本书一样采取决策论观点。
- Frazier(2018)是一篇简明的教程,涵盖高斯过程代理模型与主要的采集函数。
- Shahriari 等人(2016)是一篇被广泛引用的综述,涵盖这一领域截至 2016 年的进展。
- Bergstra 与 Bengio(2012)论证了随机搜索作为基线的价值。
- González 等人(2017)提出了现今形式的偏好贝叶斯优化。
参考文献
- (2012). Random Search for Hyper-Parameter Optimization. Journal of Machine Learning Research. 引用于 §1.2 §1.6
- (2018). A Tutorial on Bayesian Optimization. arXiv. 预印本
- (2023). Bayesian Optimization. Cambridge University Press.
- (2017). Preferential Bayesian Optimization. International Conference on Machine Learning. 引用于 §1.5
- (1998). Efficient Global Optimization of Expensive Black-Box Functions. Journal of Global Optimization. 引用于 §1.3
- (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
- (1975). On Bayesian Methods for Seeking the Extremum. Optimization Techniques IFIP Technical Conference. 引用于 §1.3
- (2016). Taking the Human Out of the Loop: A Review of Bayesian Optimization. Proceedings of the IEEE.
- (2012). Practical Bayesian Optimization of Machine Learning Algorithms. Advances in Neural Information Processing Systems 25 (NeurIPS 2012). 引用于 §1.3