Оптимизация
Методы второго порядка
Ньютон, natural gradient, Фишер — почему они лучше и почему их всё равно не используют
Ньютон
Градиентный спуск использует линейное приближение функции. Метод Ньютона — квадратичное:
Вывод в одну строку: приблизим квадратикой в точке и прыгнем сразу в её минимум. Отсюда главное свойство: на квадратичной функции Ньютон попадает в минимум за один шаг из любой точки, независимо от обусловленности.
Проверено: при , и даже ответ достигается за одну итерацию. Сравните с шагом обычного спуска при .
Причина в терминах урока 050:
Заодно у Ньютона нет learning rate — размер шага определяется кривизной. Это и достоинство (нечего подбирать), и опасность (шаг может оказаться огромным, если кривизна мала).
Почему им не пользуются
Стоимость. Для параметров:
| градиент | гессиан | обращение | |
|---|---|---|---|
При гессиан содержит чисел — это эксабайт памяти. Не «медленно», а физически невозможно.
Плюс две проблемы помимо стоимости:
- на невыпуклой задаче гессиан не положительно определён. Тогда «шаг в минимум квадратики» может оказаться шагом вверх — в направлении отрицательной кривизны квадратика уходит в минус бесконечность. Отсюда все модификации: сдвиг спектра, доверительные области, гауссов-ньютон;
- шум. Гессиан по минибатчу — плохая оценка, и обращать шумную матрицу опаснее, чем усреднять шумный градиент.
Что используют вместо
| метод | что делает | стоимость |
|---|---|---|
| L-BFGS | приближает по истории последних шагов | |
| гауссов-ньютон | заменяет на , всегда | зависит |
| natural gradient | предобусловливает матрицей Фишера | , нужны приближения |
| K-FAC | Фишер как кронекерово произведение блоков | практично |
| Adam | диагональное приближение по вторым моментам |
Последняя строка — не шутка: Adam из урока 080 и есть самый дешёвый метод «второго порядка», если считать таковым любой, использующий больше информации, чем градиент. Он приближает кривизну диагональной матрицей, и это единственное приближение, которое масштабируется до миллиардов параметров.
L-BFGS стоит знать как реально работающий классический метод. Он хранит пар (шаг, изменение градиента), обычно , и строит из них приближение без явной матрицы. В глубоком обучении применяется редко — плохо переносит шум минибатчей — но для детерминированных задач среднего размера часто лучший выбор.
Natural gradient
Отдельная идея, из другого места. Обычный градиент зависит от параметризации: перейдите к , и градиент изменится. А ведь модель — та же.
Natural gradient предлагает мерить расстояние не в пространстве параметров, а в пространстве распределений, которые модель задаёт:
— матрица Фишера, и она есть в точности гессиан KL-дивергенции между и при малом . То есть natural gradient — это спуск, у которого шаг ограничен в KL, а не в евклидовой норме.
Отсюда сразу три связи с уже пройденным:
- KL из блока 4 оказывается метрикой на пространстве моделей, а не только функцией потерь;
- информация Фишера из блока 3 (кривизна log-правдоподобия) оказывается той самой матрицей;
- PPO и TRPO ограничивают шаг в KL — это и есть natural gradient в приближении, и ветка B к нему вернётся.
Практически имеет размер и потому недоступна; K-FAC приближает её кронекеровыми произведениями поблочно, и это работает.
Что стоит унести
Сравните Adam и спуск на повёрнутом ландшафте — это лучшая иллюстрация того, чего не хватает диагональным методам и что дал бы полный гессиан.
лосс, логарифмическая шкала
- f в конце
- 4.15e-7
- обусловленность κ
- 30
- порог 2/L
- 0.067
- сходится
Ньютон решил бы это за один шаг. Adam близок к нему, потому что гессиан диагонален и диагонального приближения достаточно.
Итог блока в одной мысли: вся эта иерархия методов — способы получить информацию о кривизне за приемлемую цену. Ньютон берёт её точно и стоит ; L-BFGS — по истории за ; Adam — по диагонали за ; момент — вообще без кривизны, но с памятью, что даёт . А нормализация и стандартизация из уроков 050 и 100 действуют иначе: они уменьшают саму , и потому остаются самым выгодным вложением.
Источники
- Nocedal, Wright — Numerical Optimization, гл. 6, 7 — Ньютон, квазиньютоновские методы, L-BFGS
- Martens — New insights and perspectives on the natural gradient method — Natural gradient, Фишер, связь с гауссовым Ньютоном
Проверки
0 из 2Почему не Ньютон
Отметьте все верные утверждения о методах второго порядка.
Когда шаг Ньютона допустим
Гессиан задан как .
Реализуйте
newton_vs_gd(a, b, c)— верните[lambda_min, lambda_max, gd_steps, newton_ok]:- собственные значения в закрытой форме, ;
newton_ok— можно ли делать шаг Ньютона:-1.0если гессиан вырожден (какое-то собственное значение нулевое с допуском ),0.0если он знаконеопределён (),1.0если положительно определён. Вырожденность проверяйте первой;gd_steps— сколько шагов градиентного спуска нужно для сокращения ошибки в миллион раз при оптимальном шаге, то есть с . При верните1.0; еслиnewton_okне равно1.0, верните-1.0— задача не является выпуклой квадратикой, и оценка неприменима.
Заметьте, что число шагов Ньютона в ответе не спрашивается: на квадратичной функции оно равно единице при любом , и это главный факт урока.
Проверить собственные значения можно двумя тождествами: и .
Загрузка редактора…
Ctrl/⌘ + Enter