Пусть - довольно приятная функция (например, непрерывная, дифференцируемая, не слишком много локальных максимумов, может быть вогнутая и т. Д.). Я хочу найти максимумы : значение которое делает максимально большим.
Если бы у меня была процедура для точной оценки на любом входе по моему выбору, я мог бы использовать стандартные методы математической оптимизации : восхождение на холм, градиентный спуск (ну, градиентный подъем) и т. Д. Однако в моем приложении у меня нет способ точно оценить . Вместо этого у меня есть способ оценить значение .
В частности, с учетом любого и любого меня есть оракул, который выведет оценку , и ожидаемая ошибка которого составляет приблизительно . Время выполнения этого вызова оракула пропорционально . (Он реализуется посредством своего рода симуляции; точность симуляции увеличивается с квадратным корнем из числа испытаний, и я могу выбрать, сколько испытаний выполнить, чтобы я мог выбрать желаемую точность.) Так что это дает мне способ получить оценку любой точности, которую я желаю, но чем точнее я хочу, чтобы оценка была, тем больше времени это займет у меня.
Учитывая этот шумный оракул для , существуют ли какие-либо методы для вычисления максимумов настолько эффективно, насколько это возможно? (Или, точнее, нахождение приблизительных максимумов.) Существуют ли варианты альпинизма, градиентного спуска и т. Д., Которые работают в этой модели?
Конечно, я мог бы исправить очень маленькое значение и применить альпинизм или градиентный спуск с этим оракулом, сохраняя тот же самый всем протяжении. Однако это может быть излишне неэффективным: нам может не потребоваться такая точная оценка в начале, тогда как точность ближе к концу, когда вы сосредоточиваетесь на решении, является более важной. Так есть ли способ использовать мою способность динамически контролировать точность моей оценки, чтобы сделать процесс оптимизации более эффективным? Была ли эта проблема изучена ранее?