Эффективное вычисление по всем параметрам сети за один обратный проход с помощью правила цепочки.
- то, что мы ищем: как изменится ошибка при изменении конкретного веса
- производная потерь по выходу — приходит «сверху», от следующего слоя
- производная активации: именно она затухает у сигмоиды и не затухает у ReLU
- локальная производная линейной части — это просто вход слоя
Ключевые тезисы
- Прямой проход сохраняет , обратный — умножает локальные .
- Затухающие и взрывающиеся — прямое следствие перемножения множителей.
- Автодифференцирование в PyTorch и JAX — это , доведённый до общего случая.
Какую задачу решает
Чтобы обучать сеть спуском, нужны по всем параметрам — а их миллионы. Наивно считать каждую отдельно означало бы прогонять сеть заново на каждый параметр: для модели со 100 млн весов это 100 млн прямых проходов на один шаг обучения.
получает все сразу за один обратный проход, стоящий примерно столько же, сколько прямой. Секрет — правило цепочки, применённое в правильном порядке: считается от выхода к входу, и каждый слой переиспользует то, что уже посчитал слой над ним. Именно эта эффективность, а не сама идея , сделала глубокое обучение возможным.
имеет максимум 0.25. В сети из 10 слоёв , дойдя до первого слоя, умножается минимум на — то есть при первый слой сдвинется на и фактически не обучится. Замена на ReLU ( ровно 1 на положительной части) и добавление остаточных связей, которые дают прямой путь мимо слоёв, — это и есть то, что позволило обучать сети глубиной в сотни слоёв.
Подробный разбор
- Forward: считаем выходы слоёв и сохраняем промежуточные .
- Loss: сравниваем выход с ответом.
- Backward: идём справа налево, перемножая локальные (правило цепочки).
- Step: обновляет веса по полученным .
всех слоёв нужны на обратном проходе — отсюда «out of memory» при большом батче. Gradient checkpointing экономит память, пересчитывая часть активаций заново.
- веса модели — то, что подбирается при обучении
- число объектов в выборке
- номер или количество: индекс шага, число соседей, кластеров или позиций
- функция потерь — то, что минимизируется при обучении
- произведение по всем элементам
- частная производная — чувствительность к одному аргументу
- Лечится: ReLU-подобные , (, LayerNorm), скип-связи.
- Взрыв лечится обрезкой : .
- Инициализация (He, Xavier) подбирает весов так, чтобы сигнал не затухал при прохождении слоёв.
Где применяется
- Обучение любой Единственный практический способ получить для миллионов параметров — под капотом каждого
loss.backward(). - Атаки и объяснения по входу, а не по весам, показывает, какие пиксели важны () и как минимально изменить вход, чтобы обмануть модель.
- Оптимизация входаDeepDream, перенос стиля, инверсия : веса заморожены, обучается сам вход.
- Обучение через чужую сетьВ генератора проходит сквозь дискриминатор, в — через сеть-учителя.
Плюсы, минусы и альтернативы
Плюсы
- Все за один проход: стоимость обучения не зависит от числа параметров.
- Работает для любой дифференцируемой архитектуры — писать руками не нужно.
- Точные аналитические , без погрешности численного дифференцирования.
- Полностью автоматизирован фреймворками и прозрачно ложится на .
Минусы
- Требует хранить все прямого прохода — память растёт с глубиной и размером .
- Численно неустойчив на длинных цепочках: затухает или взрывается.
- Нужна дифференцируемость: жёсткий argmax, сэмплирование и дискретные решения приходится обходить трюками.
- Строго последовательный: слой не посчитать, пока не готов следующего.
- Биологически неправдоподобен — обратный путь с теми же весами в мозге не обнаружен.
Брать, если
- Обучается любая — альтернативы практически нет.
- Нужны сложного вычислительного , а не только модели.
Не брать, если
- Функция недифференцируема или доступна только как чёрный ящик — берите эволюционные методы или байесовскую оптимизацию.
- Параметров единицы, а вычисление дорогое: проще и надёжнее численный .
Чем заменяют
Видеолекции
Записи университетских курсов, где эта тема звучит. Ссылка открывает запись с той секунды, где о ней говорят, — искать по трёхчасовой лекции не нужно.
Связанные темы
Стабильность обучения нейросетей · Аппарат анализа · Нейросеть по кирпичикам · Последовательные модели · Градиенты и производные
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%
Градиентный спуск · Оптимизация обученияИтеративный шаг против градиента функции потерь — базовый алгоритм обучения.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Прямой проход
Вычисление предсказания с сохранением всех промежуточных активаций — они понадобятся на обратном проходе, и именно они съедают память .
Разбор ниже: Прямой и обратный проходОбратный проход
Движение от лосса к входу: каждый слой получает по своему выходу и отдаёт градиент по своему входу и по своим весам.
Разбор ниже: Прямой и обратный проходПравило цепочки
— вся математика метода умещается в одну строку.
Разбор ниже: Прямой и обратный проходЗатухающий градиент
Произведение множителей меньше единицы экспоненциально уменьшается вглубь — ранние слои перестают обучаться.
Разбор ниже: Затухание и взрыв градиентовВзрывающийся градиент
Зеркальная беда: множители больше единицы дают переполнение и NaN. Лечится обрезкой .
Разбор ниже: Затухание и взрыв градиентовАвтодифференцирование
PyTorch и JAX строят операций и применяют то же правило к произвольному коду — в общем виде.
Разбор ниже: Прямой и обратный проходПрофильная компетенция для ролей: ML Engineer, NLP-инженер, CV-инженер, Исследователь, Инженер речи.
Усиливает профиль: Data Scientist, Инженер рекомендаций.
Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.
Глава «Глубокое обучение» последний раз правилась . Нашли ошибку — напишите.