Почну з загального зауваження: інформація першого порядку (тобто, використовуючи лише градієнти, що кодують нахил) може дати вам лише інформацію про спрямованість: це може сказати вам, що значення функції зменшується в напрямку пошуку, але не на скільки часу . Щоб вирішити, як далеко йти по напрямку пошуку, вам потрібна додаткова інформація (спуск градієнта з постійною довжиною кроку може вийти з ладу навіть при опуклих квадратичних задачах). Для цього у вас є два варіанти:
- Використовуйте інформацію другого порядку (яка кодує кривизну), наприклад, використовуючи метод Ньютона замість спуску градієнта (для якого завжди можна використовувати довжину кроку досить близьку до мінімізатора).1
- Пробні та помилкові (під якими я, звичайно, маю на увазі використання правильного пошуку в рядках, наприклад, Armijo).
Якщо, коли ви пишете, у вас немає доступу до другого похідного, і оцінювання функціональної функції є дуже дорогим, ваша єдина надія - це піти на компроміс: використовуйте достатню приблизну інформацію другого порядку, щоб отримати хорошу довжину кроку кандидата таким чином, що рядок для пошуку потрібні лише оцінки (тобто максимум (мала) константа, кратна зусиллям, необхідним для оцінки вашого градієнта).O(1)
Однією з можливостей є використання довжини кроків Барзілай - Борвейна (див., Наприклад, Флетчер: Про метод Барзілай-Борвейна . Оптимізація та управління додатками, 235–256, Appl. Optim., 96, Springer, New York, 2005 ). Ідея полягає у використанні скінченної різниці наближення кривизни вздовж напрямку пошуку, щоб отримати оцінку розміру кроку. Зокрема, виберіть довільно, встановіть а потім для :α0>0g0:=∇f(x0)k=0,...
- Встановіть іsk=−α−1kgkxk+1=xk+sk
- Оцініть і встановітьgk+1=∇f(xk+1)yk=gk+1−gk
- Установітьαk + 1=(ук)Тук(ук)Тск
Цей вибір може бути показаний для зближення (на практиці дуже швидко) для квадратичних функцій, але збіжність не є монотонною (тобто значення функції може бути більшим, ніж , але лише раз; див. сюжет на сторінці 10 у папері Флетчера). Для неквадратичних функцій вам потрібно поєднувати це з пошуком рядків, який потрібно змінити, щоб мати справу з немонотонністю. Однією з можливостей є вибір (наприклад, шляхом зворотного відстеження) таким, що
де - типовий параметр Armijo іf(хk + 1)f(хк)σк∈ ( 0 ,α- 1к)
f(хк-σкгк) ≤максmax ( k - M, 1 ) ≤ j ≤ kf(хj) - γσк(гк)Тгк,
γ∈ ( 0 , 1 )Мконтролює ступінь монотонності (наприклад, ). Існує також варіант, який використовує значення градієнта замість значень функції, але у вашому випадку градієнт оцінити навіть дорожче, ніж функцію, так що тут немає сенсу. (Примітка. Ви, звичайно, можете спробувати сліпо прийняти довжину кроків BB і довіряти вашій удачі, але якщо вам потрібна якась міцність - як ви писали у коментарях - це було б дуже поганою ідеєю.)
М= 10
Альтернативним (і, на мою думку, набагато кращим) підходом було б використання цього скінченного наближення різниці вже при обчисленні напрямку пошуку; це називається методом квазі-Ньютона . Ідея полягає в поступовому побудові апроксимації гессіанського , використовуючи різниці градієнтів. Наприклад, ви можете взяти (матриця ідентичності), а для вирішити
і встановіть
з як вище, і . (Це називається оновленням Бройдена∇2f(хк)Н0= Я дk = 0 , …
Нкск= -гк,(1)
Нk + 1=Нк+(ук-Нкск)Т(ск)Т(ск)Тск
укхk + 1=хк+скі рідко використовується на практиці; кращим, але трохи складнішим оновленням є оновлення
BFGS , для якого - і більше інформації - я посилаюся на книгу Нумедала та Райт
Числова оптимізація .) Мінус полягає в тому, що а) для цього потрібно вирішити лінійну систему на кожному кроці (але тільки розмір невідомого, який у вашому випадку є початковою умовою, отже, зусилля повинні домінувати при вирішенні PDE, щоб отримати градієнт; також існують правила оновлення для наближень
оберненого гессіана, які вимагають лише обчислення однієї матриці -векторний продукт) і б) вам все одно потрібен пошук рядків, щоб гарантувати конвергенцію ...
На щастя, в цьому контексті існує альтернативний підхід, який використовує кожну оцінку функції. Ідея полягає в тому, що для симетричного та позитивного визначеного (що гарантується для оновлення ) розв’язування еквівалентно мінімізації квадратичної моделі
У методі області довіри ви зробите це з додатковим обмеженням, що , де - це належним чином обраний радіус області довіри (який відіграє роль довжини кроку ). Основна ідея полягає в тому, щоб вибрати цей радіус адаптивно, виходячи з обчисленого кроку. Зокрема, ви дивитесь на співвідношення
Нк(1)
qк( s ) =12сТНкs +сТгк.
∥ s ∥ ≤ΔкΔкσкρк: =f(хк) - ф(хк+ск)f(хк) -qк(ск)
фактичного та передбачуваного зменшення значення функції. Якщо дуже маленький, ваша модель погана, і ви відкиньте і повторіть спробу з . Якщо близький до , ваша модель хороша, і ви встановлюєте і збільшуєте . Інакше ви просто встановите і залишите спокої. Для обчислення фактичного мінімізатора of
ρкскΔk + 1<Δкρк1хk + 1=хк+скΔk + 1>Δкхk + 1=хк+скΔкскхв∥ s ∥ ≤Δкqк( и ), існує кілька стратегій, щоб уникнути необхідності вирішення повної обмеженої проблеми оптимізації; мій улюблений -
урізаний метод СГ Steihaug . Для більш детальної інформації я знову звертаюся до Ноцедала та Райт.