如何在高斯过程回归中为 RBC 内核选择长度尺度范围?

机器算法验证 机器学习 高斯过程
2022-03-23 03:34:54

我正在尝试将 GP 回归模型拟合到数千个x,y独立配对。我正在使用 Python 的 sklearn 实现,它带有一个常量内核加上一个 RBF 内核加上一个白噪声内核。通常它进展顺利,我得到了很好的结果(红色是函数,蓝色是 GPR 预测):

在此处输入图像描述

但是有时它不起作用。我收到一条错误消息,指出 L-BFGS-B 优化器以异常状态终止。问题似乎是 RBF 内核中长度尺度的界限。在上图中,它介于101102. 如果我将上限更改为103优化器失败。如果我将其更改为104它可以工作,但现在函数看起来像这样:

在此处输入图像描述

如何自动选择一组合适的界限?

1个回答

当将具有特定内核的 GP “拟合”到数据集时,我们实际上要做的是根据数据推断超参数的最合适的值(其中长度尺度是一个重要的值)。通常采用优化问题的形式,在给定模型的情况下,我们尝试最大化观察数据的概率(或者更准确地说,最大化对数边际似然)。

由于 GP 是非常灵活的模型,如果设置不当,这种优化可能会非常棘手,这包括可行的搜索空间。我相信您观察到的行为是由于优化器(L-BFGS-B)在搜索空间的(相对)平坦区域中初始化,因此“卡在”那里。通过增加搜索空间的边界,您更有可能将长度尺度初始化为一个较大的值,我们可以预期这会导致相当平坦的对数边际似然函数(具有 RBF 内核的 GP 将“编码”渐近线性功能为l)。我不确定为什么优化器在这种情况下没有失败103lengthscale 上限,但您可以看到预测是平的,这表明它返回了一个荒谬的大长度尺度。

我建议阅读 Michael Betancourt 的这篇文章的第 3 部分,以更详细地理解这个问题,但一个快速的解释是合适的长度范围取决于你的函数的支持。尽管它确实取决于参数化(我相信 Sklearn 使用了一个相当标准的参数化),但 RBF 内核无法“正确区分”(在优化目标更改的情况下)长度尺度小于数据中的最小间距,并且大于数据的最大间距。

作为起点,我建议在l等于数据集中任意两点之间的最大间距,并且下限等于任意两点之间的最小间距某个小值(例如 1e-3;以防止最小间距为零)中的较大者重复观察的情况)。

请注意,我认为上述内容并不完全适用于具有各向异性长度尺度的内核(即具有多个不同长度尺度的“ARD”内核),但仍然是一个有用的起点。