当我们遇到的一个最优化问题,但是目标函数不知道,或者说目标函数是类似于黑盒子,很难用数学公式/程序写出来时,此时想要求得目标函数的极值,可以使用贝叶斯优化,其主要的适用的情景是维数不超过20维,目标是一个具体的数值时。
这样的情景有很多,比如:我们想知道神经网络多少层、每层多少个节点时误差最小;支持向量机的数据集如何划分时交叉验证损失最小……这些就是超参数优化问题了。
贝叶斯优化的包在python、matlab(2016a之后)、c++都已经具备了。Python是比较好懂的,案例相对来说多一些,但是matlab的例子很少,这里主要针对matlab版本的贝叶斯优化来介绍。本篇针对使用方法来介绍,数学原理有机会再说吧。
在matlab中,贝叶斯优化函数是bayesopt。句法:
Results = bayesopt(fun, vars)
Results = bayesopt(fun, vars, Name, Value)
fun—目标函数
fun返回具有可调超参数来控制其训练的机器学习模型的损失度量,