Оптимизация обучения

Gradient Descent

Градиентный спуск

актуальноТекущий рабочий стандарт

Направления: Глубокое обучение · Оптимизация

Итеративный шаг против — базовый алгоритм обучения.

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

Ключевые тезисы

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

Какую задачу решает

Обучение почти любой модели — это поиск минимума по параметрам. Аналитически он берётся только в редких случаях вроде ; в остальных приходится идти к минимуму итеративно. спуск делает это самым прямым способом: считает направление наискорейшего роста и шагает против него.

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

Что происходит при разной скорости обучения

Функция , старт . При : шаги 10 → 8 → 6.4 → … — плавная сходимость. При : 10 → −8 → 6.4 → −5.1 — колебания вокруг минимума, но амплитуда падает, сходимость есть. При : 10 → −12 → 14.4 — амплитуда растёт, процесс расходится. Граница здесь , где — кривизна функции. У кривизна разная в разных направлениях и меняется по ходу обучения — отсюда и вся индустрия адаптивных и расписаний.

Подробный разбор

3 подтемы — объяснения, формулы, примеры и интерактивные графики.

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

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

Аналогия: вы стоите в тумане на склоне и хотите спуститься. Видите только уклон под ногами — идёте в сторону наибольшего спуска, делаете шаг, снова смотрите. Размер шага и есть .

-6-226100204060wL(w)минимум
шаг обучения η0.20
текущий x1.767
f(x)1.054
градиент-0.467
статусидёт
Слишком малое η — сотни шагов; слишком большое — перелёт и расходимость. Попробуйте η = 1.05

Обозначения
  • истинное значение целевой переменной
  • объект: вектор признаков
  • веса модели — то, что подбирается при обучении
  • число объектов в выборке
  • функция потерь — то, что минимизируется при обучении
  • суммирование по всем перечисленным элементам
  • транспонирование: строка вместо столбца
Обозначения
  • истинное значение целевой переменной
  • объект: вектор признаков
  • веса модели — то, что подбирается при обучении
  • число объектов в выборке
  • функция потерь — то, что минимизируется при обучении
  • суммирование по всем перечисленным элементам
  • частная производная — чувствительность к одному аргументу
сложной функции: внешняя — квадрат, внутренняя — линейная по
Обозначения
  • истинное значение целевой переменной
  • число объектов в выборке
  • функция потерь — то, что минимизируется при обучении
  • градиент: вектор частных производных
  • транспонирование: строка вместо столбца
запись: одно матричное умножение вместо цикла
Зарплата по стажу и часам

, текущие веса дают предсказание 60 000 при факте 75 000. Ошибка умножается на каждый : вес при стаже сдвигается сильнее, если стаж у объекта большой.

Симптом на кривой потерьДиагнозДействие
падает очень медленно, почти прямаяη слишком малоувеличить в 3–10 раз
падает, потом скачет вокруг уровняη великовато для финальной стадиидобавить расписание затухания
растёт или уходит в NaNη слишком великоуменьшить на порядок, добавить warmup
На практике

Практика: запускайте короткий «LR range test» — обучение с экспоненциально растущим шагом. Точка, где потери начинают расти, задаёт верхнюю границу; берут примерно вдесятеро меньше.

Где применяется

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

Плюсы, минусы и альтернативы

Плюсы

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

Минусы

  • Сходится к локальному минимуму, а не к глобальному.
  • Крайне чувствителен к .
  • Медленно движется в вытянутых оврагах — зигзагом вместо прямой.
  • Полный по всей выборке слишком дорог на больших данных.
  • Останавливается на плато, где почти нулевой.

Брать, если

  • Функция дифференцируема, а параметров много.
  • Нужно понять базовый механизм перед переходом к и его родне.

Не брать, если

  • Функция недифференцируема или доступна как чёрный ящик — берите байесовскую оптимизацию.
  • Задача и мала: аналитическое решение или метод Ньютона будут точнее и быстрее.

Чем заменяют

Видеолекции

Записи университетских курсов, где эта тема звучит. Ссылка открывает запись с той секунды, где о ней говорят, — искать по трёхчасовой лекции не нужно.

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

Оптимизаторы · Градиенты и производные

Optimization85%

Оптимизация · Основы

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

Optimizers85%

Оптимизаторы · Глубокое обучение

Правила обновления весов по градиенту: от чистого SGD до адаптивных методов.

SGD85%

Стохастический градиентный спуск · Оптимизация обучения

Градиент оценивается по мини-батчу: быстрее, шумнее и, как оказалось, полезнее для обобщения.

Momentum85%

Момент · Оптимизация обучения

Накопление экспоненциального среднего градиентов — движение по инерции сквозь колебания.

Adam85%

Adam · Оптимизация обучения

Адаптивный метод: хранит средние градиента и его квадрата, подбирая шаг для каждого параметра.

AdamW85%

AdamW · Оптимизация обучения

Adam с корректно отделённым weight decay — регуляризация применяется к весам, а не к градиенту.

RMSProp85%

RMSProp · Оптимизация обучения

Нормирует шаг на скользящее среднее квадратов градиента, выравнивая масштаб обновлений.

Learning Rate Scheduling85%

Расписание скорости обучения · Оптимизация обучения

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

Batch size85%

Размер батча · Оптимизация обучения

Число объектов на одно обновление весов: влияет на скорость, память и качество обобщения.

Calculus80%

Математический анализ · Основы

Производные показывают, как изменится ошибка при малом изменении параметра. Именно это делает возможным градиентное обучение.

Gradient80%

Градиент · Математический справочник

Вектор частных производных, указывающий направление наибыстрейшего роста функции.

Hessian80%

Гессиан · Математический справочник

Матрица вторых производных, описывающая локальную кривизну функции.

Backpropagation80%

Обратное распространение ошибки · Глубокое обучение

Эффективное вычисление градиентов по всем параметрам сети за один обратный проход с помощью правила цепочки.

Numerical Methods80%

Численные методы · Основы

Компьютер считает приближённо. Понимание точности float, устойчивости и обусловленности спасает от NaN и «необъяснимых» расхождений.

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

Глава «Оптимизация обучения» последний раз правилась . Нашли ошибку — напишите.