Documentation

Welcome to the developer documentation for SigOpt. If you have a question you can’t answer, feel free to contact us!
Welcome to the new SigOpt docs! If you're looking for the classic SigOpt documentation then you can find that here. Otherwise, happy optimizing!

Apply Prior Knowledge

You can leverage SigOpt to take advantage of your domain expertise on how metric values behave for certain parameters. These prior beliefs make the optimization process more efficient.

Defining the Prior Distribution

Knowledge of Prior Distributions can be defined through the prior field for each continuous parameter. By default, SigOpt assumes that all parameters have a uniform prior distribution. You can inspect the probability density function of the prior belief distributions and generate the corresponding code snippet using the interactive tool below.

When the prior belief is set for a parameter, SigOpt is more likely to generate configurations from regions of this parameter with high probability density (PDF) value earlier in the SigOpt Experiment. Generally speaking, parameter configurations with PDF value 2 are twice as likely to be suggested as those with PDF value 1. The effect of prior belief is most notable during the initial portion of an experiment.

Normal
{
  "bounds": {
    "max": 3,
    "min": -3
  },
  "name": "x",
  "prior": {
    "mean": 0,
    "name": "normal",
    "scale": 1
  },
  "type": "double"
}

Example: Normally Distributed Parameters

Suppose in prior experiments, you observe that the log_learning_rate parameter exhibits properties indicating that the highest performing values are normally distributed.

Defining this behavior at the start of your next optimization experiment can warm start the process and produce a lift in performance. For further information, check out our blog post and our webinar.

Defining Prior Distributions with Code

Normal Distribution:

dict(
  name="log_learning_rate",
  bounds=dict(min=np.log(0.000001), max=np.log(1)),
  prior=dict(name="normal", mean=-1.5, scale=1),
  type="double",
)

Beta Distribution:

dict(
  name="beta_distribution", bounds=dict(min=0, max=1), prior=dict(name="beta", shape_a=2, shape_b=4.5), type="double"
)

Limitations