替代函数是什么?用一个便宜的近似模型代替昂贵的真实函数
替代函数(Surrogate Function),也常被称为代理函数或代理模型,是指在真实的目标函数难以直接处理时,用来近似和代替它的一个更简单的函数。真实的目标函数可能计算一次的代价非常高,可能无法求导,也可能形式复杂难以优化。这时,我们构建一个计算便宜、性质良好的替代函数,通过分析和优化它,来间接地对真实的函数进行优化。
为什么需要替代函数
在很多实际问题中,要评估一次目标函数的值,代价是很高的。比如:训练一个深度学习模型需要几个小时甚至几天,想知道某一组超参数的效果好不好,就要完整地训练一次;一次飞机机翼的气动仿真可能要在超级计算机上运行很长时间;一次化学实验需要真实的原料、设备和时间。在这些情况下,不可能对成千上万种方案逐一地进行测试。替代函数的思路是:先对少数几个方案进行真实的测试,根据这些结果建立一个近似的模型;这个模型可以瞬间地给出任何一个方案的预测结果,用它来快速地筛选出最有希望的方案,再对这些方案进行真实的测试;然后用新的测试结果更新替代模型,如此反复。
在贝叶斯优化中
替代函数最典型的应用是贝叶斯优化,它被广泛用于机器学习模型的超参数调优。贝叶斯优化通常使用高斯过程作为替代模型:根据已经测试过的超参数组合及其效果,高斯过程不仅能预测其他组合的效果大概是多少,还能给出这个预测有多大的不确定性。然后,一个叫“采集函数”的规则会综合考虑预测的效果和不确定性,决定下一个最值得测试的组合:既要尝试预测效果好的地方,也要探索那些还不太了解、可能隐藏着更好结果的地方。除了高斯过程,随机森林、树结构的 Parzen 估计器(TPE)等也常被用作替代模型。
在工程和科学计算中
在工程设计中,替代模型被大量用于代替昂贵的计算机仿真,比如汽车的碰撞仿真、流体力学仿真、结构力学分析。工程师用少量的仿真结果训练一个替代模型,然后用它在海量的设计方案中快速地寻找最优的设计,或者分析各个参数对结果的影响。近年来,深度神经网络越来越多地被用作替代模型:用大量的仿真数据训练神经网络,它能在几毫秒内给出原本需要几个小时才能算出的近似结果。在天气预报、材料设计、药物筛选等领域,这种用 AI 模型替代传统数值计算的方法正在快速地发展。
在优化算法中
在数学优化中,也有一类方法利用替代函数来求解困难的优化问题,比如“最大化-最小化”算法(MM 算法):在每一步,构造一个比目标函数更容易优化、并且在当前点处与目标函数相切的上界函数,然后最小化这个替代函数,得到新的点,再在新的点上构造新的替代函数。这样每一步都能保证目标函数的值不会上升,最终逐步逼近最优解。统计学中经典的期望最大化算法(EM 算法)就可以看作这一思想的特例。在机器学习的分类问题中,用交叉熵、铰链损失等来代替难以优化的分类错误率,也是同样的思想,这类函数被称为替代损失函数。
需要注意的问题
替代函数毕竟只是一种近似,它的预测可能存在误差,在训练数据覆盖不到的区域尤其如此。因此,基于替代函数找到的方案,最终仍需要用真实的函数或真实的实验来验证。