Optimization Mathematica中如何最大化高斯过程的对数似然

Optimization Mathematica中如何最大化高斯过程的对数似然,optimization,wolfram-mathematica,probability,gaussian,inference,Optimization,Wolfram Mathematica,Probability,Gaussian,Inference,我目前正试图在Mathematica中实现一个高斯过程,并且被对数似然的最大化所困扰。我只是尝试在我的对数似然函数上使用FindMaximum公式,但在这个函数上似乎不起作用 gpdata = {{-1.5, -1.8}, {-1., -1.2}, {-0.75, -0.4}, {-0.4, 0.1}, {-0.25, 0.5}, {0., 0.8}}; kernelfunction[i_, j_, h0_, h1_] := h0*h0*Exp[-(gpdata[[i, 1]] - gp

我目前正试图在Mathematica中实现一个高斯过程,并且被对数似然的最大化所困扰。我只是尝试在我的对数似然函数上使用FindMaximum公式,但在这个函数上似乎不起作用

 gpdata = {{-1.5, -1.8}, {-1., -1.2}, {-0.75, -0.4}, {-0.4, 
0.1}, {-0.25, 0.5}, {0., 0.8}};

kernelfunction[i_, j_, h0_, h1_] := 
h0*h0*Exp[-(gpdata[[i, 1]] - gpdata[[j, 1]])^2/(2*h1^2)] + 
KroneckerDelta[i, j]*0.09;

covariancematrix[h0_, h1_] = 
ParallelTable[kernelfunction[i, j, h0, h1], {i, 1, 6}, {j, 1, 6}];

loglikelihood[h0_, h1_] := -0.5*
  gpdata[[All, 2]].LinearSolve[covariancematrix[h0, h1], 
  gpdata[[All, 2]], Method -> "Cholesky"] - 
0.5*Log[Det[covariancematrix[h0, h1]]] - 3*Log[2*Pi];

FindMaximum[loglikelihood[a, b], {{a, 1}, {b, 1.1}}, 
MaxIterations -> 500, Method -> "QuasiNewton"]
在对数似然中,我通常会得到协方差矩阵的逆乘以gpdata[[All,2]]向量的乘积,但是因为协方差矩阵总是半正定的,所以我这样写。如果我使用 gpdata[[All,2]]。反向[ 协方差矩阵[h0,h1]].gpdata[[All,2]]


有人有主意吗?实际上,我正在处理一个复杂得多的问题,我有6个参数要优化,但我已经有2个参数的问题。

根据我的经验,我发现二阶方法在超参数优化方面比基于梯度的方法更失败。我认为这是因为(大多数?)二阶方法依赖于接近当前估计值的二次函数

在我的实验中,使用共轭梯度甚至鲍威尔(无导数)共轭方向法是成功的。对于双参数的情况,我建议出于某种直觉绘制超参数曲面的等高线图