最适合高斯过程似然函数的优化器
我认为这是一个开放式问题,因为很大程度上取决于您正在优化的实际数据集,您的第一个候选解决方案有多接近是局部最优的,如果您有兴趣/是否能够使用衍生信息。
我使用了 R 的标准optim
函数,通常我发现L-BFGS-B算法是可用的默认优化算法中最快或接近最快的。那是我提供导数函数的时候。在GPML Matlab 代码中,作者还提供了 L-BFGS-B 实现,因此我怀疑他们也发现当有人在通用应用程序的上下文中提供衍生信息时,L-BFGS-B 算法具有相当的竞争力。
另一种选择是使用无导数优化。Rios 和 Sahinidis,2013 年的评论论文:“ Derivative-free optimization: A review of algorithms and comparison of software implementations ”在 Journal of Global Optimization 中似乎是详尽无遗的最佳选择。在 R 中minqa
,通过二次逼近 (QA) 例程提供无导数优化的包。该软件包包含鲍威尔最著名的一些“优化孩子”:UOBYQA、NEWUOA和BOBYQA。尽管有 Wikipedia 的一般建议,但我发现 UOBYQA 是三个玩具问题中最快的:“对于一般用途,建议使用 NEWUOA 替换 UOBYQA。”。这并不奇怪,对数似然是具有明确导数的平滑函数,因此 NEWUOA 可能不会享有明显的优势。这再次表明没有灵丹妙药。在这件事上,我玩过一些粒子群优化(PSO) 和协方差矩阵适应进化策略算法分别包含在 R 包中hydroPSO
,但总的来说,它们cmaes
比罐装模拟退火(请注意,估计超参数向量SANN
optim
因为对数似然函数通常是一个平滑且(至少是局部的)凸问题,所以随机优化通常不会提供很大的优势。
回顾一下:我建议将 L-BFGS-B 与衍生信息一起使用。如果难以获得导数信息(例如,由于复杂的核函数),请使用二次逼近例程。