Математический анализ

Градиент и направленная производная

Градиентный спуск обучает GPT-4 за тысячи часов на тысячах GPU. Каждый шаг - движение против вектора $\nabla L$. Без понимания градиента невозможно объяснить, почему Adam работает лучше SGD, почему batch normalization стабилизирует обучение, и почему vanishing gradient убивает глубокие сети.

  • Оптимизация весов нейронных сетей: $w \leftarrow w - \alpha \nabla_w L$
  • Навигация дрона: градиент давления воздуха указывает направление подъёма
  • Компьютерная графика: нормаль к поверхности $\nabla f / |\nabla f|$ для расчёта освещения
  • Медицина: МРТ-томография использует градиентные поля для пространственной кодировки
  • Экономика: направление наискорейшего роста прибыли в пространстве параметров

Цели урока

  • Вычислять градиент функции и интерпретировать его как вектор наискорейшего возрастания
  • Находить производную по направлению через скалярное произведение с единичным вектором
  • Анализировать сходимость градиентного спуска через условие Липшица и скорость $O(1/k)$

Предварительные знания

  • Частные производные функции нескольких переменных
  • Скалярное произведение векторов и угол между ними
  • Понятие нормы вектора

Градиент: вектор из частных производных

Градиент $\nabla f = \left(\frac{\partial f}{\partial x_1}, \ldots, \frac{\partial f}{\partial x_n}\right)$ указывает направление наискорейшего возрастания $f$. Его длина $|\nabla f|$ - скорость роста в этом направлении. Перпендикулярно $\nabla f$ функция не меняется - это направление вдоль линии уровня.

Производная по направлению

Производная $f$ по направлению единичного вектора $\mathbf{v}$: $D_{\mathbf{v}} f = \nabla f \cdot \mathbf{v} = |\nabla f|\cos\theta$. Максимум при $\mathbf{v} = \nabla f / |\nabla f|$, нулевая при $\theta = \pi/2$ - вдоль линии уровня.

Сходимость градиентного спуска

При $L$-гладкой функции шаг $\alpha = 1/L$ гарантирует убывание потерь. Скорость сходимости $O(1/k)$ для выпуклых функций: $f(x_k) - f^* \leq \frac{L \|x_0 - x^*\|^2}{2k}$.

Стохастический SGD использует оценку $\nabla f$ по мини-батчу. Для сходимости нужны убывающие шаги $\alpha_k$ с $\sum \alpha_k = \infty$, $\sum \alpha_k^2 < \infty$ (условие Роббинса-Монро).

Градиент как вектор частных производных

Оптимизатор Adam в GPT-4 обновляет 175 миллиардов параметров θ на каждом шаге обучения. Направление обновления определяется градиентом ∇L(θ) - вектором из всех частных производных функции потерь. В пространстве параметров размерности 175B градиент показывает, в каком направлении L растёт быстрее всего. Движение против градиента - gradient descent - основа всего современного глубокого обучения.

Градиент перпендикулярен линиям уровня - фундаментальное свойство. В нейросети loss surface задаётся в пространстве весов, и градиент в каждой точке показывает, в каком направлении функция потерь возрастает быстрее всего. Поэтому обновление весов по −∇L гарантирует локальное убывание потерь.

Функция f(x, y) = 3x² + y². В точке (2, 1) вычислите градиент и его длину.

Градиент указывает направление наибольшего роста функции и является вектором частных производных.

Направленная производная

При обучении нейросети методом SGD выбирается случайный mini-batch, что эффективно добавляет шум к направлению обновления. Реальный шаг происходит не строго вдоль −∇L, а в слегка случайном направлении. Скорость изменения функции в произвольном направлении - это направленная производная, и она полностью определяется проекцией градиента на это направление.

Формула D_u f = ∇f · u показывает: скорость изменения функции в любом направлении - это просто проекция градиента на это направление. Gradient descent выбирает направление −∇f, обеспечивающее максимальную скорость убывания функции потерь. Именно из этого следует оптимальность алгоритма для локального шага.

В направлении какого вектора функция убывает быстрее всего?

Ответ следует непосредственно из определения и свойств рассматриваемого математического объекта.

Gradient Descent: алгоритм и сходимость

Обучение GPT-3 с 175B параметрами заняло около 355 GPU-лет. За это время Adam выполнил порядка 300 000 шагов градиентного спуска. Каждый шаг: θ ← θ − η∇L(θ), где η - learning rate. Выбор η критичен: слишком большой - расходимость, слишком маленький - медленная сходимость. Для выпуклых функций с L-гладким градиентом сходимость гарантирована при η < 2/L.

На практике чистый gradient descent заменяется Adam, RMSprop или другими адаптивными методами. Adam адаптирует learning rate для каждого параметра отдельно: компоненты с большой исторической дисперсией градиента получают меньший шаг. Математически это аппроксимация предобуславливания через диагональ матрицы Гессиана.

При каком learning rate η gradient descent на f(w) = w² гарантированно сходится?

Градиент указывает направление наибольшего роста функции и является вектором частных производных.

Геометрический смысл на поверхности $f(x,y) = x^2 + 4y^2$

$\nabla f = (2x, 8y)$. В точке $(1, 0.5)$: $\nabla f = (2, 4)$ - направление наискорейшего роста. Линии уровня - эллипсы. Градиент всегда перпендикулярен касательной к эллипсу в данной точке.

Итоги

  • Градиент $\nabla f$ указывает направление наискорейшего возрастания, его длина равна скорости роста
  • Производная по направлению $D_{\mathbf{v}} f = \nabla f \cdot \mathbf{v}$: максимальна вдоль градиента, нулевая вдоль линии уровня
  • Градиентный спуск сходится за $O(1/k)$ шагов при шаге $\alpha \leq 1/L$

Связь с другими темами

Градиент - строительный блок для второго порядка: матрица Гессе $H_{ij} = \frac{\partial^2 f}{\partial x_i \partial x_j}$ кодирует кривизну и применяется в методах Ньютона. В векторном анализе градиент обобщается на дивергенцию и ротор, которые появляются в теореме Стокса.

  • Связанные темы — развивает

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

  • Почему Adam и RMSProp быстрее SGD? Что они учитывают о градиенте дополнительно?
  • Vanishing gradient: что происходит с $|\nabla f|$ в глубоких сетях и почему это блокирует обучение ранних слоёв?
  • Если функция невыпуклая, градиентный спуск найдёт локальный минимум. Почему на практике это достаточно хорошее решение для нейросетей?

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

  • ml-09-gradient-descent
  • ml-28-optimizers
Градиент и направленная производная

0

1

Войти