Розмір кроку адаптивного градієнта, коли неможливо здійснити пошук рядка


9

У мене є об'єктивна функція залежна від значення , де є рішенням PDE. Я оптимізую за градієнтним спуском за початковою умовою PDE: . Тобто я оновлюю і потім мушу інтегрувати PDE для обчислення моєї залишкової. Це означає, що якби я здійснив пошук рядка для розміру кроку градієнта спуску (називаємо це ), для кожного потенційного значення я повинен був би знову інтегрувати PDE.Eϕ(x,t=1.0)ϕ(x,t)Eϕ(x,t=0.0)ϕ(x,t=0.0)αα

У моєму випадку це було б надзвичайно дорого. Чи є інший варіант розміру кроку адаптивного градієнта спуску?

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

Дякую!


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

З іншого боку, метод BB (який я не був знайомий) здається досить непоганим; все, що я маю це зробити, щоб відстежувати стан і градієнт попередньої ітерації, і я отримую наближення другого порядку ... це здається дуже приємним. Однак деривація передбачає опуклу квадратику, і моя проблема майже точно не є. Хоча я, безумовно, знаходжу (і задоволений) місцевими, а не глобальними мінімумами. Чи знаєте ви, наскільки добре BB виступав у дуже високих задачах?
NLi10Me

Я думаю, що я мав на увазі місцеві мінімуми, це те, що, поряд з місцевим мінімумом, функція не є приблизно квадратичною? Я думаю, що мій початковий стан достатньо близький до мінімуму, оскільки для багатьох випадків я отримую плавне зближення навіть зі статичним розміром кроку. Тож, хоч це дуже високий розмір, і взагалі, якщо врахувати весь простір пошуку, проблема неконвексована / не квадратична, чи може ББ все-таки бути хорошим вибором без пошуку рядків? ϕ(0)(x,t=0.0)
NLi10Me

Інші "інгредієнти" для це експериментальні дані зображення. намагається перевернути одне зображення, щоб "відповідати" іншому (вимірюється деяким відповідним функціоналом, таким як норма L2, інтегрована у вокселі). Для деяких пар зображень я отримую плавне зближення з (мій поточний вибір) статичним розміром кроку. Для інших пар зображень я отримую багато коливальних. Система повинна бути повністю автоматизована, тому я не можу повернутися назад і вручну редагувати розмір кроку для проблемних пар зображень. Eϕ(x,t=1.0)
NLi10Me

Правильно, мені доводиться вирішувати суміжну систему, щоб отримати градієнт (що є більш гнусною системою і займає більше часу). Гаразд, я думаю, я спробую BB із зворотним пошуком ліній. Дуже дякую за пораду; моїх радників часто важко знайти, і багато з них не зацікавлені у впровадженні настільки, як просто модель. Я вважаю, що числові методи є найважливішим компонентом для демонстрації того, чи є модель в першу чергу хорошою чи ні, тому ще раз дякую, я дуже ціную це.
NLi10Me

Відповіді:


15

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

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

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

Однією з можливостей є використання довжини кроків Барзілай - Борвейна (див., Наприклад, Флетчер: Про метод Барзілай-Борвейна . Оптимізація та управління додатками, 235–256, Appl. Optim., 96, Springer, New York, 2005 ). Ідея полягає у використанні скінченної різниці наближення кривизни вздовж напрямку пошуку, щоб отримати оцінку розміру кроку. Зокрема, виберіть довільно, встановіть а потім для :α0>0g0:=f(x0)k=0,...

  1. Встановіть іsk=αk1gkxk+1=xk+sk
  2. Оцініть і встановітьgk+1=f(xk+1)yk=gk+1gk
  3. Установітьαk+1=(yk)Tyk(yk)Tsk

Цей вибір може бути показаний для зближення (на практиці дуже швидко) для квадратичних функцій, але збіжність не є монотонною (тобто значення функції може бути більшим, ніж , але лише раз; див. сюжет на сторінці 10 у папері Флетчера). Для неквадратичних функцій вам потрібно поєднувати це з пошуком рядків, який потрібно змінити, щоб мати справу з немонотонністю. Однією з можливостей є вибір (наприклад, шляхом зворотного відстеження) таким, що де - типовий параметр Armijo іf(xk+1)f(xk)σk(0,αk1)

f(xkσkgk)maxmax(kM,1)jkf(xj)γσk(gk)Tgk,
γ(0,1)Mконтролює ступінь монотонності (наприклад, ). Існує також варіант, який використовує значення градієнта замість значень функції, але у вашому випадку градієнт оцінити навіть дорожче, ніж функцію, так що тут немає сенсу. (Примітка. Ви, звичайно, можете спробувати сліпо прийняти довжину кроків BB і довіряти вашій удачі, але якщо вам потрібна якась міцність - як ви писали у коментарях - це було б дуже поганою ідеєю.)M=10

