Пошук глобального мінімуму гладкої, обмеженої, неопуклої 2D функції, яку дорого оцінити


17

У мене є обмежена невипукла 2-D функція, яку я хотів би знайти мінімум. Функція досить плавна. Оцінити це дорого. Прийнятна помилка становить близько 3% домену функції в кожній осі.

Я спробував запустити реалізацію алгоритму DIRECT в бібліотеці NLOPT, але це не дало значного покращення в порівнянні з пошуком грубої сили з точки зору кількості оцінок функцій, необхідних для необхідної точності, і були деякі атрибути.

Які ще вирішувачі глобальної оптимізації слід розглянути?


Чи можете ви обчислити градієнти, або вам потрібно буде наблизити їх за різницевими коефіцієнтами?
Арнольд Ноймаєр

Мені потрібно наблизити їх за різницевими коефіцієнтами.
Віктор,

У цьому випадку метод Ньютона не рекомендується рекомендувати, оскільки числові похідні чисельних чисельно дуже нестабільні, і їх важко налаштувати на безпечну роботу.
Арнольд Ноймаєр

@Victor May, чим ти закінчив? (Якщо ви можете опублікувати функцію, аналогічну вашій, це дійсно допоможе людям порівнювати та налаштовувати різні алгоритми.)
деніс

@ Деніс, я намагався досягти більшої швидкості з алгоритму відстеження об’єкта у відео. Вихід алгоритму був оцінкою ймовірності, щоб кожне місце зображення містило відслідковуваний об'єкт. Зображення, що містить ці оцінки ймовірності, - це функція, яку я намагався оптимізувати. Я закінчився грубим форсуванням на декількох етапах розв'язання. Для отримання додаткової інформації про відповідний алгоритм відстеження читайте статтю "Надійна відслідковування фрагментів за допомогою інтегральної гістограми".
Віктор Травень

Відповіді:


12

Я хотів би запропонувати дещо інший підхід порівняно з іншими відповідями, хоча @barron побічно обговорював те саме.

Замість того, щоб оптимізувати свою функцію безпосередньо, тобто оцінюючи її у серії точок балів, які (сподіваємось) сходяться до (локального) оптимуму, ви можете використовувати концепцію сурогатного моделювання , яка є дуже добре підходить для задач описаного типу (висока вартість, гладка, обмежена, низька розмірність, тобто менше 20 невідомих).x1,x2,,xksurrogate modelling

В Зокрема, сурогатне моделювання працює шляхом створення модельної функції вашої істинної функції F R dR . Ключовим є те, що хоч c, звичайно, не ідеально відповідає f , оцінити його набагато дешевше.cRdRfRdRcf

Отже, типовим процесом оптимізації буде такий:

  1. Оцініть за набором j початкових точок x 1 , x 2 , , x j . Зауважте, що похідні не потрібні. Також зауважте, що ці точки повинні розподілятися рівномірно по всьому простору пошуку, наприклад, за допомогою зразків латинської гіперкуби або подібної конструкції, що заповнює простір.fjx1,x2,,xj
  2. На основі цього оригінального набору даних створіть функцію моделі . Ви можете використовувати перехресну перевірку для перевірки вашої моделі (тобто, для створення c , використовуйте лише підмножину початкових j точок , а потім використовуйте решту набору даних, щоб перевірити, наскільки c спрогнозує ці значення)cjcc
  3. Використовуйте такий критерій, як критерій очікуваного вдосконалення (EI), щоб з’ясувати, де «заповнити» більше зразків, щоб зробити більш точним шляхом вибірки f . Це насправді набагато краще вивчено теоретично, ніж може здатися, і критерій ЕІ дуже добре вивчений. Критерій EI також не є жадібним критерієм, тому ви обидва отримуєте хороше загальне поліпшення точності моделі, одночасно визначаючи пріоритетність точності біля потенційних оптимізмів.cf
  4. Якщо ваша модель недостатньо точна, повторіть крок 3, інакше скористайтеся улюбленою програмою оптимізації, щоб знайти оптимум , який буде дуже дешево оцінити (так що ви можете використовувати будь-яку потрібну рутину, навіть ту, яка вимагає похідних, або просто оцініть функцію в тонкій сітці).c

