Алгоритми паралельної оптимізації для проблеми з дуже дорогою цільовою функцією


15

Я оптимізую функцію 10-20 змінних. Погана новина полягає в тому, що кожна оцінка функції дорога, приблизно 30 хв послідовних обчислень. Хороша новина полягає в тому, що в мене є кластер з кількома десятками обчислювальних вузлів.

Отже, питання: чи доступні алгоритми оптимізації, які дозволять мені ефективно використовувати всю цю обчислювальну потужність?

З одного боку спектру був би вичерпний пошук: розділити весь простір пошуку на тонку сітку і обчислити функцію в кожній точці сітки незалежно. Це, звичайно, дуже паралельне обчислення, але алгоритм жахливо неефективний.

З іншого боку спектру були б квазі-ньютонські алгоритми: інтелектуально оновлюйте наступну оцінку параметрів на основі попередньої історії. Це ефективний алгоритм, але я не знаю, як зробити його паралельним: поняття "оцінка параметрів на основі попередньої історії" звучить як послідовне обчислення.

Квадратичні алгоритми здаються десь посередині: можна побудувати початкову "сурогатну модель", обчисливши купу значень паралельно, але я не знаю, чи можна паралелізувати решта ітерацій.

Будь-які пропозиції щодо того, які методи оптимізації без градієнтів могли б працювати на кластері? Також, чи є в даний час паралельні реалізації алгоритмів оптимізації?


1
Ви завжди можете обчислити градієнт паралельно (для методів квазі-Ньютона з використанням кінцевих різниць) і отримати швидкість, пропорційну кількості параметрів, тобто 10x-20x.
stali

@stali: для оптимізації вам потрібен гессіан для квазі-ньютонівських методів. Обчислити гессіана за допомогою кінцевих відмінностей оцінок функцій насправді не є хорошою ідеєю. Обчислення граничних різницьких наближень градієнта для оптимізації також, як правило, не є хорошою ідеєю.
Джефф Оксберрі

Багато квазі-ньютонських методів, таких як BFGS, не вимагають від гессіанців явно. Я думаю, використовуючи градієнти, в поєднанні з L-BFGS ОП може швидко досягти того, що він хоче.
stali

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

Це більш доречно коментар, а не відповідь. Але у мене немає вибору, оскільки мені не вистачає представника, щоб розмістити коментар. Майкл, у мене дуже схожий тип проблеми: дорогі оцінки функцій, які передбачають складне моделювання, що працює на кластері. Ви коли-небудь знаходили код, придатний для оптимізації роботи, коли оцінка функції передбачає моделювання на кластері?
MoonMan

Відповіді:


16

Як зазначає Павло, без більшої інформації важко давати поради без припущень.

З 10-20 змінних та дорогих оцінок функцій тенденція полягає в тому, щоб рекомендувати алгоритми оптимізації без похідних. Я рішуче не погоджуюся з порадою Павла: вам, як правило, потрібен градієнт точного градієнта, якщо ви не використовуєте якийсь спеціальний метод (наприклад, стохастичний градієнтний спуск в машинному навчанні не буде використовувати форму мети, щоб створити розумну градієнтні оцінки).

Кожен квазі-ньютонівський крок має форму:

Н~(хк)гк=-f(хк),

де - деяке наближення матриці Гессі, d k - напрямок пошуку, x k - значення змінних рішень на поточному ітераті, f - ваша цільова функція, і f - градієнт вашої цілі, і Змінні рішення оновлюються як x k + 1 = x k + α k d k , де α kН~гкхкffхк+1=хк+αкгкαк- розмір кроку, визначений певним чином (наприклад, пошук рядків). Ви можете піти певним чином з наближенням гессієна, і ваші ітерації будуть збігатися, хоча якщо ви використовуєте щось на кшталт кінцевих наближень гессіянської різниці через точні градієнти, ви можете страждати від проблем через неправильне кондиціонування. Як правило, гессіанський апроксимується за допомогою градієнта (наприклад, методи типу BFGS з оновленнями гессенського рівня 1).

Наближення гессі та градієнта як через кінцеві відмінності є поганою ідеєю з кількох причин:

  • у вас буде помилка в градієнті, тому метод квазі-Ньютона, який ви застосовуєте, схожий на пошук кореня галасливої ​​функції
  • NN
  • якщо ви маєте помилку в градієнті, у вас буде більше помилок у вашому гессі, що є великою проблемою з точки зору кондиціонування лінійної системи
  • N2

