You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi everyone, I am very new to BoTorch and got introduced to it very recently. My application is related to Multi-task GP and BO for geometry optmization. I was going through the examples on BoTorch website. I have two questions, I would be very thankful for your help:
In MTBO and HOGP example, fit_gpytorch_mll_torch was used to fit the GP. I went to the documentation and I was able to understand what was happening. All good till here. But then I saw ROBO or MOMF example and there fit_gpytorch_mll was used. I saw the documentation and I found that there is fit_gpytorch_model also. What is difference between the three? Also, when to use the each one of them?
A different question but related to my topic. I wish to use GP and BO for optimization of a certain 1-D and later 2-D geometry that is influenced by some scalar inputs. The points on the geometry would have some correlation with the other points. So would it make more sense to use multi-objective BO or use an objective function, like in composite function BO. That objective function would take in the values from the geometry and spit out a scalar value and try to optimize that.
fit_gpytorch_model is a deprecated alias for fit_gpytorch_mll, which uses scipy's L-BFGS-B optimizer under the hood to train model hyper parameters. fit_gpytorch_mll is what we typically use for fitting exact GP models. fit_gpytorch_mll_torch is an alternative method that supports optimizers from PyTorch, such as SGD, Adam etc. The reason HOGP uses fit_gpytorch_mll_torch is that it is a very over-parameterized model, so we don't care to optimize each hyper parameter to convergence. The person who implemented HOGP found it to train to a reasonable quality faster when using Adam as the optimizer, though I don't have any results to support that argument.
Just so we're on the same page, I am assuming you have many outputs that you measure over the geometry. In general, we do not recommend multi-objective optimization when there are more than 3-4 outcomes. It typically becomes quite difficult for an individual to reason about many potentially conflicting outcomes, and the optimization also gets exponentially harder as the number of outcomes increases. In your case, defining a function that characterizes the geometry in a small number of outcomes and optimizing those seems like a better approach to me. So, composite BO is definitely worth a try. If defining the utility function is tricky, BO with preference exploration could also be a useful tool here.
So if I understood correctly, fit_gpytorch_mll uses L-BFGS-B optimizer and optimizes all hyperparameters to convergence. Whereas fit_gpytorch_mll_torch uses torch optimizers and they optimize the hyperparameters but not till convergence? Am I correct in saying that? And I tried Kronecker MTGP with fit_gpytorch_mll and with fit_gpytorch_mll_torch both, fit_gpytorch_mll_torch runs much faster than fit_gpytorch_mll. But I am not sure whose hyperparameters are better fit to the data.
Yes, we are on the same page regarding the question at hand. Okay I will experiment a bit with the single objective that takes in the outputs of the MTGP and also with preference exploration.
In the documentation of BoTorch, it is written that multi-output and multi-task models are different. And a model might both, or one of them. I am unable to understand the difference clearly. What is difference between using ModelListGP, SingleTaskGP and KroneckerMultiTaskGP for multi output case. The input is 5-10 dimensional and output is 9 dimensional.
I was of the opinion that I could directly use multi-task models for the case where I wish to model various points of a geometry (assuming that there is some correlation between them). But now I am confused whether a multi-task model is suited for my case or multi-output model?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hi everyone, I am very new to BoTorch and got introduced to it very recently. My application is related to Multi-task GP and BO for geometry optmization. I was going through the examples on BoTorch website. I have two questions, I would be very thankful for your help:
In MTBO and HOGP example, fit_gpytorch_mll_torch was used to fit the GP. I went to the documentation and I was able to understand what was happening. All good till here. But then I saw ROBO or MOMF example and there fit_gpytorch_mll was used. I saw the documentation and I found that there is fit_gpytorch_model also. What is difference between the three? Also, when to use the each one of them?
A different question but related to my topic. I wish to use GP and BO for optimization of a certain 1-D and later 2-D geometry that is influenced by some scalar inputs. The points on the geometry would have some correlation with the other points. So would it make more sense to use multi-objective BO or use an objective function, like in composite function BO. That objective function would take in the values from the geometry and spit out a scalar value and try to optimize that.
Beta Was this translation helpful? Give feedback.
All reactions