Математический анализ
Функции нескольких переменных
Цели урока
- Понять, почему функции многих переменных - основа ML и оптимизации
- Интерпретировать поверхности, параболоиды и седловые точки
- Читать линии уровня как инструмент анализа loss landscape
- Понять, когда многомерный предел существует, а когда нет
Предварительные знания
- Что такое функция (вход -> выход)
- Пределы - куда стремится функция
Функция потерь GPT-4 принимает 1.8 триллиона переменных (параметров) и возвращает одно число - loss. Каждый шаг Adam обновляет все 1.8 трлн одновременно. Это математика функций многих переменных в production при масштабе, немыслимом 20 лет назад.
- GPT-4: L(theta) с theta в R^{1.8T} - функция 1.8 триллиона переменных
- ResNet-50: backward pass вычисляет 25M частных производных за один проход
- Adam optimizer: momentum в пространстве параметров = gradient descent на поверхности
- Li et al. 2018: визуализация loss landscape ResNet как поверхности в 3D
- Kaggle: hyperparameter tuning = поиск минимума f(lr, dropout, batch_size, ...)
GPT-4 и 1.8 триллиона переменных
Функция потерь GPT-4 - это $L(\theta)$, где $\theta \in \mathbb{R}^{1.8\text{ трлн}}$. Градиент $\nabla L$ - вектор из 1.8 триллиона чисел. Каждый шаг Adam optimizer обновляет все 1.8 трлн параметров одновременно. Это и есть функция нескольких переменных в production.
ResNet-50 обрабатывает изображение $224 \times 224 \times 3 = 150528$ входных пикселей - это функция 150528 переменных. Backward pass вычисляет 25 миллионов частных производных за один проход.
Какая из этих ситуаций НЕ требует функции нескольких переменных?
Перевод температуры - это функция ОДНОЙ переменной: $F = 1.8C + 32$. Всё остальное требует двух или более входных данных.
Поверхности: loss landscape нейросетей
График функции $f(x,y)$ - это поверхность в 3D. Loss surface нейросети при двух параметрах выглядит как горный ландшафт с долинами (локальные минимумы), перевалами (седловые точки) и вершинами. Исследователи из Facebook AI в 2018 году буквально нарисовали такой landscape для ResNet-56.
Параболоид f(x,y) = x^2 + y^2: - f(0,0) = 0 (минимум) - f(1,0) = 1, f(0,2) = 4, f(1,1) = 2 - Форма: спутниковая антенна / чаша Adam Седло f(x,y) = x^2 - y^2: - f(0,0) = 0 (не min, не max) - Вдоль x: x^2 растёт -> минимум - Вдоль y: -y^2 убывает -> максимум - Критическая точка (0,0) - седловая
Седловые точки - главная проблема оптимизации нейросетей: градиент там равен нулю, как в минимуме, но точка не является минимумом. Adam optimizer использует momentum, чтобы вырываться из седловых точек.
Summarise the key idea of: Как это выглядит: рассмотрим горы.
Линии уровня: как читать loss landscape
TensorBoard отображает loss curves - одну переменную (время). Но loss landscape - это многомерная поверхность. Исследователи из Li et al. (2018) проецируют её на 2D через два случайных направления и рисуют линии уровня. Густые линии = крутой склон = нестабильное обучение.
Линия уровня c: все точки, где x^2 + y^2 = c Это окружность радиуса sqrt(c). c = 1: r = 1.0 (единичная окружность) c = 4: r = 2.0 c = 9: r = 3.0 Линии уровня = концентрические окружности. Чем ближе к центру, тем плотнее = тем круче склон.
Градиент всегда перпендикулярен линиям уровня. Gradient descent движется вдоль этого перпендикуляра - поэтому он находит минимум по кратчайшему пути вниз по склону.
Видите густые линии уровня на loss landscape. Что это значит?
Близкие линии уровня = большой перепад на малом расстоянии = большой градиент = нестабильный gradient descent. Именно поэтому gradient clipping используется при крутых склонах loss.
Пределы: путь имеет значение
В одномерном случае к точке можно подойти только с двух сторон: слева или справа. В двумерном - **бесконечное количество путей**: вдоль любой прямой, параболы, спирали. Предел существует, только если по всем путям получается одно и то же значение.
Вдоль оси x (y=0): x*0/(x^2+0) = 0 Вдоль оси y (x=0): 0*y/(0+y^2) = 0 Кажется, предел = 0. Но: Вдоль y=x: x*x/(x^2+x^2) = x^2/(2x^2) = 1/2 Вдоль осей -> 0, по диагонали -> 1/2. Предел не существует.
Даже если вдоль ВСЕХ прямых получается одинаковый ответ, предел может не существовать - нужно проверять и параболические пути. В ML это объясняет, почему loss landscape вдоль одного направления выглядит гладко, но оптимизация может вести себя непредсказуемо в другом направлении.
Почему в многомерном случае пределы сложнее, чем в одномерном?
На прямой - два пути. На плоскости - бесконечно много. И нужно, чтобы ВСЕ пути давали одинаковый ответ.
Практика
Три задачи: от конкретных вычислений до исследования предела.
L(w, b) = (w*x + b - y)^2 при x=2, y=3 L(1.0, 0.0) = (1*2 + 0 - 3)^2 = (-1)^2 = 1.0 L(1.5, 0.0) = (1.5*2 + 0 - 3)^2 = 0^2 = 0.0 (оптимум!) L(1.0, 1.0) = (1*2 + 1 - 3)^2 = 0^2 = 0.0 (тоже оптимум)
Линия уровня c: x + 2y = c, или y = (c-x)/2 Это прямые с наклоном -1/2. - c = 0: прямая y = -x/2 - c = 2: прямая y = 1 - x/2 - c = -2: прямая y = -1 - x/2 Параллельные прямые. Поверхность z = x+2y - наклонная плоскость. Градиент: (1, 2) - перпендикулярен каждой линии уровня.
Вдоль x-оси (y=0): x^2/x^2 = 1 Вдоль y-оси (x=0): -y^2/y^2 = -1 1 != -1 => предел не существует. Физический смысл: эта функция постоянна на лучах из начала координат, но принимает разные значения на разных лучах.
Summarise the key idea of: Практика.
Куда ведёт эта тема
Функции нескольких переменных - фундамент всего дальнейшего в ML
- Частные производные — Как быстро меняется loss вдоль каждого параметра?
- Градиент и gradient descent — Направление наибольшего убывания loss - основа обучения нейросетей
- Оптимизация — Поиск минимума loss в пространстве миллионов параметров
- Ряды Тейлора — Многомерный Тейлор: квадратичное приближение loss = основа L-BFGS
Итоги
- Функция $f: \mathbb{R}^n \to \mathbb{R}$ - несколько входов, один выход; loss нейросети - именно такая
- График $f(x,y)$ - поверхность в 3D: параболоид (чаша), седло - ключевые формы в оптимизации
- Линии уровня - 'срезы' поверхности; густые линии = большой градиент = нестабильное обучение
- Градиент $\nabla f$ перпендикулярен линиям уровня и указывает направление наибольшего роста
- Предел существует, только если ВСЕ пути к точке дают одинаковый результат
Вопросы для размышления
- Почему седловые точки сложнее для gradient descent, чем локальные минимумы?
- Как li et al. визуализировали loss landscape ResNet в 2D?
- Почему gradient clipping применяют при крутых склонах loss?
- Если предел по всем прямым одинаковый, гарантирует ли это существование предела?