Глубокое обучение

Backpropagation

Обратное распространение ошибки

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

Направления: Глубокое обучение · Нейросети

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

Что означает каждый компонент
  • то, что мы ищем: как изменится ошибка при изменении конкретного веса
  • производная потерь по выходу — приходит «сверху», от следующего слоя
  • производная активации: именно она затухает у сигмоиды и не затухает у ReLU
  • локальная производная линейной части — это просто вход слоя
Градиент — произведение множителей вдоль пути; поэтому он затухает или взрывается

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

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

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

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

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

Откуда берётся затухание — на числах

имеет максимум 0.25. В сети из 10 слоёв , дойдя до первого слоя, умножается минимум на — то есть при первый слой сдвинется на и фактически не обучится. Замена на ReLU ( ровно 1 на положительной части) и добавление остаточных связей, которые дают прямой путь мимо слоёв, — это и есть то, что позволило обучать сети глубиной в сотни слоёв.

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

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

  1. Forward: считаем выходы слоёв и сохраняем промежуточные .
  2. Loss: сравниваем выход с ответом.
  3. Backward: идём справа налево, перемножая локальные (правило цепочки).
  4. Step: обновляет веса по полученным .
На практике

всех слоёв нужны на обратном проходе — отсюда «out of memory» при большом батче. Gradient checkpointing экономит память, пересчитывая часть активаций заново.

Обозначения
  • веса модели — то, что подбирается при обучении
  • число объектов в выборке
  • номер или количество: индекс шага, число соседей, кластеров или позиций
  • функция потерь — то, что минимизируется при обучении
  • произведение по всем элементам
  • частная производная — чувствительность к одному аргументу
Произведение множителей: если каждый ≈ 0.5, то при уменьшится в миллион раз
  • Лечится: ReLU-подобные , (, LayerNorm), скип-связи.
  • Взрыв лечится обрезкой : .
  • Инициализация (He, Xavier) подбирает весов так, чтобы сигнал не затухал при прохождении слоёв.

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

  • Обучение любой Единственный практический способ получить для миллионов параметров — под капотом каждого loss.backward().
  • Атаки и объяснения по входу, а не по весам, показывает, какие пиксели важны () и как минимально изменить вход, чтобы обмануть модель.
  • Оптимизация входаDeepDream, перенос стиля, инверсия : веса заморожены, обучается сам вход.
  • Обучение через чужую сетьВ генератора проходит сквозь дискриминатор, в — через сеть-учителя.

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

Плюсы

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

Минусы

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

Брать, если

  • Обучается любая — альтернативы практически нет.
  • Нужны сложного вычислительного , а не только модели.

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

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

Чем заменяют

Тема также относится к главам:Математический анализПрименение в ML

Видеолекции

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

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

Стабильность обучения нейросетей · Аппарат анализа · Нейросеть по кирпичикам · Последовательные модели · Градиенты и производные

Numerical Methods97%

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

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

Calculus97%

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

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

Gradient97%

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

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

Hessian97%

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

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

Normalization Layers85%

Слои нормализации · Глубокое обучение

BatchNorm, LayerNorm, RMSNorm: стабилизация распределения активаций, без которой глубокие сети почти не обучаются.

Gradient Clipping85%

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

Ограничение нормы градиента перед шагом оптимизатора — простейшая защита от расходимости обучения.

Mixed Precision85%

Смешанная точность · Оптимизация обучения

Обучение в fp16 или bf16 при накоплении в fp32: двукратная экономия памяти и заметное ускорение.

Learning Rate Scheduling85%

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

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

Limits and Continuity85%

Пределы и непрерывность · Математический анализ

Предел описывает, к чему стремится функция вблизи точки. На этом понятии держатся производная, интеграл и вся теория сходимости алгоритмов.

Derivative85%

Производная · Математический анализ

Скорость изменения функции: предел отношения приращения функции к приращению аргумента. Геометрически — наклон касательной.

Differentiation Rules85%

Правила дифференцирования · Математический анализ

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

Taylor Series85%

Ряд Тейлора · Математический анализ

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

Multivariable Calculus85%

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

Функции многих переменных: частные производные, градиент, производная по направлению и линии уровня.

Jacobian85%

Якобиан · Математический анализ

Матрица частных производных векторной функции. Описывает, как преобразование растягивает пространство локально.

Lagrange Multipliers85%

Множители Лагранжа · Математический анализ

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

Convexity85%

Выпуклость · Математический анализ

Свойство функции, гарантирующее единственность минимума и сходимость градиентных методов.

Numerical Differentiation85%

Численное дифференцирование · Математический анализ

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

Series and Convergence85%

Ряды и сходимость · Математический анализ

Когда бесконечная сумма имеет конечное значение и с какой скоростью алгоритм приближается к ответу.

Integral85%

Интеграл · Математический анализ

Определённый интеграл — площадь под кривой, неопределённый — обратная операция к дифференцированию. В ML интеграл почти всегда означает математическое ожидание.

Differential Equations85%

Дифференциальные уравнения · Математический анализ

Уравнения, связывающие функцию с её производными. Описывают динамику — от роста популяций до обратного процесса в диффузионных моделях.

Perceptron80%

Перцептрон · Глубокое обучение

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

MLP80%

Многослойный перцептрон · Глубокое обучение

Несколько полносвязных слоёв с нелинейностями — универсальный аппроксиматор функций.

Activation functions80%

Функции активации · Глубокое обучение

Нелинейности между слоями, без которых сеть не сложнее линейной модели.

Loss functions80%

Функции потерь · Глубокое обучение

Формализуют цель обучения. Выбор потерь важнее выбора архитектуры чаще, чем кажется.

Optimizers80%

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

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

Logistic Regression80%

Логистическая регрессия · Классическое машинное обучение

Линейная модель классификации: сигмоида переводит линейную комбинацию признаков в вероятность класса.

RNN80%

Рекуррентные сети · Глубокое обучение

Обрабатывают последовательность шаг за шагом, перенося скрытое состояние между позициями.

LSTM80%

LSTM · Глубокое обучение

Рекуррентная ячейка с состоянием и тремя вентилями, решающая проблему долгосрочной памяти.

GRU80%

GRU · Глубокое обучение

Упрощённая LSTM: два вентиля вместо трёх и отсутствие отдельного cell state.

RNN/LSTM for NLP80%

RNN/LSTM в NLP · Обработка естественного языка

Первое поколение нейросетевых моделей языка: последовательная обработка токенов со скрытым состоянием.

Sequence-to-Sequence80%

Seq2Seq · Обработка естественного языка

Схема «энкодер сжимает вход — декодер порождает выход» для перевода, суммаризации и диалога.

RNN/LSTM80%

RNN/LSTM для рядов · Временные ряды

Нейросети, обучаемые сразу на множестве связанных рядов, улавливают общие паттерны.

Gradient Descent80%

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

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

Кому эта тема нужна

Профильная компетенция для ролей: ML Engineer, NLP-инженер, CV-инженер, Исследователь, Инженер речи.

Усиливает профиль: Data Scientist, Инженер рекомендаций.

Проверить себя

Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.

Следующий шагПроверить себя: Глубокое обучениеТема встречается в этом тесте 2 раза. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

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