Отже, щоб отримати одну погану ітерацію квазі-Ньютона, ви робите щось на кшталт до 420 оцінок функції за 30 хвилин за оцінку, що означає, що ви або будете чекати деякий час на кожну ітерацію, або збираєтесь потрібен великий кластер саме для оцінки функцій. Дійсні лінійні рішення будуть мати 20 на 20 матриць (максимум!), Тож немає підстав для їх паралелізації. Якщо ви можете отримати інформацію про градієнт, наприклад, вирішивши суміжну проблему, то, можливо, це буде доцільніше, в такому випадку, можливо, варто переглянути книгу на зразок Nocedal & Wright.

Якщо ви збираєтеся робити паралельно багато оцінок функцій, слід замість цього шукати сурогатні підходи моделювання або генерувати задані методи пошуку, перш ніж розглядати квазі-ньютонські підходи. Класичні оглядові статті - це Ріос та Сахінідіс щодо методів , що не містять похідних , який був опублікований у 2012 році та дає справді хороше, широке порівняння; стаття з бенчмаркінгу від More and Wild від 2009 року; підручник 2009 р. "Введення в оптимізацію без похідних" Конна, Шейнберга та Вісенте; та оглядова стаття про створення методів пошуку набору Колдою, Льюїсом та Торкзоном з 2003 року.

Як зазначено вище, програмний пакет DAKOTA реалізує деякі з цих методів, і НЛОПТ , який реалізує DIRECT, та кілька методів сурогатного моделювання Пауелла. Ви також можете поглянути на MCS ; це написано на MATLAB, але, можливо, ви можете перенести реалізацію MATLAB на обрану вами мову. По суті, DAKOTA - це набір сценаріїв, які ви можете використовувати для запуску дорогого моделювання та збору даних для алгоритмів оптимізації, а NLOPT має інтерфейси на великій кількості мов, тому вибір мови програмування не повинен бути серйозною проблемою при використанні жодного програмного пакету; DAKOTA, однак, потребує певного часу, щоб навчитися, і має величезну кількість документації для просіювання.


2
Мені приємно абсолютно помилятися і дізнаватися щось нове і корисне в процесі :).
Пол

Спасибі! Ще одне уточнення: який із цих алгоритмів може паралельно проводити оцінку функцій? Наприклад, на k-напрямку сітки, що виконує ітерації n + 1, ..., n + k, засновані лише на інформації, отриманій з ітерацій 1, ..., n?
Майкл

к

3

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

Думаю, для вирішення вашої проблеми може бути використаний метод переслідування вибірки . Цей алгоритм використовує сурогатну модель RBF для наближення дорогої цільової функції та може вирішувати нелінійні обмеження. Що ще важливіше, він вибирає декількох кандидатів для того, щоб зробити дорогі оцінки функцій, щоб ви могли розподілити цих кандидатів на паралельні обчислення для подальшого прискорення процесу пошуку. Код з відкритим кодом та записаний у MATLAB.

Довідково

Ван, Л., Шань, С., І Ванг, Г. Г. (2004). Метод вибіркового методу для глобальної оптимізації для дорогих функцій чорного поля. Інженерна оптимізація, 36 (4), 419-438.


2

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

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


0

Вибір алгоритму оптимізації (а отже, його паралелізація) сильно залежить від властивостей цільової функції та обмежень. Не знаючи більше про проблему, важко дати будь-які змістовні поради.

Але з ваших міркувань щодо методів Ньютона я роблю висновок, що ваша цільова функція відрізняється. Якщо можливо, ваша проблема отримала б велику користь від паралельного оцінювання функції. Якщо це неможливо, то ви також можете розглянути неточний метод ньютона, який замінює точні градієнти / гессіани скінченними різницевими наближеннями. Потім ви можете використовувати всі ці процесори у вашому розпорядженні для обчислення кожного ненульового елемента якобі, як @stali пропонує.

Для отримання додаткової інформації читайте чисельну оптимізацію Nocedal & Wright, глава 7 . Існує багато програмних пакетів для оптимізації, які реалізують це паралельно. Серед найбільш поширених безкоштовних програм - програмний пакет DAKOTA (Національні лабораторії Sandia) .


5
N

-2

Ось вирішення вашої проблеми.

Опис математичного методу наведено в цій роботі .


3
Ласкаво просимо до SciComp.SE. Чи можете ви надати детальну інформацію про підхід, описаний у статті та реалізований у програмному забезпеченні? Який метод використовується? Чому це добре? Що передбачено в такому підході, що інші відповіді не охоплюють?
nicoguaro

2
Також здається, що це ваша власна робота. Якщо це правда, просимо зазначити це прямо у своїй відповіді.
nicoguaro

@nicoguaro: дякую, але я знаю, як натискати на посилання.
Майкл

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