Шумная задача оптимизации не решена (по mlrMBO) - PullRequest
2 голосов
/ 14 октября 2019

Я пытаюсь свести к минимуму простую функцию с шумом:

function(x,prec=10){x^2+rnorm(1)/(prec)}

Шум умеренный, т. Е. Найти оптимальное значение довольно просто при 0. enter image description here

Что я считаю важным здесь, так это то, что шум независим, т.е. многократная оценка одной и той же точки приблизит вас к истинному (бесшумному) значению. Оптимизатор может воспользоваться этим. Но я не уверен, как.

Я использую mlrMBO в R для оптимизации, но не могу получить хороший результат. Приведенный ниже код оценивает минимальное значение 0,032, и увеличение iters, по-видимому, вовсе не улучшает результат.

library(mlrMBO)
f1<-function(x,prec=10){x^2+rnorm(1)/(prec)}
obj.fun = makeSingleObjectiveFunction(name = "noisy_parable", fn = f1,  par.set = makeNumericParamSet("x", 1, -3, 3), noisy = TRUE)
ctrl = makeMBOControl(final.method = "best.predicted", final.evals = 1)
ctrl = setMBOControlInfill(ctrl, crit = crit.eqi)
ctrl = setMBOControlTermination(ctrl, iters = 10)
configureMlr(on.learner.warning = "quiet", show.learner.output = FALSE)
set.seed(1)
res = mbo(obj.fun, control = ctrl, show.info = FALSE)
print(res$x)

Моя интуиция заключалась бы в том, что увеличение iter может продолжить улучшать результат допроизвольно точный результат: логика заключается в том, что, поскольку мы приближаемся к оптимальному, оптимизатор может использовать независимость шума для повышения точности путем многократной оценки одних и тех же / похожих точек.

Я думаю, что этоэто довольно общая настройка (шумная оптимизация с независимым шумом), поэтому я подумал, что оптимизатор будет иметь это встроенное, управляемое с помощью параметра настройки. Если это не так, есть ли способ реализовать это, используя mlrBMO?

Справочная информация : в моем реальном приложении оценка функции очень затратна (> 2 секунды для шумаэто примерно соответствует приведенному выше примеру), так что я получу большую выгоду при запуске функции с шумом, а затем только увеличу точность (путем повторной оценки тех же точек) по мере приближения к оптимальному.

с более широкими рамками (что является хорошим алгоритмом для такого рода проблем?) задаю и отвечаю сам здесь: https://math.stackexchange.com/questions/3376670/efficient-algorithm-to-search-minimum-of-function-with-noise/3397309#3397309

...