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

Bayesian Committee Machine (BCM) #126

Open
byooooo opened this issue Nov 30, 2020 · 9 comments
Open

Bayesian Committee Machine (BCM) #126

byooooo opened this issue Nov 30, 2020 · 9 comments

Comments

@byooooo
Copy link
Collaborator

byooooo commented Nov 30, 2020

Feature description

Add option to parallelize training of GPs using BCM method (factorized GPs). Need to consider potential conflict between existing parallelization for multiple objectives.

Implementation idea

Create _train_BCM()/_predict_BCM() class function for sklearn instance (and GPy instance if applicable)

Alternatives

@byooooo byooooo added the enhancement New feature or request label Nov 30, 2020
@kjappelbaum
Copy link
Owner

I think the interesting thing about BCM would be that we could use the online learning implementation based on the Kalman filter

@kjappelbaum
Copy link
Owner

kjappelbaum commented Nov 30, 2020

https://github.com/jopago/GPyBCM/blob/master/GPyBCM.py uses GPy, so we could give it a shot, but I personally would give the jax issue (#115 ) a higher priority as it will give us speedups with any model

@byooooo
Copy link
Collaborator Author

byooooo commented Nov 30, 2020

yea we can make this a low priority

@kjappelbaum
Copy link
Owner

wondering what the API would look like, i.e., how we initialize the PAL class. The minimum that the user would need to be able to change would be the number of experts and the model BCM/rBCM and somehow we need to know that the user wants to use this.

so an initial thought would be to add

bcm: bool = False
m: int = 6
bcm_model: str = 'rbcm'

the downside of this is that the list of arguments would be quite long

@kjappelbaum
Copy link
Owner

@byooooo do you know a benchmark comparing this to low-rank approximation as the SparseGP one can already use with PyePAL via GPy?

@byooooo
Copy link
Collaborator Author

byooooo commented Nov 30, 2020

yea i think that would make the instantiation cumbersome. maybe instead we can have another function after initialization with PAL that the user can call (in case they want to use BCM) and have the BCM attributes set to None initially in the PAL class.

So it would be something like:
PALinstance(*args, **kwargs)
followed by
PALinstance.BCM(*args, **kwargs)
where the args could be the ones you listed above

@byooooo
Copy link
Collaborator Author

byooooo commented Nov 30, 2020

@byooooo do you know a benchmark comparing this to low-rank approximation as the SparseGP one can already use with PyePAL via GPy?

Nope. 😅 maybe should try this ourselves first before implementing this into the package

@kjappelbaum
Copy link
Owner

Yea and GPflow also has a bunch of different approximations, e.g., https://www.jmlr.org/papers/v18/16-579.html

@github-actions
Copy link
Contributor

github-actions bot commented Feb 8, 2021

Stale issue message

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

No branches or pull requests

2 participants