Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vector-valued GPs #140

Closed
emsal0 opened this issue Feb 13, 2020 · 4 comments
Closed

Vector-valued GPs #140

emsal0 opened this issue Feb 13, 2020 · 4 comments

Comments

@emsal0
Copy link

emsal0 commented Feb 13, 2020

Forgive me if it's already supported and I just missed it.

I can't seem to find anything in this library for vector-valued GPs as described in Section 3.3 of this paper. Are there plans to support it or is there a way to use them with the current functionality?

@maximerischard
Copy link
Contributor

Not at the moment, see #113. This is definitely something we would like the package to support, but nobody has picked up this project yet.

@emsal0
Copy link
Author

emsal0 commented Feb 16, 2020

I can work on implementing at least the start of this project, as there's been interest in doing this for applications like in this issue in DiffEqBayes. I'll come up with a short proposal for an implementation plan soon?

@thomaspinder
Copy link
Member

If you wanted to start on implementing the kernels required for a vector-valued GP, @emsal1863 that would be fantastic. I'd be happy to support if there's anything you run into trouble with.

A proposal would be great.

@emsal0
Copy link
Author

emsal0 commented Feb 19, 2020

Thanks for the support @thomaspinder, I'm a bit new to developing Julia packages so I've been learning the workflow as I go along looking at this. I've begun to look through the package and here's my initial general idea for how to implement this:

  • The overall end-goal here is to make the GPA struct support having y as a type deriving from AbstractMatrix rather than just AbstractVector. In this commit on my branch I began starting to extend the functionality of the GPA class and to my surprise most of the functionality still works; there are still a couple of tests failing in the Optim test set though.
  • To support y being an AbstractMatrix there would then need to be support for Mean types that return vector values. In order to maintain the current scalar-valued mean functions to continue working, I suggest that a good way to start out doing this is to make the library throw an "unsupported" error when trying to use one of the existing mean functions when using a y value that doesn't derive AbstractVector (can this be done?), then add new vector-valued Mean implementations. These could start out as vector-valued versions of the ones that currently exist like mLin, mPoly, etc.
  • It seems that support for vector-valued samples (x) are already supported for the case of vector -> scalar functions, so (correct me if I'm wrong) I don't think anything needs to be added for the kernels.

Does my assessment seem correct?

Also, I'm still looking at the optimization and sampling methods and I don't really know how to assess the work that needs to be done there yet - can I get some help in understanding how these might need to be changed?

I'll continue trying to fix the issue with the Optim tests in the meantime.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants