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

Refactor GPClassificationModel to use Botorch's InducingPointAllocator's #378

Open
crasanders opened this issue Sep 8, 2024 · 0 comments

Comments

@crasanders
Copy link
Contributor

crasanders commented Sep 8, 2024

GPs can make use of inducing points. Basically, instead of fitting the posterior to every training point, we can instead fit to to a smaller set of inducing points to make fitting more computationally efficient.

AEPsych implements some heuristics for selecting these inducing points in a utility function: https://github.com/facebookresearch/aepsych/blob/main/aepsych/models/utils.py#L54

Botorch implements some more principled algorithms as InducingPointAllocator classes: https://github.com/pytorch/botorch/blob/main/botorch/models/utils/inducing_point_allocators.py#L252
https://github.com/pytorch/botorch/blob/16853b46da337c8f9a4f51386d1c5eb690f337ad/botorch/models/approximate_gp.py#L168

AEPsych can make use of Botorch's GreedyVarianceReduction by setting the inducing point method to 'pivoted_chol', but we should be able to pass in allocator classes directly so that we can make use of GreedyImprovementReduction or any other methods that get implemented. The Sobol and kmeans++ heuristics should be implemented as InducingPointAllocator classes, and the select_inducing_points utility function should be deprecated.

The user should also be able to use the data itself as the inducing points.

@crasanders crasanders changed the title Enable GreedyVarianceReduction algorithm in GPClassificationModel Refactor GPClassificationModel to use Botorch's InducingPointAllocator's Oct 29, 2024
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

1 participant