Оптимизация

Условия оптимальности

Нулевой градиент, седловые точки — и почему в высокой размерности они правило, а не исключение

Шаг 62 из 117 · ~28 мин

Необходимое и достаточное

f(x)=0и2f(x)0\htmlData{k=first}{\nabla f(x^*) = 0} \qquad \text{и} \qquad \htmlData{k=second}{\nabla^2 f(x^*) \succ 0}

необходимое: в любом внутреннем локальном минимуме градиент нулевой. Обратное неверно, и вся содержательная часть урока про это.

достаточное вместе с первым: если градиент нулевой, а гессиан положительно определён, точка — строгий локальный минимум. Между ними есть щель: при 2f0\nabla^2 f \succeq 0 с нулевым собственным значением решить нельзя ничем, кроме анализа более высоких порядков (пример — x4x^4 и x3x^3 в нуле: у обеих f=0f'' = 0, у первой минимум, у второй нет).

Точки с нулевым градиентом называются критическими, и их четыре вида:

видспектр гессиана
локальный минимумвсе λi>0\lambda_i > 0
локальный максимумвсе λi<0\lambda_i < 0
седловая точкаесть и положительные, и отрицательные
вырожденнаяесть λi=0\lambda_i = 0

Седла на картинке

Потащите точку к началу координат на седле: градиент обращается в нуль, а точка минимумом не является — вдоль одной оси функция растёт, вдоль другой падает.

f(x, y)
2.25
градиент
2.4, 1.8
норма градиента
3

Единственная критическая точка — минимум. Спектр гессиана (2, 2): оба собственных значения положительны.

Почему седла — правило

Это главный результат урока, и он объясняет, почему невыпуклость глубоких сетей не так страшна, как кажется.

Пусть у гессиана в критической точке dd собственных значений, и пусть каждое независимо и симметрично имеет случайный знак. Тогда:

P(локальный минимум)=P(все λi>0)=2dP(\text{локальный минимум}) = P(\text{все } \lambda_i > 0) = 2^{-d}

ddвероятность минимума
221/41/4
10101/10241/1024
100100103010^{-30}
10910^9неотличима от нуля

Модель на реальных данных, конечно, не даёт независимых случайных знаков — но качественный вывод подтверждается и теорией случайных матриц, и экспериментом: в большой сети почти всякая точка с нулевым градиентом — седловая.

Практические следствия три:

  • бояться локальных минимумов не нужно. Их почти нет; те, что есть, обычно дают сравнимый лосс;
  • седла замедляют, а не останавливают. Из седла есть направление спуска, но около него градиент мал, и метод «залипает» на много шагов. Именно с этим борется момент;
  • условия второго порядка бесполезны на практике. Гессиан размера 109×10910^9 \times 10^9 не то что не диагонализуется — он не существует в памяти. Проверить оптимальность в глубоком обучении невозможно, и никто не проверяет.

Что делают вместо проверки

Раз условие второго порядка недоступно, останавливаются по эвристикам:

критерийчто означает
норма градиента малаприблизились к критической точке — любой
лосс не падает NN шаговплато, седло, или слишком малый шаг
валидационный лосс растётпора остановиться независимо от оптимальности

Третья строка — та, которой пользуются в действительности, и она про другое. В машинном обучении цель не «найти минимум обучающего лосса», а «найти хорошую модель», и это буквально разные задачи: полный минимум обучающего лосса обычно означает переобучение. Early stopping — это сознательный отказ от оптимальности, и он же одна из форм регуляризации.

Ограничения меняют условие

Всё сказанное относится к минимуму внутри области. На границе градиент нулевым быть не обязан: минимум x2x^2 на отрезке [1,2][1, 2] достигается в x=1x = 1, где f=20f' = 2 \ne 0.

Правильное условие для задач с ограничениями — это условия ККТ, и им посвящён урок 110. Пока достаточно запомнить: «градиент равен нулю» — условие для внутренней точки, и при активных ограничениях оно просто неверно.

Источники

Проверки

0 из 2
  1. Критические точки

    Отметьте все верные утверждения об условиях оптимальности.

  2. Классифицировать критическую точку

    Квадратичная форма задана гессианом H=(abbc)H = \begin{pmatrix} a & b \\ b & c \end{pmatrix}. В начале координат градиент нулевой, и вид точки определяется спектром HH.

    Реализуйте classify(a, b, c) — верните [trace, det, lambda_min, lambda_max, kind]:

    • trace = a+ca + c, det = acb2ac - b^2;

    • собственные значения симметричной матрицы 2×22\times2 в закрытой форме:

      λ±=a+c2±(ac)24+b2\lambda_{\pm} = \frac{a + c}{2} \pm \sqrt{\frac{(a-c)^2}{4} + b^2}

    • kind — код вида точки: 2.0 если оба собственных значения строго положительны (минимум), 0.0 если оба строго отрицательны (максимум), 1.0 если знаки разные (седло), -1.0 если хотя бы одно равно нулю (вырожденная). Нуль определяйте с допуском 101210^{-12}, и проверяйте вырожденность первой.

    Проверить себя можно двумя тождествами, которые обязаны выполняться точно: λ+λ+=trace\lambda_- + \lambda_+ = \text{trace} и λλ+=det\lambda_- \lambda_+ = \det.

    функция classify

    Загрузка редактора…

    Ctrl/⌘ + Enter