核矩阵不是正定的

机器算法验证 回归 高斯过程
2022-04-11 05:53:47

我试图以八度音阶实现高斯过程。

作为起点,我使用了 Rasmussens GP 书 ( http://www.gaussianprocess.org/gpml/ ) 第 19 页描述的算法。

作为协方差矩阵,我使用了平方指数函数(本书也使用了它):

function re = k(x1, x2)
    re = exp(-(1/2.0) * abs(x1.-x2).^2);
endfunction

并计算(训练输入的)协方差矩阵:

# Calculate covariance matrix
s = size(X);
K = [];
for i = 1:s
    for j = 1:i
        re = k(X(i), X(j));
        K(i,j) = re;
        K(j,i) = re;
    endfor
endfor

但由于某种原因,得到的协方差矩阵 K 有时不是正定的(取决于输入 X)。

那么谁能告诉我我在这里做错了什么,好吗?有没有办法测试协方差函数是否导致正定协方差矩阵?由于平方指数函数似乎是一个协方差函数,我假设它应该创建一个正定矩阵。

2个回答

我相信我知道那个例子。我在 R 中工作并遇到了同样的奇点问题。您可以尝试在模型中添加一些白噪声。平方指数核非常平滑,因此如果您的数据点靠得很近,协方差矩阵将变为奇异矩阵。回想一下,在短距离内,可微函数近似线性,矩阵的列将是共线的。

要添加噪声,请向对角元素K(i,i)

  1. 大多数核方法研究都集中在 Mercer 核上,它有两个性质:(1)函数是对称的:和(2)函数是半正定的(psd) . 高斯协方差函数当然是 psd,但我不记得它是否也是 pd——也许你错误地从你的心理定义中省略了“半”?K(x,y)=K(y,x)

    或者,这可能是一个数字问题。我不确定您是如何得出结果不是 psd 的结论,但是,例如,谱分解算法有时会由于有限精度算术而出错,因此一些最小的特征值会略微为负(按顺序无论您的数字软件中的错误是什么)。在大多数实际应用中,这些微小的错误可以安全地忽略。在对角线上添加一个更大的正数可以抑制这种情况。

  2. 测试任意协方差函数是否为有效内核依赖于 Mercer 定理,本论坛对此有所涉及。我建议参考他的研究。