Дифференциальное и матричное исчисление
Гессиан и кривизна
Вторая производная в многомерии — матрица, и её собственные значения решают, что за критическая точка
Матрица вторых производных
Для это матрица . Она симметрична, если вторые производные непрерывны (теорема Шварца), — и это не мелочь: симметричность означает, что к гессиану применима спектральная теорема из блока 1. Все выводы ниже опираются именно на неё.
Разложение Тейлора второго порядка выглядит так:
Сравните с одномерным случаем: стало
Классификация критических точек
Пусть . Тогда поведение около точки решает знак квадратичной формы, а его, по спектральной теореме, решают собственные значения :
| собственные значения | что это |
|---|---|
| все (положительно определён) | локальный минимум |
| все (отрицательно определён) | локальный максимум |
| есть и положительные, и отрицательные | седло |
| есть нулевые, остальные одного знака | вырожденный случай, второй порядок не решает |
Для проверять собственные значения по отдельности не нужно — достаточно следа и определителя, как в блоке 1: означает разные знаки, то есть седло; при знак определяется следом.
Поставьте точку в начало координат на каждой из функций и сравните:
- f(x, y)
- 0.01
- градиент
- 0.1, 0.1
- крутизна ‖∇f‖
- 0.14
Гессиан diag(2, 2): оба собственных значения положительны, линии уровня — замкнутые окружности вокруг точки.
Кривизна и обусловленность
Собственные значения гессиана — это кривизна вдоль главных направлений. Их отношение
и есть число обусловленности задачи. То же самое , что в уроке про SVD, — и роль у него та же: он говорит, во сколько раз задача «вытянута».
Геометрически: линии уровня положительно определённой квадратичной формы — эллипсы, а — отношение их осей. При это окружности и градиент смотрит точно в минимум. При большом градиент смотрит почти поперёк вытянутой оси, и спуск идёт зигзагом. Переключитесь на «плохо обусловленный» и подвигайте точку — стрелка почти нигде не указывает на центр.
Отсюда и практика: нормализация входов, batch/layer norm, предобусловливание в Adam — всё это попытки уменьшить . Не «ускорить обучение» абстрактно, а сделать линии уровня круглее.
Почему в глубоком обучении гессиан не считают
Гессиан имеет элементов. При это чисел — не существует носителя, куда это записать. Метод Ньютона требует ещё и решить систему с ним.
Что делают вместо:
- работают с методами первого порядка, а информацию о кривизне накапливают косвенно — так устроены momentum и Adam;
- считают произведение гессиана на вектор (), не собирая сам гессиан: это делается двумя обратными проходами и стоит как несколько градиентов;
- аппроксимируют его диагональю или блоками (K-FAC, Shampoo).
Знать структуру гессиана нужно не чтобы его вычислить, а чтобы понимать, что именно приближают оптимизаторы. Об этом весь блок 5.
Источники
- Deisenroth, Faisal, Ong — Mathematics for Machine Learning, гл. 5.7–5.8 — Гессиан, многомерное разложение Тейлора
- Boyd, Vandenberghe — Convex Optimization, гл. 3.1 — Условия второго порядка, определённость гессиана
Проверки
0 из 2Что решает гессиан
В точке выполнено . Отметьте все верные утверждения.
Классификация критической точки
Реализуйте
classify(hessian)— по гессиану в критической точке определите её тип. Верните одну из строк:"min"— оба собственных значения положительны;"max"— оба отрицательны;"saddle"— разных знаков;"degenerate"— хотя бы одно равно нулю.
Считать собственные значения не обязательно: для достаточно следа и определителя, потому что и .
- — значения разных знаков;
- — одного знака, и какого именно, говорит след;
- — одно из них нулевое.
Сравнивайте с нулём через
abs(x) < 1e-12, а не через== 0.Загрузка редактора…
Ctrl/⌘ + Enter