Оптимизация

Введение в оптимизацию

GPT-4 не «думает». Это спуск с горы в пространстве 1.7 триллиона измерений. Adam-оптимизатор находит дно за 3 месяца на 25000 GPU H100. Стоимость одного такого спуска - 100 миллионов долларов. Градиентный спуск придумал Коши в 1847 году - он искал минимумы функций одной переменной. Через 177 лет та же идея обучает GPT-4. Маршруты UPS для 60 000 водителей. Airline revenue management. Портфель Марковица. Одна математика, разные масштабы.

  • **SGD / Adam в нейросетях** - каждая обученная модель: от GPT-4 до ResNet - результат оптимизации loss function; Adam использует экспоненциальные скользящие моменты градиентов
  • **Логистика UPS** - «ORION» система оптимизирует маршруты 60 000 водителей ежедневно; экономит 100 миллионов миль в год
  • **Airline revenue management** - авиакомпании решают задачу ценообразования в реальном времени, балансируя загрузку и выручку
  • **Портфель Марковица** - хедж-фонды оптимизируют портфели, балансируя доходность и риск; это QP-задача с ограничениями

Целевая функция

GPT-4 не «думает». Это спуск с горы в пространстве 1.7 триллиона измерений. Adam-оптимизатор находит дно за 3 месяца на 25000 GPU H100. Стоимость одного такого спуска - 100 миллионов долларов. Градиентный спуск придумал Коши в 1847 году - он искал минимумы функций одной переменной. Через 177 лет та же идея обучает GPT-4. Оптимизация - это **поиск входных значений, при которых целевая функция принимает наилучшее значение**.

**Целевая функция** (objective function) - это f(x), значение которой хотим минимизировать (min) или максимизировать (max). Аргумент x может быть числом, вектором или даже функцией. Задачу максимизации всегда можно свести к минимизации: max f(x) = min(-f(x)).

ОбластьЦелевая функцияЧто оптимизируем
Machine LearningLoss function (MSE, Cross-Entropy)Минимизируем ошибку модели
Логистика UPSСтоимость маршрутаМинимизируем расходы на доставку
Финансы (Марковиц)Риск портфеляМаксимизируем доходность при фиксированном риске
ИнженерияВес конструкцииМинимизируем материал при сохранении прочности

Ключевой момент: оптимизация - не про «найти ответ», а про «найти **лучший** ответ». Калькулятор решает уравнение. Оптимизатор ищет экстремум. Adam-оптимизатор за 3 месяца на 25000 GPU - тот же принцип, что минимизация функции одной переменной из учебника Коши 1847 года.

Нейросеть обучается минимизировать loss function. Что является аргументом x целевой функции?

Ограничения и допустимое множество

В реальном мире нельзя оптимизировать без ограничений. Бюджет конечен, время ограничено, законы физики не обойти. **Ограничения** (constraints) определяют область, в которой ищем решение - **допустимое множество** (feasible set). UPS оптимизирует маршруты 60 000 водителей с ограничением: водитель работает не более 10 часов. Это и есть constrained optimization.

**Ограничения-равенства** h(x) = 0 задают поверхность в пространстве параметров (например, «сумма весов = 1»). **Ограничения-неравенства** g(x) ≤ 0 задают область (например, «вес каждой акции от 0 до 1»). Пересечение всех ограничений - **допустимое множество** (feasible set).

Оптимум задачи с ограничениями часто лежит **на границе** допустимого множества, а не внутри. Поэтому просто приравнять градиент к нулю недостаточно - нужны специальные методы (Lagrange multipliers, KKT conditions).

Задача **без ограничений** (unconstrained) - частный случай, когда допустимое множество = всё пространство. Gradient descent в ML обычно решает именно такую задачу (хотя regularization можно рассматривать как мягкое ограничение).

Фабрика производит стулья (x₁) и столы (x₂). Ограничение: x₁ + 2x₂ ≤ 100 (часы работы). Какой тип ограничения?

Локальный vs глобальный оптимум

Горный ландшафт. Стоишь в долине - кругом только подъёмы. Это **локальный минимум**. Но за горизонтом есть долина глубже - **глобальный минимум**. Как понять, нашёл ли настоящее дно, не обследовав весь ландшафт? Именно это каждый раз спрашивает себя инженер, глядя на loss curve обучения нейросети.

**Локальный минимум** - точка x*, где f(x*) ≤ f(x) для всех x в некоторой окрестности. **Глобальный минимум** - точка x*, где f(x*) ≤ f(x) для **всех** допустимых x. Для произвольной функции найти глобальный минимум - NP-трудная задача.

Спасительное свойство - **выпуклость** (convexity). Если функция выпуклая («чаша»), то любой локальный минимум автоматически является глобальным. Нет ловушек, нет обмана. Именно поэтому выпуклая оптимизация - золотой стандарт: решение гарантированно оптимально. Линейная регрессия с MSE - выпуклая задача, поэтому Adam находит глобальный минимум. Нейросети - невыпуклые, и это принципиально.

Выпуклость и Machine Learning

