Оптимизация

Гладкость и сильная выпуклость

Две константы, L и μ, из которых берутся все оценки скорости сходимости

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

Зачем нужны константы

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

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

μ2yx2  f(y)f(x)f(x)(yx)  L2yx2\htmlData{k=lower}{\frac{\mu}{2}\|y - x\|^2} \ \le \ f(y) - f(x) - \nabla f(x)^\top (y-x) \ \le \ \htmlData{k=upper}{\frac{L}{2}\|y - x\|^2}

Читается это так: разность между функцией и её линейным приближением зажата между двумя параболами. Для дважды дифференцируемой функции условие эквивалентно спектральному:

μI  2f  LI\mu I \ \preceq \ \nabla^2 f \ \preceq \ L I

то есть все собственные значения гессиана лежат в [μ,L][\mu, L].

Что каждая константа означает

(f(x)f(y)Lxy\|\nabla f(x) - \nabla f(y)\| \le L\|x-y\|) — градиент не меняется слишком резко. Это то, что даёт право делать шаги: если кривизна не превосходит LL, шаг размера 1/L1/L гарантированно уменьшает функцию.

с параметром μ>0\mu > 0 — функция не бывает слишком плоской. Это то, что даёт скорость: чем сильнее выпуклость, тем быстрее сходимость и тем точнее градиент указывает на минимум.

Отношение κ=L/μ\kappa = L/\mu — число обусловленности, и следующий урок целиком о нём.

Три оценки сходимости

Всё, что нужно помнить из теории сходимости, — эта таблица.

предположенияшагскорость GD
только выпуклость1/L1/LO(1/k)O(1/k)
выпуклость + LL-гладкость + μ\mu-сильная выпуклость2/(L+μ)2/(L+\mu)O(ρk)O\big(\rho^k\big), ρ=κ1κ+1\rho = \frac{\kappa - 1}{\kappa + 1}
невыпуклая + LL-гладкая1/L1/Lf0\|\nabla f\| \to 0 как O(1/k)O(1/\sqrt{k})

Вторая строка — единственная, где сходимость линейная (то есть ошибка убывает геометрически). Она же объясняет, зачем нужна регуляризация с точки зрения оптимизации: добавление λ2x2\frac{\lambda}{2}\|x\|^2 к выпуклой функции делает её λ\lambda-сильно выпуклой, то есть переводит задачу из первой строки во вторую.

Третья строка — та, в которой находится глубокое обучение, и обещает она немного: только что градиент стремится к нулю. Куда именно сойдётся — теорема не говорит.

Стабильность и предел 2/L2/L

Самое практичное следствие LL-гладкости — жёсткая граница на шаг. На квадратичной функции с кривизной LL градиентный спуск умножает отклонение на 1αL|1 - \alpha L| за шаг, откуда:

шаг α\alphaчто происходит
α<1/L\alpha < 1/Lмонотонное убывание
α=1/L\alpha = 1/Lпопадание в минимум за один шаг (по этой оси)
1/L<α<2/L1/L < \alpha < 2/Lсходится, но с колебаниями
α=2/L\alpha = 2/Lвечные колебания без сходимости
α>2/L\alpha > 2/Lрасходимость

Это проверяется точно: при α=2/L\alpha = 2/L множитель равен 12=1|1 - 2| = 1, и отклонение не меняется никогда. При α=2.1/L\alpha = 2.1/L множитель 1.11.1, и за 200200 шагов величина вырастает в 1.120021081.1^{200} \approx 2 \cdot 10^{8} раз.

Отсюда и практический смысл «слишком большого learning rate»: это не «модель учится плохо», а строгий порог, за которым итерация перестаёт быть сжатием. И порог задаётся максимальной кривизной, то есть самым узким направлением ландшафта — даже если по всем остальным можно было бы шагать в сто раз крупнее.

Что бывает без гладкости

LL-гладкость — не универсальное свойство. Она нарушается там, где градиент меняется скачком:

x
0.8
f(x)
0.64
производная f'(x)
1.6
L = 2 всюду. Кривизна постоянна, и шаг 1/L = 0.5 попадает в минимум за одну итерацию.

Второй пример важен практически: ReLU-сети не LL-гладкие. У них производная скачет на изломах, и формально все оценки сходимости для гладких функций к ним не применимы. Практика от этого не разваливается, но об этом стоит знать, читая теоремы: их условия реальными сетями не выполняются.

Третий и пятый примеры показывают, что LL и μ\mu — характеристики функции вместе с областью, а не только функции. Поэтому в статьях гладкость почти всегда заявляют «на множестве уровня начальной точки» или на компакте.

Как это выглядит в обучении

Практических выводов три, и все проверяемы:

  • максимальный шаг определяется максимальной кривизной. Одно узкое направление задаёт порог для всех;
  • регуляризация улучшает не только обобщение, но и обусловленность. Прибавив λ2w2\frac{\lambda}{2}\|w\|^2, вы добавляете λ\lambda ко всем собственным значениям гессиана: μ\mu растёт с нуля до λ\lambda, и κ\kappa падает с бесконечности до (L+λ)/λ(L+\lambda)/\lambda;
  • градиентное клипование — замена гладкости. Если LL не существует (или огромна на редких батчах), ограничение нормы градиента возвращает шагу предсказуемый размер. Об этом урок 090.

Источники

Проверки

0 из 2
  1. L и μ

    Отметьте все верные утверждения о LL-гладкости и сильной выпуклости.

  2. Обусловленность и скорость

    Квадратичная задача имеет спектр гессиана [μ,L][\mu, L]. К ней добавляют L2-регуляризацию с коэффициентом λ\lambda, что прибавляет λ\lambda ко всем собственным значениям.

    Реализуйте convergence_facts(mu, L, lam) — верните [kappa_before, kappa_after, best_step, rate]:

    • kappa_before = L/μL / \mu — обусловленность до регуляризации. Если μ0\mu \le 0, верните -1.0: отношение бесконечно;
    • kappa_after = L+λμ+λ\dfrac{L + \lambda}{\mu + \lambda}, с тем же правилом -1.0, если μ+λ0\mu + \lambda \le 0;
    • best_step = 2(L+λ)+(μ+λ)\dfrac{2}{(L + \lambda) + (\mu + \lambda)} — оптимальный шаг для градиентного спуска;
    • rate = κafter1κafter+1\dfrac{\kappa_{\text{after}} - 1}{\kappa_{\text{after}} + 1} — множитель сокращения ошибки за шаг. Если kappa_after равна -1.0, верните 1.0: сжатия нет.

    Проверить себя можно так: rate обязана равняться max(1best_step(μ+λ), 1best_step(L+λ))\max\big(|1 - \text{best\_step}\cdot(\mu+\lambda)|,\ |1 - \text{best\_step}\cdot(L+\lambda)|\big). Это тождество, а не приближение — оптимальный шаг выбран именно так, чтобы уравнять два крайних множителя.

    функция convergence_facts

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

    Ctrl/⌘ + Enter