В прошлом уроке мы построили поверхность потерь и захотели найти её дно. Прежде чем скатываться к минимуму градиентом, стоит понять, что такое минимум, как его распознать и в каком случае найденный минимум — действительно лучший, а не ловушка. Ответы дают старый принцип Ферма и одно свойство функции — выпуклость, которое делит все задачи оптимизации на лёгкие и трудные.

Условие Ферма: в минимуме склон нулевой

Начнём с простого наблюдения, которому почти четыре века. Если гладкая функция достигает минимума или максимума во внутренней точке, то её производная там равна нулю. В минимуме дно долины горизонтально: слева функция убывала, справа возрастает, а в самой нижней точке склон обнуляется. То же в вершине холма. Это условие сформулировал Пьер Ферма около 1637 года, и оно лежит в основе всей оптимизации:

x — точка экстремума    f(x)=0.x^{*} \text{ — точка экстремума} \;\Rightarrow\; f'(x^{*}) = 0 .

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

Четыре лица нулевого склона

Итак, f=0f'=0 ловит не только минимумы. Горизонтальная касательная бывает у четырёх разных рельефов, и различить их важно. Минимум: слева спуск, справа подъём, дно долины. Максимум: слева подъём, справа спуск, вершина холма. Седло (в одном измерении — точка перегиба со стационарностью): функция на миг замирает, но продолжает в ту же сторону, как ступенька на склоне. И, наконец, плато, где производная ноль на целом участке.

Отличить минимум от максимума помогает вторая производная — скорость изменения самого склона. Если в стационарной точке f>0f''>0, склон поворачивает вверх (дно чаши) — это минимум; если f<0f''<0, вниз (купол) — максимум; а если f=0f''=0, тест молчит, и надо смотреть внимательнее. Так, приравняв к нулю первую производную и проверив знак второй, находят и классифицируют все стационарные точки.

