我试图以八度音阶实现高斯过程。
作为起点,我使用了 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)。
那么谁能告诉我我在这里做错了什么,好吗?有没有办法测试协方差函数是否导致正定协方差矩阵?由于平方指数函数似乎是一个协方差函数,我假设它应该创建一个正定矩阵。