Optimizers
The table below displays all the available optimizers and the correlation between them and a parameter-type / multi-objective function:
* For Enterprise users only
** Initial proposals are random. Click on the specific optimizer for more details.
Falcon GPBO
Type: Bayesian optimizer
Description: Gaussian Process priors are probably the most standard choice of surrogate model for problems that are conceivably optimized with a relatively small number of observations. However, its computational cost--it scales cubically in the number of observations--hinders its usage for more challenging problems.
References: [1]
Grid - 0.1.0
Type: (Quasi)-Random and DOE strategy
Description: A method for optimizing parameters by doing exhaustive search of the parameter space in a grid-like manner. Powerful method for exploring the whole space, with the possibility to use continuous, discrete and categorical parameters.
References: [1]
(03.2020 - in-house implementation)
RandomSearch - 0.1.0
Type: (Quasi)-Random and DOE strategy
Description: Method that uses random sampling to optimize the hyperparameter space. It can be used with continuous, discrete or categorical parameters.
(03.2020 - in-house implementation)
Semopt
Type: Transfer Learning
SeMOpt is Atinary’s transfer-learning algorithm to accelerate optimization processes by leveraging existing knowledge learned from past experiments and existing data. It automatically identifies key information and guides the optimization algorithms to the most promising parameter region from the start.
References: [1]
EDBO+
Type: Bayesian optimizer
Custom Bayesian optimizer developed by Dr. Abigail G. Doyle s group, built upon BoTorch.
This optimizer uses a Gaussian process surrogate model and hypervolume improvement for its acquisition function.
Currently supports up to 500000 combinations of parameter options.
References: [1]
Get Optimizer specifications from SDK
Here is a sample code to get the current optimizers specifications:
import scientia_sdk
import pprint
pp = pprint.PrettyPrinter(indent=4)
API_KEY = # Add your API-KEY here
ENDPOINT_URL = # Add relevant host, cf. "API Endpoints" section
configuration = scientia_sdk.Configuration(
host = ENDPOINT_URL,
api_key = {
'api_key': API_KEY,
}
)
configuration.access_token = None # temporary fix when using the SDK
with scientia_sdk.ApiClient(configuration) as api_client:
api_optimizer = scientia_sdk.OptimizerApi(api_client)
api_response = api_optimizer.optimizers_specification()
pp.pprint([i["function"] for i in api_response.to_dict()["objects"]])