Active learning

This example shows how to use the ActiveLearning class to iteratively build a Gaussian process emulator for an unnormalized posterior involving a simulator. It should be noted that this example is only for illustration purpose, rather than a real case. For simplicity, required arguments for ActiveLearning (including simulator, likelihood, data, etc.) are purely made up. For a realistic case of active learning, one can refer to Zhao and Kowalski [2022].

First, we define the simulator, prior distribution of its variable parameters, observed data, and likelihood function. They basically define the Bayesian inference problem.

import numpy as np

ndim = 2 # dimension of variable parameters of the simulator
bounds = bounds = np.array([[-5,5],[-5,5]]) # bounds of variable parameters
data = np.array([1,0])

def simulator(x1, x2):
    """Simulator y=f(x)."""
    y1, y2 = x1, x2
    return np.array([y1, y2])

def prior(x):
    """Uniform prior."""
    return 1/(10*10)

def likelihood(y, data):
    """Likelihood function L(y,data)."""
    return np.exp(-(y[0]-data[0])**2/100 - (y[0]**2-y[1]-data[1])**2)

Imagine that the simulator is a complex solver. It is not computationally feasible to compute the posterior distribution of the variable parameters using grid estimation or Metropolis Hastings estimation. This is because they require evaluating the likelihood many times which essentially leads to many evaluations of the simulator. Therefore, we resort to use active learning to build a Gaussian process emulator for the unnormalized posterior (prior times likelihood) based on a small number of evaluations of the simulator. The the posterior can be estimated using the emulator.

To do so, we need to pass arguments to following parameters of the ActiveLearning class:

  • run_sim_obj : instance of class RunSimulator. It carries information on how to run the simulator.

  • lhs_sampler : instance of class LHS. It is used to draw initial samples to run simulations in order to train an inital Gaussian process emulator.

  • scalar_gasp : instance of class ScalarGaSP. It sets up the emulator structure.

from psimpy.simulator import RunSimulator
from psimpy.sampler import LHS
from psimpy.emulator import ScalarGaSP

run_simulator = RunSimulator(simulator, var_inp_parameter=['x1','x2'])
lhs_sampler = LHS(ndim=ndim, bounds=bounds, seed=1)
scalar_gasp = ScalarGaSP(ndim=ndim)

Next, we create an object of the ActiveLearning class by

from psimpy.inference import ActiveLearning

active_learner = ActiveLearning(ndim, bounds, data, run_simulator, prior, likelihood,
    lhs_sampler, scalar_gasp)

Then we can call the ActiveLearning.initial_simulation() method to run initial simulations and call the ActiveLearning.iterative_emulation() method to iteratively run new simulation and build emulator. Here we allocate 40 simulations for initial emulator training and 60 simulations for adaptive training.

n0 = 40
niter = 60

init_var_samples, init_sim_outputs = active_learner.initial_simulation(
    n0, mode='parallel', max_workers=4)

var_samples, _, _ = active_learner.iterative_emulation(
    n0, init_var_samples, init_sim_outputs, niter=niter)
