ApproximateGPs.jl icon indicating copy to clipboard operation
ApproximateGPs.jl copied to clipboard

Support inter-domain inducing points

Open rossviljoen opened this issue 4 years ago • 1 comments

rossviljoen avatar Jul 27 '21 22:07 rossviljoen

Stheno.jl is pretty ideal for this -- if you're after a particular integral transform to construct inducing features, you can just add it there, and then you'll get interdomain stuff without extending your API at all.

For example, if you had the programme:

f = @gppp let
    f1 = GP(SEKernel())
    f2 = GP(0.1 * LinearKernel())
    f3 = f1 + f2
end

z = GPPPInput(:f1, randn(5))
x = GPPPInput(:f3, randn(5))
y = rand(f(x, 0.1))

elbo(f(x, 0.1), y, f(z, 1e-6))

will just work. To be clear, this isn't a very good interdomain approximation, but if you introduced some integral transform my_convolution and had the programme

f = @gppp let
    f1 = GP(SEKernel())
    f2 = GP(0.1 * LinearKernel())
    f3 = f1 + f2
    f4 = my_convolution(f3)
end

z = GPPPInput(:f4, randn(5))
x = GPPPInput(:f3, randn(5))
y = rand(f(x, 0.1))

elbo(f(x, 0.1), y, f(z, 1e-6))

you would have something sensible.

willtebbutt avatar Jul 28 '21 09:07 willtebbutt