-
Notifications
You must be signed in to change notification settings - Fork 445
Description
Dear botorch developers,
I have a question regarding output constraints. So far they are used and implemented in the following way:
- There is a property which should be larger than a user provided threshold.
- A GP regression model is build to model the property. The output of the regression model is used as input for a sigmoid function that is chosen in a way that it is 1 above the thresshold.
- The actual optimization target is then multiplied by the output of the sigmoid function and this product forms the actual objective function
- The combination of regression model and sigmoid can be interpreted as a classification model --> related to logistic regression
Now comes my question:
How to set up a optimization in which a "real" classification model is needed. Imagine achemical experiment in which only certain input combinations lead to a "successful" experiments. Successful in this context means that it is possible to measure the properties that should be optimized. For the failed experiments, no outputs are available, and within the BO loop one wants to propose only experiments that lead to succesful experiments.
I found one paper in this context. They are using an in the loop classifier to judge if a experiment will be succesful or not. I think there should be better solutions using the technique on the output constraints described above. One could for example train directly a classification model using gpytorch and multiply its output with the actual objective.
What are your thoughts on this and have you ever tried something related within botorch?
Best,
Johannes