-
Notifications
You must be signed in to change notification settings - Fork 456
(botorch) fix noise term in PairwiseGP and add ScaleKernel #571
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
Conversation
|
This pull request was exported from Phabricator. Differential Revision: D23854124 |
Summary: Pull Request resolved: meta-pytorch#571 In a probit model, the noise is simply a scaling parameter on the function. In the current implementation, the scale is implemented via the noise, which has two disadvantages: 1. A user coming from anywhere else in gpytorch/botorch wouldn't necessarily know not to use ScaleKernel here. 2. When running prediction / computing posteriors, by default we don't include the noise (consistent with behavior elsewhere), so our prediction of f(x) is off by an arbitrary constant factor. This changes the default so that we use ScaleKernel and fix the noise. Differential Revision: D23854124 fbshipit-source-id: d8ab08264cfc7c09ab027f308ea39921b8147daa
|
This pull request was exported from Phabricator. Differential Revision: D23854124 |
41a5119 to
613af36
Compare
Codecov Report
@@ Coverage Diff @@
## master #571 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 84 84
Lines 5503 5485 -18
=========================================
- Hits 5503 5485 -18
Continue to review full report at Codecov.
|
…pytorch#571) Summary: Pull Request resolved: meta-pytorch#571 In a probit model, the noise is not identifiable separately from a scale on latent function. In the current implementation, this scale is implemented via a noise term, which has three disadvantages: 1. A user coming from anywhere else in gpytorch/botorch wouldn't necessarily know not to use ScaleKernel here. 2. When running prediction / computing posteriors, by default we don't include the noise (consistent with behavior elsewhere), so our prediction of f(x) is off by an arbitrary constant factor. 3. When computing posteriors with `noise=True` the noise is added to the covariance, but this doesn't scale the function value either. This means if I use a batched single-outcome acquisition function to do pairwise acquisition (which is reasonable), I'm not doing acquisition on the same model I'm using for interpolation (since now I have noise on individual items rather than on the comparison). Explicitly pairwise MC acquisition functions that take draws of pairs and do something with them should still be correct here, I think. This PR changes the default so that we use ScaleKernel and remove the noise term. I've added docs to this effect in a few places, but this is a breaking change API-wise. Reviewed By: Balandat Differential Revision: D23854124 fbshipit-source-id: da802d9df05ac1cb873b4f7e4fe6ff9bfa67da8a
|
This pull request was exported from Phabricator. Differential Revision: D23854124 |
613af36 to
4c56e7c
Compare
|
This pull request has been merged in dd17a4c. |
Summary:
In a probit model, the noise is simply a scaling parameter on the function. In the current implementation, the scale is implemented via the noise, which has two disadvantages:
This changes the default so that we use ScaleKernel and fix the noise.
Differential Revision: D23854124