Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
непрмо_коды программ.docx
Скачиваний:
0
Добавлен:
24.01.2026
Размер:
6.17 Mб
Скачать

Классификация методов

1. Градиентные методы (1-го порядка)

Градиентный спуск: x_{k+1} = x_k - α·∇f(x_k)

Наискорейший спуск: с точным линейным поиском

Армихо: с условием достаточного убывания

Плюсы: Просты, мало памяти, глобальная сходимость

Минусы: Медленные (линейная сходимость)

Применение: Большие задачи, deep learning

2. Методы Ньютона (2-го порядка)

Ньютона: x_{k+1} = x_k - H⁻¹·∇f(x_k)

Левенберга-Марквардта: x_{k+1} = x_k - (H + λI)⁻¹·∇f(x_k)

Доверительных областей: решает min m(p) в шаре ||p|| ≤ Δ

Плюсы: Быстрые (квадратичная сходимость)

Минусы: Требуют гессиан, дорогая итерация O(n³), локальная сходимость

Применение: Средние задачи, точные вычисления

3. Квази-Ньютоновские методы

DFP: H_{k+1} = H_k + (Δx·Δxᵀ)/(Δxᵀ·Δg) - (H_k·Δg·Δgᵀ·H_k)/(Δgᵀ·H_k·Δg)

BFGS: B_{k+1} = B_k + (Δg·Δgᵀ)/(Δgᵀ·Δx) - (B_k·Δx·Δxᵀ·B_k)/(Δxᵀ·B_k·Δx)

L-BFGS: хранит только m последних пар {Δx, Δg}

Плюсы: Сверхлинейная сходимость, не требуют гессиан

Минусы: Требуют O(n²) памяти (кроме L-BFGS)

Применение: Большинство практических задач

4. Методы сопряжённых градиентов

Флетчера-Ривса: β_k = (∇f_{k+1}ᵀ·∇f_{k+1})/(∇f_kᵀ·∇f_k)

Полака-Рибьера: β_k = (∇f_{k+1}ᵀ·(∇f_{k+1}-∇f_k))/(∇f_kᵀ·∇f_k)

Хестенеса-Штифеля: β_k = (∇f_{k+1}ᵀ·(∇f_{k+1}-∇f_k))/(d_kᵀ·(∇f_{k+1}-∇f_k))

Плюсы: Мало памяти O(n), для больших задач

Минусы: Медленнее квази-Ньютона, для квадратичных - конечная сходимость

Применение: Очень большие задачи (n > 10⁶)

5. Специальные методы

Барзилая-Борвейна: α_k = (Δxᵀ·Δx)/(Δxᵀ·Δg) или (Δxᵀ·Δg)/(Δgᵀ·Δg)

Нестерова-Немировского: y_k = x_k + β_k·(x_k - x_{k-1}); x_{k+1} = y_k - α·∇f(y_k)

Плюсы: Просты, эффективны для специфичных задач

Минусы: Не универсальны

Применение: BB - для задач с диагональным гессианом, Нестеров - для выпуклых

Сравнение по ключевым параметрам

1. Скорость сходимости

Быстрее всего: Ньютона, доверительных областей (квадратичная)

Быстро: BFGS, L-BFGS, DFP (сверхлинейная)

Умеренно: ББ, сопряжённые градиенты

Медленно: Градиентный спуск (линейная)

2. Использование памяти

Мало (O(n)): Градиентные, сопряжённые градиенты, ББ, L-BFGS (ограниченная память)

Много (O(n²)): Ньютона, DFP, BFGS (полная память)

3. Вычислительная сложность итерации

Дорого (O(n³)): Ньютона (решение СЛАУ)

Умеренно (O(n²)): BFGS, DFP (обновление матрицы)

Дёшево (O(n)): Градиентные, сопряжённые градиенты

4. Надежность и устойчивость

Высокая: Доверительных областей, Армихо, градиентный спуск