Линейная регрессия с MSE loss - выпуклая задача, поэтому gradient descent гарантированно находит глобальный минимум. Нейросети - невыпуклые, и инженеры полагаются на эвристики (random initialization, Adam) и надеются на «достаточно хороший» локальный минимум. Исследования 2014-2015 годов (Dauphin, Choromanska) показали: в высокоразмерных пространствах плохие локальные минимумы редки. Большинство критических точек - седловые, а не ловушки.

Функция f(x) = x⁴ - 2x² + 1. Что можно сказать о её экстремумах?

Классификация задач оптимизации

Не все задачи оптимизации одинаковы. От типа задачи зависит, какой метод решения применим и насколько он эффективен. Маршрут как непрерывные координаты - одна задача. Выбор из конечного набора складов - совсем другая. Airline revenue management (цены на билеты в реальном времени) - третья. Обучение GPT-4 - четвёртая, с 1.7 триллиона параметров.

ТипЦелевая функцияОграниченияСложностьПример
Линейная (LP)Линейная: c^TxЛинейные: Ax ≤ bПолиномиальнаяРаспределение ресурсов
Квадратичная (QP)Квадратичная: x^TQx + c^TxЛинейныеПолиномиальная (если Q ≥ 0)Портфель Марковица
ВыпуклаяВыпуклая функцияВыпуклое множествоПолиномиальнаяSVM, Ridge regression
НелинейнаяПроизвольная гладкаяПроизвольныеЗависит от задачиОбучение нейросетей
КомбинаторнаяНа дискретном множествеДискретныеЧасто NP-труднаяTSP, scheduling

**Ключевой принцип:** чем больше структуры в задаче, тем эффективнее метод. LP решается за полиномиальное время. Выпуклая задача - gradient descent находит глобальный оптимум. Нелинейная - только локальный. Комбинаторная - часто приходится жертвовать оптимальностью ради скорости.

В machine learning большинство задач - **нелинейные** (обучение нейросетей), но отдельные компоненты бывают выпуклыми (линейная регрессия, SVM). Тип задачи определяет выбор алгоритма и ожидания от результата.

Почему deep learning работает несмотря на невыпуклость?

Долгое время считалось, что невыпуклость loss-функции нейросетей - фатальная проблема. Но исследования 2014-2015 годов (Dauphin, Choromanska) показали: в высокоразмерных пространствах плохие локальные минимумы редки. Большинство критических точек - седловые, а не ловушки. Gradient descent с momentum умеет от них убегать. Именно поэтому Adam-оптимизатор работает на практике - хотя теория гарантий не даёт.

Gradient descent всегда находит глобальный минимум

Gradient descent находит глобальный минимум только для выпуклых функций. Для невыпуклых - только локальный.

Gradient descent следует направлению наискорейшего спуска и останавливается, когда градиент близок к нулю. Для выпуклой функции такая точка единственна и глобальна. Для невыпуклой - gradient descent застревает в ближайшем локальном минимуме или седловой точке, не зная о существовании лучших решений. Adam добавляет адаптивный momentum, что помогает выходить из седловых точек - но гарантий глобальности не даёт.

Ключевые идеи

  • **Целевая функция** f(x) - то, что минимизируем или максимизируем; x - параметры, которые подбираем; Коши 1847 → Adam optimizer, 1.7 триллиона параметров
  • **Ограничения** (равенства и неравенства) определяют допустимое множество - область поиска оптимума; оптимум часто лежит на границе
  • **Выпуклость** - ключевое свойство: для выпуклых функций локальный минимум = глобальный, gradient descent гарантированно работает; нейросети невыпуклы, но это не проблема в высоких измерениях
  • Тип задачи (LP, QP, выпуклая, нелинейная, комбинаторная) определяет выбор метода и гарантии результата

Связанные темы

Оптимизация - фундамент для множества дисциплин:

  • Градиентный спуск — Основной алгоритм решения задач непрерывной оптимизации
  • Линейное программирование — Важнейший частный случай с полиномиальными алгоритмами
  • Machine Learning — Обучение модели = оптимизация loss function

Вопросы для размышления

  • Почему в deep learning инженеров устраивает локальный минимум, хотя теоретически глобальный лучше?
  • Можно ли любую задачу максимизации свести к минимизации? А задачу с ограничениями - к задаче без ограничений?
  • Если бы все задачи оптимизации были выпуклыми, как бы это изменило computer science?

Связанные уроки

  • opt-02 — Градиентный спуск - основной алгоритм решения непрерывных задач оптимизации, естественное продолжение этого урока.
  • ml-01-intro — Обучение ML-моделей - прямое приложение оптимизации: loss function minimization через gradient descent.
  • calc-06-derivative-intro — Производная - математический фундамент градиентного спуска; условие f'(x)=0 определяет критические точки.
  • sci-01 — Численные методы и оптимизация тесно связаны: AlphaFold2 применяет gradient descent в пространстве химических конфигураций белков.
  • prob-01-intro — Стохастическая оптимизация (SGD) использует случайные выборки - та же идея, что в Monte Carlo: случайность как способ исследовать большое пространство.
  • calc-19-gradient
Введение в оптимизацию

0

1

Войти

Задача коммивояжёра (TSP): найти кратчайший маршрут через N городов. К какому типу она относится?