Допоможіть вирішити між кубічною та квадратичною інтерполяцією в пошуку рядків


9

Я виконую пошук рядків як частина алгоритму квазі-Ньютона BFGS. На одному кроці пошуку рядків я використовую кубічну інтерполяцію, щоб перейти ближче до локального мінімізатора.

Нехай є цікавою функцією. Я хочу знайти такий , що .f:RR,fC1xf(x)0

Нехай , , і . Припустимо також . Я поміщаю кубічний многочлен так що , , і .f(xk)f(xk)f(xk+1)f'(хк+1)0хк<х<хк+1Q(х)=ах3+бх2+cх+гQ(0)=f(хк)Q'(0)=f'(хк)Q(хк+1-хк)=f(хк+1)Q'(хк+1-хк)=f'(хк+1)

Я вирішую квадратичне рівняння: для мого шуканого використовуючи рішення закритої форми.(1):Q'(х-хк)=0х

Вищезазначене працює в більшості випадків, за винятком випадків, коли оскільки рішення закритої форми для (1) ділиться на a, яке стає дуже близьким до 0 .f(х)=О(х2)(1)а0

Моє рішення полягає в тому, щоб подивитися на а і якщо він "занадто малий", просто прийняти рішення закритої форми для мінімізатора квадратичного многочлена Q2(х)=бх2+cх+г для якого у мене вже є коефіцієнти б,c,г від попереднього пристосування до Q(х) .

Моє запитання: як я розробити хороший тест на те, коли взяти квадратичну інтерполяцію над кубічною? Наївний підхід до тестування на а0 поганий через чисельні причини, тому я дивлюсь на |а|<ϵτ де ϵ - це машинна точність, але я не в змозі визначитися з хорошим τ , масштабним інваріантним f .

Питання про бонус: Чи є якісь числові питання з використанням коефіцієнтів б,c,г від невдалого кубічного прилягання чи я повинен виконати нову квадратичну підгонку відповідним способом обчислення коефіцієнтів?

Редагувати для уточнення: У моєму питанні - це те, що в літературі зазвичай називають . Я просто спростив постановку питання. Проблема оптимізації, яку я вирішую, є нелінійною у 6 вимірах. І я добре усвідомлюю, що умов Вулфа достатньо для пошуку рядків BFGS, отже, заявляючи, що мене цікавить ; Я шукаю те, що задовольнить сильні умови Вулфа, і прийняття мінімізатора кубічного наближення є гарним кроком на цьому шляху.fϕ(α)=f(х¯к+αpк¯)f'(х)0

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

Редагувати 2: Оновити позначення, рівняння не змінюються.

Відповіді:


4

Хм ... кубічна інтерполяція не є нечуваною для пошуку рядків, але, як правило, перевищення рівня.

Якщо я правильно читаю вашу проблему, - просто скаляр? У цьому випадку BFGS, мабуть, не є найбільш ефективним способом вирішення вашої проблеми. Скаральні алгоритми оптимізації, такі як метод Брента, швидше за все, вирішать вашу проблему.x

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

У будь-якому випадку, щоб реально відповісти на ваше запитання: я б розглядав можливість просто перейти на квадратичний многочлен, якщо розв'язання кубічного дасть «погані» значення, такі як NaN або Inf (як це робиться тут ).

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

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

Сподіваюсь, це допомагає.


Відредаговано для наочності. З допомогоюб,c,г"Я маю на увазі, що я кубічно підходив Q(х)=ах3+бх2+cх+г і виявив, що а0 таким чином я маю Q(х)=бх2+cх+гщо вже є квадратичним многочленом. І питання було, чи коефіцієнтиб,c,гОтримані для цього пристосування доцільно використовувати для здійснення інтерполяції або якщо я повинен перерахувати нові коефіцієнти для типової квадратичної форми.
Емілі Л.

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

Чи можете ви мотивувати свою відповідь обчисленням кубічного і перевіряючи на "погані" значення? Чому це безпечно робити, колиа<<б або а0?
Емілі Л.

Коли а0, б,c і гбуде приблизно рівним для квадратичного випадку. Оскільки пошуковий запит BFGS є досить надійним, вам слід користуватися ними, навіть якщо вони не зовсім точні. Поки ви дотримуєтесь умов Вулфа, ви отримаєте конвергенцію. Що стосується «поганих» значень, то поки комп'ютер може точно робити розрахунки до потрібної точності, все добре. Коли цього не вдасться, ви почнете бачити інф та NaN.
Л.Клевін

4

Про це пише стаття Море, реалізована Nocedal:

Хорхе Дж. Море та Девід Дж. Тюнте. 1994. Лінійні алгоритми пошуку з гарантованим достатнім зменшенням. ACM Trans. Математика. Softw. 20, 3 (вересень 1994 р.), 286-307. DOI http://dx.doi.org/10.1145/192115.192132 ( передрук ).


Ласкаво просимо до SciComp.SE! Я відформатував вашу публікацію, щоб легше було знайти папір. Якщо ви можете знайти посилання на реалізацію Nocedal, це було б корисно.
Крістіан Класон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.