Средняя: BFGS, L-BFGS, сопряжённые градиенты

Низкая: Ньютона (чувствителен к начальной точке)

5. Требования к функции

Строгие: Ньютона (гладкость C²)

Умеренные: Квази-Ньютона (C¹)

Минимальные: Градиентные (C¹ или даже субградиенты)

Практические рекомендации

Выбор метода по размеру задачи:

Малые задачи (n < 100):

Ньютона или доверительных областей - для точности

BFGS - для универсальности

Средние задачи (100 < n < 1000):

L-BFGS (m=5-20) - оптимальный выбор

BFGS - если памяти достаточно

Большие задачи (n > 1000):

L-BFGS с небольшим m

Сопряжённые градиенты (Полака-Рибьера)

Градиентный спуск с ускорением Нестерова

Очень большие задачи (n > 10⁶):

Стохастический градиентный спуск (SGD)

AdaGrad/RMSProp/Adam для нейросетей

По типу функции:

Квадратичные:

Сопряжённые градиенты (конечная сходимость за n шагов)

Ньютона (точное решение за 1 шаг)

Выпуклые гладкие:

Нестерова-Немировского (оптимальная скорость O(1/k²))

BFGS/L-BFGS

Нелинейные МНК:

Левенберга-Марквардта (специализированный)

Доверительных областей

Негладкие/невыпуклые:

Градиентный спуск с Армихо

Субградиентные метод

ИЗ ЧЕРНОГО ЧАТА ЧТОБЫ СРАВНИТЬ ПОТОМ

Метод

Производные

Порядок сходимости

Память

Устойчивость

Скорость

Комментарий

Градиентный спуск

∇f

линейная

O(n)

⭐⭐⭐⭐⭐

базовый, медленный

Наискорейший спуск

∇f + line search

линейная

O(n)

⭐⭐⭐⭐

⭐⭐

лучше ГС, но зигзаги

Ньютон (многомерный)

∇f, ∇²f

квадратичная

O(n²)

⭐⭐

⭐⭐⭐⭐⭐

очень быстрый локально

Левенберг–Марквардт

∇f, ∇²f

от линейной к квадр.

O(n²)

⭐⭐⭐⭐

⭐⭐⭐⭐

стабилизированный Ньютон

Нестерова–Немировского

∇f

O(1/k²)

O(n)

⭐⭐⭐

⭐⭐⭐

ускоренный ГС

BB1

∇f

сверхлинейная (практ.)

O(n)

⭐⭐⭐

⭐⭐⭐

агрессивный шаг

BB2

∇f

сверхлинейная

O(n)

⭐⭐⭐⭐

⭐⭐⭐

более стабильный

Флетчер–Ривс

∇f

сверхлинейная

O(n)

⭐⭐⭐⭐

⭐⭐⭐⭐

устойчивый CG

Хестенес–Штифель

∇f

сверхлинейная

O(n)

⭐⭐⭐

⭐⭐⭐⭐

быстрый, но чувствит.

Дай–Юан

∇f

сверхлинейная

O(n)

⭐⭐⭐⭐⭐

⭐⭐⭐

лучший по устойчивости

Полак–Рибьер

∇f

сверхлинейная

O(n)

⭐⭐⭐

⭐⭐⭐⭐

часто быстрее FR

Армихо

∇f

⭐⭐⭐⭐⭐

стратегия выбора шага

DFP

∇f

суперлинейная

O(n²)

⭐⭐⭐

⭐⭐⭐

устаревший

BFGS

∇f

суперлинейная

O(n²)

⭐⭐⭐⭐⭐

⭐⭐⭐⭐⭐

золотой стандарт

L-BFGS

∇f

суперлинейная

O(nm)

⭐⭐⭐⭐⭐

⭐⭐⭐⭐

для больших n

Доверительные области

∇f (+ модель)

гарантированная

O(n²)

⭐⭐⭐⭐⭐

⭐⭐⭐

самый надёжный