The upper bounds of the range parameters are 420.7131 416.6473
The initial values of range parameters are 8.414262 8.332945
Start of the optimization  1  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -146.5038
 Optimized range parameters are 30.59659 130.5917
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.9828751 0.9733764
Start of the optimization  2  :
The number of iterations is  16
 The value of the  marginal posterior  function is  -146.5038
 Optimized range parameters are 30.5982 130.6064
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 418.0103 415.1878
The initial values of range parameters are 8.360206 8.303755
Start of the optimization  1  :
The number of iterations is  27
 The value of the  marginal posterior  function is  -148.6792
 Optimized range parameters are 30.19535 133.3286
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.9589025 0.9524277
Start of the optimization  2  :
The number of iterations is  13
 The value of the  marginal posterior  function is  -148.6792
 Optimized range parameters are 30.19529 133.3285
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 372.0419 369.5298
The initial values of range parameters are 7.440838 7.390595
Start of the optimization  1  :
The number of iterations is  34
 The value of the  marginal posterior  function is  -149.9595
 Optimized range parameters are 30.64772 135.0584
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.9360715 0.9297509
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -149.9595
 Optimized range parameters are 30.64717 135.0548
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 412.0792 409.2967
The initial values of range parameters are 8.241583 8.185933
Start of the optimization  1  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -151.304
 Optimized range parameters are 31.21546 136.8634
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.9143024 0.9081287
Start of the optimization  2  :
The number of iterations is  33
 The value of the  marginal posterior  function is  -151.304
 Optimized range parameters are 31.21602 136.8597
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 373.5991 371.0765
The initial values of range parameters are 7.471983 7.421529
Start of the optimization  1  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -152.6009
 Optimized range parameters are 32.2851 141.3769
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.8935228 0.8874894
Start of the optimization  2  :
The number of iterations is  33
 The value of the  marginal posterior  function is  -152.6009
 Optimized range parameters are 32.28086 141.3732
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 363.7651 361.3088
The initial values of range parameters are 7.275302 7.226176
Start of the optimization  1  :
The number of iterations is  16
 The value of the  marginal posterior  function is  -153.5419
 Optimized range parameters are 32.43467 141.787
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.8736668 0.8677675
Start of the optimization  2  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -153.5419
 Optimized range parameters are 32.43465 141.787
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 388.6202 385.9961
The initial values of range parameters are 7.772404 7.719922
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -154.9929
 Optimized range parameters are 33.6944 151.2097
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.854674 0.848903
Start of the optimization  2  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -154.9929
 Optimized range parameters are 33.6947 151.2113
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 368.5149 366.0266
The initial values of range parameters are 7.370298 7.320531
Start of the optimization  1  :
The number of iterations is  22
 The value of the  marginal posterior  function is  -155.4764
 Optimized range parameters are 33.87171 151.8922
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.8364895 0.8308412
Start of the optimization  2  :
The number of iterations is  16
 The value of the  marginal posterior  function is  -155.4765
 Optimized range parameters are 33.90549 152.0137
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 303.005 300.959
The initial values of range parameters are 6.060099 6.019179
Start of the optimization  1  :
The number of iterations is  14
 The value of the  marginal posterior  function is  -155.8802
 Optimized range parameters are 34.04396 152.6136
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.8190626 0.813532
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -155.8802
 Optimized range parameters are 34.04591 152.6189
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 271.7327 269.8979
The initial values of range parameters are 5.434655 5.397958
Start of the optimization  1  :
The number of iterations is  30
 The value of the  marginal posterior  function is  -156.1383
 Optimized range parameters are 34.47655 151.3798
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.802347 0.7969293
Start of the optimization  2  :
The number of iterations is  27
 The value of the  marginal posterior  function is  -156.1383
 Optimized range parameters are 34.46977 151.4259
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 229.754 228.2026
The initial values of range parameters are 4.595079 4.564052
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -156.184
 Optimized range parameters are 34.50828 152.8102
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.7863001 0.7809907
Start of the optimization  2  :
The number of iterations is  33
 The value of the  marginal posterior  function is  -156.184
 Optimized range parameters are 34.50295 152.8055
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 206.5918 205.1968
The initial values of range parameters are 4.131835 4.103936
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -156.2348
 Optimized range parameters are 34.79817 155.165
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.7708824 0.7656772
Start of the optimization  2  :
The number of iterations is  16
 The value of the  marginal posterior  function is  -156.2348
 Optimized range parameters are 34.82609 155.1902
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 258.3488 256.6043
The initial values of range parameters are 5.166975 5.132086
Start of the optimization  1  :
The number of iterations is  33
 The value of the  marginal posterior  function is  -156.4062
 Optimized range parameters are 34.76576 157.0386
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.7560578 0.7509526
Start of the optimization  2  :
The number of iterations is  27
 The value of the  marginal posterior  function is  -156.4062
 Optimized range parameters are 34.73883 156.9472
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 237.2817 235.6795
The initial values of range parameters are 4.745633 4.713589
Start of the optimization  1  :
The number of iterations is  22
 The value of the  marginal posterior  function is  -156.5552
 Optimized range parameters are 35.36218 157.5205
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.7417925 0.7367837
Start of the optimization  2  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -156.5552
 Optimized range parameters are 35.37291 157.5609
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 250.7264 249.0334
The initial values of range parameters are 5.014527 4.980667
Start of the optimization  1  :
The number of iterations is  21
 The value of the  marginal posterior  function is  -156.8768
 Optimized range parameters are 35.90648 161.054
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.7280556 0.7231396
Start of the optimization  2  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -156.8767
 Optimized range parameters are 35.92228 161.1123
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 238.9065 237.2933
The initial values of range parameters are 4.778129 4.745866
Start of the optimization  1  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -156.6342
 Optimized range parameters are 36.30829 162.0199
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.7148183 0.7099916
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -156.6342
 Optimized range parameters are 36.30018 161.8524
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 245.248 243.592
The initial values of range parameters are 4.904959 4.871839
Start of the optimization  1  :
The number of iterations is  17
 The value of the  marginal posterior  function is  -156.3684
 Optimized range parameters are 36.27097 162.5809
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.7020536 0.6973131
Start of the optimization  2  :
The number of iterations is  35
 The value of the  marginal posterior  function is  -156.3684
 Optimized range parameters are 36.28256 162.6136
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 245.5015 243.8438
The initial values of range parameters are 4.91003 4.876875
Start of the optimization  1  :
The number of iterations is  29
 The value of the  marginal posterior  function is  -156.014
 Optimized range parameters are 36.15503 162.4561
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.6897369 0.6850796
Start of the optimization  2  :
The number of iterations is  16
 The value of the  marginal posterior  function is  -156.0141
 Optimized range parameters are 36.19571 162.4856
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 237.5607 235.9566
The initial values of range parameters are 4.751214 4.719132
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -155.8456
 Optimized range parameters are 36.99431 166.8476
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.6778449 0.6732679
Start of the optimization  2  :
The number of iterations is  34
 The value of the  marginal posterior  function is  -155.8455
 Optimized range parameters are 36.9843 166.8112
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 218.5445 217.0688
The initial values of range parameters are 4.37089 4.341377
Start of the optimization  1  :
The number of iterations is  17
 The value of the  marginal posterior  function is  -155.2612
 Optimized range parameters are 37.52584 170.9858
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.666356 0.6618565
Start of the optimization  2  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -155.261
 Optimized range parameters are 37.5272 170.9907
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 228.1098 226.5696
The initial values of range parameters are 4.562197 4.531391
Start of the optimization  1  :
The number of iterations is  30
 The value of the  marginal posterior  function is  -154.6105
 Optimized range parameters are 37.33828 173.6169
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.6552501 0.6508256
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -154.6106
 Optimized range parameters are 37.20479 173.2666
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 211.684 210.2546
The initial values of range parameters are 4.23368 4.205093
Start of the optimization  1  :
The number of iterations is  30
 The value of the  marginal posterior  function is  -153.8922
 Optimized range parameters are 37.4968 173.0747
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.6445083 0.6401563
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -153.8923
 Optimized range parameters are 37.52424 173.017
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 199.9789 198.6286
The initial values of range parameters are 3.999579 3.972572
Start of the optimization  1  :
The number of iterations is  17
 The value of the  marginal posterior  function is  -153.0734
 Optimized range parameters are 37.55227 173.0759
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.634113 0.6298312
Start of the optimization  2  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -153.0733
 Optimized range parameters are 37.52729 172.8307
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 202.9237 201.5534
The initial values of range parameters are 4.058473 4.031069
Start of the optimization  1  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -152.171
 Optimized range parameters are 37.57767 172.5286
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.6240477 0.6198339
Start of the optimization  2  :
The number of iterations is  37
 The value of the  marginal posterior  function is  -152.1709
 Optimized range parameters are 37.52827 172.3748
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 190.9983 189.7086
The initial values of range parameters are 3.819965 3.794172
Start of the optimization  1  :
The number of iterations is  22
 The value of the  marginal posterior  function is  -151.4187
 Optimized range parameters are 37.85886 177.5027
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.6142969 0.610149
Start of the optimization  2  :
The number of iterations is  37
 The value of the  marginal posterior  function is  -151.4192
 Optimized range parameters are 37.86442 177.4215
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 184.5705 183.3242
The initial values of range parameters are 3.69141 3.666484
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -150.3527
 Optimized range parameters are 37.92872 177.0128
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.6048462 0.6007621
Start of the optimization  2  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -150.352
 Optimized range parameters are 37.92941 176.9876
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 206.689 205.2934
The initial values of range parameters are 4.13378 4.105867
Start of the optimization  1  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -149.2293
 Optimized range parameters are 37.73939 179.5156
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.5956819 0.5916596
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -149.2285
 Optimized range parameters are 37.6686 179.2687
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 204.4555 203.0749
The initial values of range parameters are 4.08911 4.061499
Start of the optimization  1  :
The number of iterations is  34
 The value of the  marginal posterior  function is  -148.0359
 Optimized range parameters are 37.07659 181.8027
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5867911 0.5828289
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -148.0361
 Optimized range parameters are 37.09612 181.862
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 207.5545 206.153
The initial values of range parameters are 4.15109 4.123061
Start of the optimization  1  :
The number of iterations is  31
 The value of the  marginal posterior  function is  -147.2549
 Optimized range parameters are 36.89036 184.8898
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.5781618 0.5742579
Start of the optimization  2  :
The number of iterations is  18
 The value of the  marginal posterior  function is  -147.2555
 Optimized range parameters are 36.87001 184.82
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 166.9279 165.8008
The initial values of range parameters are 3.338559 3.316015
Start of the optimization  1  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -146.0908
 Optimized range parameters are 34.10173 165.8008
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5697827 0.5659353
Start of the optimization  2  :
The number of iterations is  12
 The value of the  marginal posterior  function is  -146.091
 Optimized range parameters are 34.11888 165.8008
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 207.5545 206.153
The initial values of range parameters are 4.15109 4.123061
Start of the optimization  1  :
The number of iterations is  39
 The value of the  marginal posterior  function is  -144.6147
 Optimized range parameters are 36.54517 188.5363
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5616429 0.5578505
Start of the optimization  2  :
The number of iterations is  19
 The value of the  marginal posterior  function is  -144.6151
 Optimized range parameters are 36.27548 187.7642
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 162.9825 161.882
The initial values of range parameters are 3.259651 3.23764
Start of the optimization  1  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -143.1453
 Optimized range parameters are 32.74403 161.882
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5537325 0.5499935
Start of the optimization  2  :
The number of iterations is  22
 The value of the  marginal posterior  function is  -143.1451
 Optimized range parameters are 32.74424 161.882
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 158.5408 157.4703
The initial values of range parameters are 3.170816 3.149405
Start of the optimization  1  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -141.6959
 Optimized range parameters are 31.65865 157.4703
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5460417 0.5423547
Start of the optimization  2  :
The number of iterations is  13
 The value of the  marginal posterior  function is  -141.6958
 Optimized range parameters are 31.65944 157.4703
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 154.683 153.6385
The initial values of range parameters are 3.09366 3.072771
Start of the optimization  1  :
The number of iterations is  21
 The value of the  marginal posterior  function is  -140.1644
 Optimized range parameters are 31.1494 153.6385
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5385617 0.5349251
Start of the optimization  2  :
The number of iterations is  21
 The value of the  marginal posterior  function is  -140.1642
 Optimized range parameters are 31.1205 153.6385
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 156.7268 155.6685
The initial values of range parameters are 3.134536 3.113371
Start of the optimization  1  :
The number of iterations is  37
 The value of the  marginal posterior  function is  -138.6449
 Optimized range parameters are 31.25719 155.6685
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5312838 0.5276964
Start of the optimization  2  :
The number of iterations is  10
 The value of the  marginal posterior  function is  -138.6457
 Optimized range parameters are 31.20511 155.6685
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 159.9013 158.8216
The initial values of range parameters are 3.198026 3.176432
Start of the optimization  1  :
The number of iterations is  12
 The value of the  marginal posterior  function is  -138.799
 Optimized range parameters are 32.12962 158.8216
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.5242001 0.5206605
Start of the optimization  2  :
The number of iterations is  30
 The value of the  marginal posterior  function is  -138.7995
 Optimized range parameters are 32.23426 158.8216
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 157.0852 156.0245
The initial values of range parameters are 3.141704 3.12049
Start of the optimization  1  :
The number of iterations is  32
 The value of the  marginal posterior  function is  -138.9791
 Optimized range parameters are 32.28276 156.0245
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.5173027 0.5138097
Start of the optimization  2  :
The number of iterations is  11
 The value of the  marginal posterior  function is  -138.9787
 Optimized range parameters are 32.25762 156.0245
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 153.7189 152.681
The initial values of range parameters are 3.074379 3.05362
Start of the optimization  1  :
The number of iterations is  9
 The value of the  marginal posterior  function is  -137.3328
 Optimized range parameters are 30.89731 152.681
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.5105845 0.5071368
Start of the optimization  2  :
The number of iterations is  11
 The value of the  marginal posterior  function is  -137.3327
 Optimized range parameters are 30.89795 152.681
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 159.3891 158.3129
The initial values of range parameters are 3.187782 3.166257
Start of the optimization  1  :
The number of iterations is  13
 The value of the  marginal posterior  function is  -134.9406
 Optimized range parameters are 30.6762 158.3129
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.5040385 0.5006351
Start of the optimization  2  :
The number of iterations is  36
 The value of the  marginal posterior  function is  -134.9398
 Optimized range parameters are 30.83421 158.3129
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 159.832 158.7527
The initial values of range parameters are 3.196639 3.175055
Start of the optimization  1  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -132.5023
 Optimized range parameters are 29.64711 158.7527
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4976583 0.4942979
Start of the optimization  2  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -132.5029
 Optimized range parameters are 29.69952 158.7527
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 151.0987 150.0785
The initial values of range parameters are 3.021975 3.00157
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -130.9007
 Optimized range parameters are 28.04164 150.0785
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4914376 0.4881192
Start of the optimization  2  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -130.9016
 Optimized range parameters are 27.90702 150.0785
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 156.5391 155.4821
The initial values of range parameters are 3.130783 3.109643
Start of the optimization  1  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -127.8529
 Optimized range parameters are 27.65861 155.4821
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4853704 0.482093
Start of the optimization  2  :
The number of iterations is  15
 The value of the  marginal posterior  function is  -127.8537
 Optimized range parameters are 27.65893 155.4821
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 144.6837 143.7068
The initial values of range parameters are 2.893674 2.874135
Start of the optimization  1  :
The number of iterations is  10
 The value of the  marginal posterior  function is  -126.3069
 Optimized range parameters are 26.14805 143.7068
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.4794513 0.4762139
Start of the optimization  2  :
The number of iterations is  32
 The value of the  marginal posterior  function is  -126.3061
 Optimized range parameters are 26.14945 143.7068
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 147.4263 146.4308
The initial values of range parameters are 2.948526 2.928616
Start of the optimization  1  :
The number of iterations is  18
 The value of the  marginal posterior  function is  -123.3139
 Optimized range parameters are 26.00776 146.4308
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.4736748 0.4704763
Start of the optimization  2  :
The number of iterations is  29
 The value of the  marginal posterior  function is  -123.3124
 Optimized range parameters are 26.00792 146.4308
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 141.8343 140.8766
The initial values of range parameters are 2.836686 2.817532
Start of the optimization  1  :
The number of iterations is  21
 The value of the  marginal posterior  function is  -121.3189
 Optimized range parameters are 25.40012 140.8766
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.4680358 0.4648754
Start of the optimization  2  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -121.3199
 Optimized range parameters are 25.3783 140.8766
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 138.8069 137.8696
The initial values of range parameters are 2.776137 2.757392
Start of the optimization  1  :
The number of iterations is  27
 The value of the  marginal posterior  function is  -119.9576
 Optimized range parameters are 24.60408 137.8696
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4625295 0.4594063
Start of the optimization  2  :
The number of iterations is  33
 The value of the  marginal posterior  function is  -119.9574
 Optimized range parameters are 24.6049 137.8696
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 136.7754 135.8519
The initial values of range parameters are 2.735509 2.717038
Start of the optimization  1  :
The number of iterations is  31
 The value of the  marginal posterior  function is  -117.3956
 Optimized range parameters are 23.9288 135.8519
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4571512 0.4540644
Start of the optimization  2  :
The number of iterations is  19
 The value of the  marginal posterior  function is  -117.3963
 Optimized range parameters are 23.93923 135.8519
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 122.4858 121.6587
The initial values of range parameters are 2.449715 2.433174
Start of the optimization  1  :
The number of iterations is  9
 The value of the  marginal posterior  function is  -117.1863
 Optimized range parameters are 22.45945 121.6587
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.4518966 0.4488452
Start of the optimization  2  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -117.1857
 Optimized range parameters are 22.45861 121.6587
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 124.7933 123.9507
The initial values of range parameters are 2.495867 2.479014
Start of the optimization  1  :
The number of iterations is  30
 The value of the  marginal posterior  function is  -114.3601
 Optimized range parameters are 22.5128 123.9507
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.4467614 0.4437447
Start of the optimization  2  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -114.36
 Optimized range parameters are 22.51309 123.9507
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 121.8507 121.0279
The initial values of range parameters are 2.437013 2.420558
Start of the optimization  1  :
The number of iterations is  32
 The value of the  marginal posterior  function is  -112.4649
 Optimized range parameters are 22.12543 121.0279
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4417416 0.4387588
Start of the optimization  2  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -112.4657
 Optimized range parameters are 22.13681 121.0279
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 114.2532 113.4817
The initial values of range parameters are 2.285064 2.269635
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -110.9429
 Optimized range parameters are 20.87695 113.4817
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4368334 0.4338837
Start of the optimization  2  :
The number of iterations is  30
 The value of the  marginal posterior  function is  -110.9428
 Optimized range parameters are 20.87687 113.4817
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 107.5519 106.8257
The initial values of range parameters are 2.151038 2.136513
Start of the optimization  1  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -109.6259
 Optimized range parameters are 19.96839 106.8257
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.432033 0.4291158
Start of the optimization  2  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -109.6258
 Optimized range parameters are 19.96622 106.8257
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 105.9321 105.2168
The initial values of range parameters are 2.118642 2.104337
Start of the optimization  1  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -107.2887
 Optimized range parameters are 19.81197 105.2168
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.427337 0.4244515
Start of the optimization  2  :
The number of iterations is  35
 The value of the  marginal posterior  function is  -107.2885
 Optimized range parameters are 19.80782 105.2168
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 103.7434 103.0429
The initial values of range parameters are 2.074868 2.060858
Start of the optimization  1  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -104.942
 Optimized range parameters are 19.35122 103.0429
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.422742 0.4198875
Start of the optimization  2  :
The number of iterations is  36
 The value of the  marginal posterior  function is  -104.942
 Optimized range parameters are 19.3513 103.0429
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 102.2359 101.5455
The initial values of range parameters are 2.044717 2.030911
Start of the optimization  1  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -102.382
 Optimized range parameters are 18.92818 101.5455
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4182447 0.4154206
Start of the optimization  2  :
The number of iterations is  38
 The value of the  marginal posterior  function is  -102.3824
 Optimized range parameters are 18.93008 101.5455
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 104.947 104.2383
The initial values of range parameters are 2.098939 2.084767
Start of the optimization  1  :
The number of iterations is  25
 The value of the  marginal posterior  function is  -98.23267
 Optimized range parameters are 18.94201 104.2383
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4138422 0.4110477
Start of the optimization  2  :
The number of iterations is  40
 The value of the  marginal posterior  function is  -98.23364
 Optimized range parameters are 18.94106 104.2383
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 105.99 105.2743
The initial values of range parameters are 2.1198 2.105486
Start of the optimization  1  :
The number of iterations is  26
 The value of the  marginal posterior  function is  -94.36122
 Optimized range parameters are 18.8138 105.2743
 Optimized nugget parameter is 0
 Convergence:  TRUE
