Select¶
The Select model define adaptive experimental design algorithms that select the next computations based on predictions from the machine learning models.
Available Selectors¶
ExaMol includes selectors that have a variety of characteristics
Selector |
Category |
Multi-Objective |
Batch Aware |
Multi-Fidelity |
---|---|---|---|---|
Baseline |
✔ |
✘ |
✘ |
|
Baseline |
✘ |
✘ |
✘ |
|
Bayesian |
✘ |
✘ |
✘ |
|
Bayesian* |
✘ |
✘ |
✘ |
|
Bayesian |
✔ |
✘ |
✘ |
* Interface to many classes of selection algorithms
Using a Selector¶
Selectors employ a batching strategy to work with very large search spaces.
Start the selection process by creating the Selector then updating it with the current database and objective functions (i.e., recipes).
selector = GreedySelector(to_select=2, maximize=True)
selector.update(database, [recipe])
The Selector can then receive new predictions as a list of “keys” that define which computation associated with a list of of predictions from an ensemble of machine learning models.
# Samples array is: <num objectives> x <num samples> x <num models>
selector.add_possibilities(keys=[1, 2, 3], samples=np.arange(3)[None, :, None])
Continue to add new possibilities until ready to select new computations, which are retrieved by the “dispense” function.
print(list(selector.dispense())) # [(3, 3.), (2, 2.)]
Call start_gathering()
when done dispensing
to clear any remaining results or
call add_possibilities()
to start adding new possibilities again.