贝叶斯优化的GP回归中的病态条件协方差矩阵


12

背景与问题

我正在使用高斯过程(GP)进行回归和随后的贝叶斯优化(BO)。为了进行回归,我使用了针对MATLAB 的gpml包,并进行了一些自定义修改,但是问题很普遍。

众所周知的事实是,当两个训练输入在输入空间中太近时,协方差矩阵可能变为非正定的(此站点上有几个问题)。结果,由于数值误差,各种GP计算所需的协方差矩阵的Cholesky分解可能会失败。在使用我使用的目标函数执行BO时,在某些情况下这发生在我身上,我想对其进行修复。

拟议的解决方案

AFAIK,减轻不适的标准解决方案是在协方差矩阵的对角线上添加一个脊或块。对于GP回归,这等于增加(或增加,如果已经存在)观察噪声。

到现在为止还挺好。我修改了gpml的精确推论代码,以便每当Cholesky分解失败时,我都会尝试将协方差矩阵固定为Frobenius范数中最接近的对称正定(SPD)矩阵,这是受约翰d'Errico的MATLAB代码启发的。这样做的理由是要尽量减少对原始矩阵的干预。

这个变通办法可以完成工作,但是我注意到对于某些功能,BO的性能大大降低了-可能是每当算法需要放大某些区域时(例如,因为算法越来越接近最小值,或者因为长度缩放)问题变得越来越小)。这种行为是有道理的,因为每当两个输入点距离太近时,我都会有效地增加噪声,但这当然不是理想的选择。或者,我可以删除有问题的点,但是,有时候,我需要输入点很接近。

我认为GP协方差矩阵的Cholesky因式分解的数值问题不是一个新问题,但令我惊讶的是,除了增加噪声或消除彼此之间太近的点外,到目前为止,我找不到许多解决方案。另一方面,我的某些功能确实表现得很差,所以也许我的情况不是那么典型。

有什么建议/参考可以在这里有用吗?


您可能会考虑以更高的精度(例如,四精度或更高的精度)形成协方差矩阵的条目,以及计算或更新其Cholesky因式分解。除了麻烦之外,计算可能会慢几个数量级。有针对MATLAB的任意精度附加组件。我并不是说这是理想的,但这可能是一个选择。我不知道它们在gpml中的表现如何,但是如果您可以更改gpml源代码(m个文件),也许您可​​以做到。
Mark L. Stone,

您是否尝试过在协方差矩阵的对角线上添加一个小的抖动?
2013年

@ MarkL.Stone感谢您的建议。不幸的是,我需要训练代码要快,因此高精度数字对于我的应用程序可能不是一个好的选择。
–lacerbi

2
这个问题真的很有趣。当向您的波罗的矩阵(例如添加块金效果时,您会以优化sigma,还是给定。我注意到优化金块效应会捕获测量噪声并帮助他进行高斯过程σ2Iσ
Wis

1
我通常会优化。在少数情况下,我尝试将其边缘化,但并没有在优化上获得很多改进(我认为后验非常狭窄)。
Lacerbi '16

Answers:


7

另一个选择是对造成问题的点进行平均-例如,如果您有1000个问题点和50个原因问题,则可以使用前950个特征值/向量进行最佳低秩近似。但是,将数据点并排在一起并不是很遥远,您说您不想这样做。但是请记住,添加抖动会降低自由度-即每个点对预测的影响都较小,因此这可能比使用更少的点更糟。

另一个选择(我个人认为这很巧妙)是用稍微更聪明的方式将这两点结合起来。例如,您可以将2个点合并成一个点,但也可以使用它们来确定渐变的近似值。要包括梯度信息,您需要从内核中找到和。导数通常与它们的观察结果没有关联,因此您不会遇到条件问题并保留本地信息。dxk(x,x)dxdxk(x,x)

编辑:

基于这些评论,我想我会详细说明包含派生观察的意思。如果我们使用高斯核(例如),

kx,x=k(x,x)=σexp((xx)2l2)

它的派生词是

kdx,x=dk(x,x)dx=2(xx)l2σexp((xx)2l2)

kdx,dx=d2k(x,x)dxdx=2l22(xx)l4σexp((xx)2l2)

现在,让我们假设我们有一些数据点和的导数,我将其称为。{xi,yi;i=1,...,n}x1m1

令,那么我们使用具有协方差矩阵的单个标准GP作为,Y=[m1,y1,,yn]

K=(kdx0,dx0kdx0,x0kdx0,xnkdx0,x0kx0,x0kx0,xnkdx0,xnkx0,xnkxn,xn)

GP的其余部分与往常相同。


您是否愿意扩展拟议的近似梯度信息的使用细节?
Mark L. Stone,

@j谢谢-我想做一个低阶近似,我可以尝试一下(到目前为止避免了,因为我可能不得不重写大部分代码)。关于将两点合并为一,我在上一个问题中提出过,但是我没有考虑获取派生信息。原则上听起来很整洁,但是我不确定我将如何使用它,因为我只有几个派生的观察结果(对应于合并点),并且每个输入维要增加一个GP。
–lacerbi

@j感谢您的额外说明。这看起来确实很整洁。您是否有关于此方法的参考(或足够类似的参考)?
–lacerbi

2
查看Mike Osborne的论文第67页(robots.ox.ac.uk/~mosb/public/pdf/136/full_thesis.pdf)-他介绍了导数和积分观察。希望对您
有所

4

我们在办公室采用的一种解决方案是仅更改麻烦的地方。这可以采用直接删除或更复杂的形式。本质上,观察到的是邻近点是高度冗余的:实际上,冗余点是如此之多,以至于它们降低了协方差矩阵的秩。出于同样的原因,无论如何一点都不会为当前的问题提供任何信息,因此删除一个或另一个问题(或进行其他操作,例如对它们求平均或将一个点与另一点“反弹”到最小可接受的最小距离)将并没有真正改变您的解决方案。

我不确定如何判断这两点在什么时候变得“太接近”。也许这可能是用户留下的调整选项。

(糟糕!我在发布此内容后,在这里找到了您的问题,可以将这个问题的答案扩展到更加详尽的解决方案。我希望通过将其链接到我的答案中来,对SEO有所帮助。)


这是相当有帮助的,可以请你也提供一些线索,以如果可能的话。
GENIVI-LEARNER
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.