The initial values of range parameters are 0.4095313 0.406766
Start of the optimization  2  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -94.36013
 Optimized range parameters are 18.81444 105.2743
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 95.08534 94.44329
The initial values of range parameters are 1.901707 1.888866
Start of the optimization  1  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -95.14024
 Optimized range parameters are 17.52605 94.44329
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4053093 0.4025725
Start of the optimization  2  :
The number of iterations is  33
 The value of the  marginal posterior  function is  -95.13983
 Optimized range parameters are 17.52612 94.44329
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 92.02781 91.4064
The initial values of range parameters are 1.840556 1.828128
Start of the optimization  1  :
The number of iterations is  28
 The value of the  marginal posterior  function is  -92.90551
 Optimized range parameters are 16.93414 91.4064
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.4011735 0.3984647
Start of the optimization  2  :
The number of iterations is  39
 The value of the  marginal posterior  function is  -92.90572
 Optimized range parameters are 16.93369 91.4064
 Optimized nugget parameter is 0
 Convergence:  FALSE
The upper bounds of the range parameters are 103.2185 102.5215
The initial values of range parameters are 2.06437 2.05043
Start of the optimization  1  :
The number of iterations is  24
 The value of the  marginal posterior  function is  -85.41126
 Optimized range parameters are 18.01591 102.5215
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.3971213 0.3944398
Start of the optimization  2  :
The number of iterations is  11
 The value of the  marginal posterior  function is  -85.40862
 Optimized range parameters are 18.01616 102.5215
 Optimized nugget parameter is 0
 Convergence:  TRUE