Загалом, це означає EGO, Efficient Global Optimization, як запропонував @barron. Я хотів би підкреслити, що для вашого застосування це здається цілком підходящим - ви отримуєте напрочуд точну модель, засновану на порівняно мало оцінках , а потім можете використовувати будь-який алгоритм оптимізації, який ви хочете. Що часто також цікаво, це те, що тепер ви можете оцінити c на сітці та побудувати її, тим самим отримавши уявлення про загальний вигляд f . Ще один цікавий момент полягає в тому, що більшість методів сурогатного моделювання також дають статистичні оцінки помилок, що дозволяє оцінити невизначеність.fcf

Як побудувати , звичайно, є відкритим питанням, але часто використовуються моделі Кріґінга або так звані космічні карти.c

Звичайно, це все досить багато роботи з кодування, але багато інших людей зробили дуже хороші реалізації. У Matlab я знаю лише про те, що програмне забезпечення DACE програмне забезпечення DACE безкоштовне. TOMLAB також може запропонувати пакет Matlab, але коштує грошей - однак, я вважаю, що він також працює в C ++ і має набагато більше можливостей, ніж коли-небудь матиме DACE. (Примітка. Я один із розробників нової версії DACE, незабаром вийде, яка запропонує додаткову підтримку EGO.)

Сподіваємось, що цей грубий огляд вам допоміг, будь ласка, задайте питання, чи є моменти, які можна зробити більш зрозумілими або те, що я пропустив, або якщо ви хочете отримати додатковий матеріал з цього питання.


Fwiw, сурогатна модель google представляє лабораторію сурогатного моделювання в університеті в Генті та книгу інженерного дизайну через Surrogate Modeling , 2008 228p 0470770791. Проблема будь-якого дуже загального підходу полягає в тому, що незабаром у вас є кухонна мийка, повна варіантів методів, і більше ніж реальні тестові функції.
деніс


3

Для плавної функції метод Ефективна глобальна оптимізація повинен працювати досить добре і бути значно ефективнішим, ніж Пряма. Реалізації доступні в TOMLAB (я не використовував його сам) та DAKOTA (з чим я мав певний успіх).


1

Оскільки функція гладка, метод Ньютона стане переважним найбільш ефективним методом пошуку мінімуму. Оскільки функція не є опуклою, вам доведеться застосовувати звичайні хитрощі, щоб зблизити метод Ньютона (модифікація Левенберга-Маркварда, пошук ліній або довіряючий регіон для глобалізації). Якщо ви не можете отримати похідні функції, спробуйте або обчислити її за допомогою обмежених відмінностей, або скористайтеся оновленням BFGS. Якщо ви підозрюєте, що в проблемі є більше одного локального мінімуму, можна було б просто запустити метод Ньютона з купки випадкових чи не зовсім випадкових обраних точок і подивитися, куди вони сходяться.


Моя проблема справді має місцеві мінімуми. Які існують методи вибору вихідних точок?
Віктор

1
Якщо ви нічого не знаєте про проблему, статистичний вибірки - це, по суті, ваш єдиний вибір.
Вольфганг Бангерт

@Wolfgang: Будь-які ідеї, як підійти до "статистичної вибірки"? Просто спробуйте 10, 100, ... випадкові початкові здогадки? Чи є "жорсткіші" підходи? Запитую , бо у мене більш-менш схожа проблема (див. Scicomp.stackexchange.com/q/4708/1789 )
Андре

Все залежить від того, що ви знаєте про функцію. Якщо ви знаєте щось на зразок "типової шкали довжини" для вашої функції, це б вказувало на те, наскільки далеко буде відокремлена локальна екстремальність. Це також дасть вам інформацію про те, з яких пунктів ви можете почати, і наскільки далеко вони повинні вибирати один одного.
Вольфганг Бангерт

0

Оскільки ваші оцінки дорогі, вам потрібно скористатися паралельним проведенням оцінок функцій декількох.

Я рекомендую вам поглянути на цей код . Математика позаду описується тут .


1
цей код і стаття написані вами? Якщо так, то ви можете прямо сказати так у своїй відповіді? Також зараз ви можете покращити відповідь, надавши опис вашої пропозиції.
nicoguaro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.