luinardi / hypermapper

Black-box Optimizer based on Bayesian Optimization
MIT License
155 stars 26 forks source link

Exploitation and exploration #81

Closed peterhchen closed 1 year ago

peterhchen commented 2 years ago

How to tune up the speed and accuracy for hypermapper?

  1. Exploration and exploitation ratio?
  2. Converge accuracy
  3. Step size

peter.HP.chen@gmail.com Thanks, Peter h chen

arturluis commented 2 years ago

Hi Peter,

Overall, the biggest impact to HMs performance x speed tradeoff is likely to come from an internal local search that we do. You can make HM faster, but likely less accurate, by reducing these parameters:

local_search_random_points: 10000
local_search_starting_points: 10

E.g., you can set the random points to 1000, 2500, or 5000 to speed up HM or set the starting points to 1 or 5. As to your points more directly:

  1. The exploration x exploitation ratio is controlled by HMs internal model, I think there is no parameter to control that directly. However, you can tweak it a bit by increasing the epsilon_greedy_threshold parameter. This parameter forces HM to explore with a given percentage chance. The default is 0.1, meaning HM is forced to explore around 10% of the time. You can increase that to make it explore more, but I would advise against setting it too high. I'd stick to maybe 0.2 or 0.25 at most.
  2. I'm not sure what you mean here, HM does not do early stopping based on convergence, so I'm not sure where the accuracy would come into play.
  3. There is no inherent step size to HM, I'm not sure what step size you are referring to here?

Cheers,

peterhchen commented 2 years ago

Thanks

On Thu, Sep 1, 2022 at 8:59 AM arturluis @.***> wrote:

Hi Peter,

Overall, the biggest impact to HMs performance x speed tradeoff is likely to come from an internal local search that we do. You can make HM faster, but likely less accurate, by reducing these parameters:

local_search_random_points: 10000 local_search_starting_points: 10

E.g., you can set the random points to 1000, 2500, or 5000 to speed up HM or set the starting points to 1 or 5. As to your points more directly:

  1. The exploration x exploitation ratio is controlled by HMs internal model, I think there is no parameter to control that directly. However, you can tweak it a bit by increasing the epsilon_greedy_threshold parameter. This parameter forces HM to explore with a given percentage chance. The default is 0.1, meaning HM is forced to explore around 10% of the time. You can increase that to make it explore more, but I would advise against setting it too high. I'd stick to maybe 0.2 or 0.25 at most.
  2. I'm not sure what you mean here, HM does not do early stopping based on convergence, so I'm not sure where the accuracy would come into play.
  3. There is no inherent step size to HM, I'm not sure what step size you are referring to here?

Cheers,

— Reply to this email directly, view it on GitHub https://github.com/luinardi/hypermapper/issues/81#issuecomment-1234478741, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADBSBD5RZMNXSDCDKB5KZD3V4DHGBANCNFSM57H2ZMRA . You are receiving this because you authored the thread.Message ID: @.***>

-- Sincerely Yours, Peter H. Chen