The upper bounds of the range parameters are 84.12819 83.56012
The initial values of range parameters are 1.682564 1.671202
Start of the optimization  1  :
The number of iterations is  22
 The value of the  marginal posterior  function is  -90.63195
 Optimized range parameters are 16.03987 83.56012
 Optimized nugget parameter is 0
 Convergence:  FALSE
The initial values of range parameters are 0.39315 0.3904954
Start of the optimization  2  :
The number of iterations is  23
 The value of the  marginal posterior  function is  -90.63178
 Optimized range parameters are 16.02786 83.56012
 Optimized nugget parameter is 0
 Convergence:  FALSE

Once the active learning process is finished, we obtain the final emulator for the logarithm of the unnormalized posterior, which is given by the ActiveLearning.approx_ln_pxl() method.

We can then estimate the posterior using grid estimation or Metropolis Hastings estimation based on the emulator. An example is as follows. The contour plot shows the estimated posterior.

from psimpy.inference import GridEstimation
import matplotlib.pyplot as plt

grid_estimator = GridEstimation(ndim, bounds, ln_pxl=active_learner.approx_ln_pxl)
posterior, x_ndim = grid_estimator.run(nbins=50)

fig, ax = plt.subplots(1,1,figsize=(5,4))

# initial training points
ax.scatter(init_var_samples[:,0], init_var_samples[:,1], s=10, c='r', marker='o',
    zorder=1, alpha=0.8, label='initial training points')
# actively picked training points
ax.scatter(var_samples[n0:,0], var_samples[n0:,1], s=15, c='k', marker='+',
    zorder=2, alpha=0.8, label='iterative training points')

# estimated posterior based on the final emulator
posterior = np.where(posterior < 1e-10, np.nan, posterior)
contour = ax.contour(x_ndim[0], x_ndim[1], np.transpose(posterior), levels=10, zorder=0)
plt.colorbar(contour, ax=ax)

ax.legend()
ax.set_title('Active learning')
ax.set_xlabel('x1')
ax.set_ylabel('x2')
ax.set_xlim([-5,5])
ax.set_ylim([-5,5])
plt.tight_layout()
Active learning

Total running time of the script: ( 0 minutes 54.860 seconds)

Gallery generated by Sphinx-Gallery