f(x)=0,  {f(x)>0 минимум,f(x)<0 максимум,f(x)=0 нужен разбор.f'(x^{*})=0,\; \begin{cases} f''(x^{*})>0 & \Rightarrow\ \text{минимум},\\ f''(x^{*})<0 & \Rightarrow\ \text{максимум},\\ f''(x^{*})=0 & \Rightarrow\ \text{нужен разбор}. \end{cases}
Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Четыре графика с горизонтальной касательной в отмеченной точке: минимум (дно чаши), максимум (вершина), седловая точка перегиба (замирает и идёт дальше) и плато; у всех производная ноль, но рельеф разный
Рис. 21.1. Четыре стационарные точки: везде касательная горизонтальна

Во всех четырёх точках производная равна нулю, касательная горизонтальна — но рельефы разные: минимум, максимум, точка перегиба и плато. Одно условие f=0f'=0 их не различает; для этого нужна вторая производная или взгляд на форму. Стационарность — это лишь подозрение на экстремум, а не приговор.

Выпуклость: когда локальное становится глобальным

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

Функция выпукла, если она всюду загибается вверх: её вторая производная неотрицательна, f0f''\ge 0, и график нигде не выгибается куполом. Наглядное определение ещё проще: соедините любые две точки графика отрезком-хордой — у выпуклой функции хорда всюду лежит не ниже графика, кривая провисает под ней, как канат. Парабола, экспонента, модуль — выпуклы; синус или кубическая — нет.

Драгоценное свойство выпуклых функций вот в чём: у них любой локальный минимум является глобальным. Нет ловушек, нет обманных ямок на склоне — всё, что выглядит как дно, и есть настоящее дно. А значит, условие Ферма f=0f'=0 находит сразу глобальный минимум, единственный и лучший. Выпуклая оптимизация — решённая задача: приравнял производную к нулю, и готово. Соединив это с условием Ферма, получаем чёткое правило: для выпуклой функции стационарная точка — это глобальный минимум, точка, и никаких проверок второй производной или перебора не требуется. Всё искусство оптимизации в трудных случаях — это, по сути, попытки вернуть себе гарантии, которые выпуклость даёт даром.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева выпуклая чаша с единственным минимумом на дне; справа волнистый невыпуклый рельеф с несколькими локальными минимумами разной глубины, из которых лишь один глобальный, и обманные ловушки-ямки
Рис. 21.2. Выпуклый рельеф против невыпуклого

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

Почему нейросети трудно учить

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

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

На реальных данных: оптимальный размер пула

Оптимизация с настоящим минимумом бывает и вдалеке от нейросетей. Классический пример — групповое тестирование, придуманное Робертом Дорфманом в 1943 году, когда призывников массово проверяли на болезнь. Идея: вместо того чтобы делать анализ каждому, смешивают кровь группы из nn человек и тестируют смесь. Если она чиста — все nn здоровы за один тест; если положительна — тестируют каждого отдельно. Когда больных мало, огромное большинство групп чисты, и экономия колоссальна.

Сколько человек брать в группу? Слишком маленькая группа почти не экономит тестов, слишком большая почти всегда даёт положительную смесь и требует поголовной перепроверки. Между этими крайностями есть наилучший размер. Ожидаемое число тестов на человека при доле больных pp равно

C(n)=1n+(1(1p)n),C(n) = \frac1n + \Bigl(1 - (1-p)^n\Bigr),

где 1/n1/n — доля первого группового теста на человека, а второе слагаемое — вероятность, что группа окажется положительной и потребует поголовной перепроверки. Эта функция размера группы nn — чашеобразная, с единственным минимумом. При доле больных 1%1\% она минимальна при группе из 1111 человек и даёт всего 0,200{,}20 теста на человека — в пять раз меньше поголовного, экономия 80%80\%. Реальная оптимизация, реальный минимум, найденный тем же условием: производную по nn в ноль.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
U-образная кривая: число тестов на человека в зависимости от размера группы при доле больных один процент; кривая падает от малых групп, достигает минимума около группы из одиннадцати с ценой 0.2 теста, затем растёт для больших групп
Рис. 21.3. Стоимость группового тестирования и её минимум

Ожидаемое число тестов на человека в зависимости от размера группы при доле больных 1%1\%. Кривая падает, пока группа мала (мало толку от объединения), достигает дна около n=11n=11 (цена 0,200{,}20 теста, экономия 80%80\%) и снова растёт: у больших групп смесь почти всегда положительна. Настоящий минимум настоящей задачи — и он в целой точке, ведь людей в группе не бывает дробное число.

Русская линия: как считать оптимальное

Превратить «найти наилучшее» из искусства в науку — заслуга во многом советской математики. В 1939 году ленинградский математик Леонид Канторович, разбирая задачу фанерного треста о том, как распределить станки, чтобы выпуск был максимальным, создал линейное программирование — метод поиска оптимума при линейных ограничениях. Это была новая математика оптимального планирования: как распределить ресурсы, перевезти грузы, загрузить производство наилучшим образом. За теорию оптимального использования ресурсов Канторович в 1975 году получил Нобелевскую премию по экономике — единственный советский экономический нобелиат. Оптимизация, которой мы обучаем нейросети, и оптимизация, которой Канторович планировал экономику, — одна математика минимума и максимума, просто на разных ландшафтах.

Лаборатория: рельефы и ловушки

Стационарные точки, выпуклость и ловушки локальных минимумов

Загружается живая иллюстрация…

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

Сборка: лёгкие задачи и трудные

Прежде чем спускаться к минимуму, мы разобрались, что это такое. Условие Ферма превращает поиск экстремума в решение уравнения f=0f'=0, но ловит все стационарные точки скопом — минимумы, максимумы, седла, плато; отделить минимум помогает вторая производная. Главный же водораздел проводит выпуклость: у выпуклой функции любой локальный минимум глобален, ловушек нет, и оптимизация решена — оттого линейные модели надёжны. Невыпуклый рельеф нейросетевой потери полон локальных минимумов и седловин, и там нет ни формулы, ни гарантии лучшего ответа — только спуск шаг за шагом в какое-то дно. Мы увидели настоящий минимум настоящей задачи на групповом тестировании и вспомнили Канторовича, сделавшего оптимизацию наукой. Осталось главное: как, собственно, спускаться к дну, не видя всей поверхности, а щупая её под ногами. Инструмент для этого — производная, указывающая направление наискорейшего спуска, градиент; с него начинается механика обучения.

Задачи