Нехай - функція, яка є досить приємною (наприклад, безперервна, диференційована, не надто багато локальних максимумів, можливо, увігнута тощо). Я хочу знайти максимум f : значення x ∈ R d, що робить f ( x ) якомога більшим.
Якби у мене була процедура точно оцінювати на будь-якому моєму вході, я міг би використати стандартні методи математичної оптимізації : сходження на гірку, спуск по градієнту (ну, градієнтне сходження) тощо. Однак у моїй заяві у мене немає спосіб точно оцінити f ( x ) . Натомість у мене є спосіб оцінити значення f ( x ) .
Зокрема, з урахуванням будь-якого і будь-якого ε , у мене є оракул, який видасть оцінку f ( x ) , і очікувана помилка якої приблизно ε . Час запуску цього оракул виклику пропорційний 1 / ε 2 . (Він реалізується за допомогою свого роду моделювання; точність моделювання зростає з квадратним коренем кількості випробувань, і я можу вибрати, скільки випробувань провести, щоб я міг вибрати бажану точність.) Отже, це дає мені спосіб отримати оцінку будь-якої точності, яку я бажаю, але чим точнішою я хочу бути, тим довше мені знадобиться.
Враховуючи цей галасливий оракул для , чи існують методи для обчислення максимумів f якомога ефективніше? (Або, точніше, знаходження приблизних максимумів.) Чи існують варіанти сходження на пагорби, схил градієнта тощо, які працюють у цій моделі?
Звичайно, я міг зафіксувати дуже мале значення і застосувати сходження на схил або схил по схилу за допомогою цього оракула, зберігаючи однакове ε протягом усього часу. Однак це може виявитися невиправдано неефективним: нам може не знадобитися така точна оцінка з самого початку, тоді як точність біля кінця, коли ви занурюєтесь у рішення, важливіша. То чи є якийсь спосіб скористатися моєю здатністю динамічно контролювати точність моєї оцінки, щоб зробити процес оптимізації більш ефективним? Чи вивчали цю проблему раніше?