Классификация методов
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²) |
⭐⭐⭐⭐⭐ |
⭐⭐⭐ |
самый надёжный |