Альтернативним (і, на мою думку, набагато кращим) підходом було б використання цього скінченного наближення різниці вже при обчисленні напрямку пошуку; це називається методом квазі-Ньютона . Ідея полягає в поступовому побудові апроксимації гессіанського , використовуючи різниці градієнтів. Наприклад, ви можете взяти (матриця ідентичності), а для вирішити і встановіть з як вище, і . (Це називається оновленням Бройдена2f(xk)H0=Idk=0,

(1)Hksk=gk,
Hk+1=Hk+(ykHksk)T(sk)T(sk)Tsk
ykxk+1=xk+skі рідко використовується на практиці; кращим, але трохи складнішим оновленням є оновлення BFGS , для якого - і більше інформації - я посилаюся на книгу Нумедала та Райт Числова оптимізація .) Мінус полягає в тому, що а) для цього потрібно вирішити лінійну систему на кожному кроці (але тільки розмір невідомого, який у вашому випадку є початковою умовою, отже, зусилля повинні домінувати при вирішенні PDE, щоб отримати градієнт; також існують правила оновлення для наближень оберненого гессіана, які вимагають лише обчислення однієї матриці -векторний продукт) і б) вам все одно потрібен пошук рядків, щоб гарантувати конвергенцію ...

На щастя, в цьому контексті існує альтернативний підхід, який використовує кожну оцінку функції. Ідея полягає в тому, що для симетричного та позитивного визначеного (що гарантується для оновлення ) розв’язування еквівалентно мінімізації квадратичної моделі У методі області довіри ви зробите це з додатковим обмеженням, що , де - це належним чином обраний радіус області довіри (який відіграє роль довжини кроку ). Основна ідея полягає в тому, щоб вибрати цей радіус адаптивно, виходячи з обчисленого кроку. Зокрема, ви дивитесь на співвідношення Hk(1)

qk(s)=12sTHks+sTgk.
sΔkΔkσk
ρk:=f(xk)f(xk+sk)f(xk)qk(sk)
фактичного та передбачуваного зменшення значення функції. Якщо дуже маленький, ваша модель погана, і ви відкиньте і повторіть спробу з . Якщо близький до , ваша модель хороша, і ви встановлюєте і збільшуєте . Інакше ви просто встановите і залишите спокої. Для обчислення фактичного мінімізатора ofρkskΔk+1<Δkρk1xk+1=xk+skΔk+1>Δkxk+1=xk+skΔkskminsΔkqk(s), існує кілька стратегій, щоб уникнути необхідності вирішення повної обмеженої проблеми оптимізації; мій улюблений - урізаний метод СГ Steihaug . Для більш детальної інформації я знову звертаюся до Ноцедала та Райт.

Я просто зараз на це знову дивлюся і розумію, що у мене є питання. На кроці третьому для методу BB у вас є ; де і . Чисельник та знаменник у виразі для виглядають як внутрішні добутки. У моєму випадку , де - векторний простір з нетривіальною римановою метрикою: K. Тобто . Чи впливає це на визначення ? αk+1=(yk)Tyk(yk)Tskyk=gk+1gksk=αk1gkαk+1gkVVgk,gkV=gk,KgkL2αk+1
NLi10Me

Так, якщо у вас є нетривіальна векторна структура простору, ви повинні це дотримуватися в алгоритмах. Зокрема, слід розрізняти внутрішні добутки двох функцій в одному просторі (наприклад, і ) та продукти подвійності між функцією в просторі і одиницею в подвійному просторі (наприклад, і ) - для останнього вам потрібно включити відображення Riesz, щоб перетворити його спочатку на внутрішній продукт. (Це можна трактувати як попередню умову.)ykукскук
Крістіан Класон

Докторе Класоне, я подаю документ до ISBI 2017, в якому детально описую деякі експерименти, які я здійснив, використовуючи метод пошуку лінії BB + для виконання завдання щодо реєстрації диференційованих зображень. Чи хотіли б ви бути автором включені до рукопису? Я ще цього не написав, але я маю більшість експериментів як завершених, так і триваючих. Будь ласка, дай мені знати.
NLi10Me

@ NLi10Me Дякую за добру пропозицію, але я не зробив нічого, що заслуговувало б співавторства - все, що я написав, є стандартним матеріалом підручника. Якщо ви сильно ставитесь до цього, ви можете подякувати мені за "корисні зауваження щодо (що б це не допомогло)", але навіть не те, що потрібно. Знаючи, що те, що я написав, було корисним, достатньо!
Крістіан Класон

1
Вибачте, ви маєте рацію, це виправлена ​​помилка! (Умова Armijo часто записується як , де - напрямок пошуку - не обов'язково від'ємний градієнт - і розмір кроку, який повинен зрозуміти, що відбувається.)f(х+σс)-f(х)γf(х)Т(σс)сσ
Крістіан Класон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.