Словарь ИИ
Что такое обратное распространение ошибки
Коротко
Обратное распространение ошибки это алгоритм, который вычисляет, какой вклад каждый вес нейросети внес в ошибку, проходя по сети от выхода к входу.
Машинное обучение · backpropagation
Михаил МозгПроверено: 1 минута чтения
Ребенку
Представь эстафету, которую ваша команда проиграла. Тренер разбирает забег с конца: последний бегун потерял две секунды, предпоследний одну, а первый бежал отлично. Теперь каждый знает, что ему тренировать. Компьютер учится похоже: он разбирает свой промах от последнего шага к первому и решает, какую свою часть подправить и насколько.
Простыми словами
Нейросеть состоит из слоев, и в каждом тысячи чисел, весов. Когда сеть ответила неверно, неясно, какие из них виноваты. Этот алгоритм отвечает на вопрос. Сначала данные проходят вперед, от входа к ответу. Затем промах отправляют назад: последний слой узнает, насколько он повлиял на результат, передает это предыдущему, и так до первого. В итоге у каждого веса есть подсказка, в какую сторону и насколько его сдвинуть. Похоже на разбор брака на заводе, когда идут от готовой детали назад к станкам, через которые она прошла.
Для бизнеса
Этим алгоритмом обучают нейросети, от распознавания документов до языковых моделей, и для компании он важен через железо и деньги. Обратный проход требует хранить промежуточные результаты прямого, поэтому обучение занимает в видеопамяти заметно больше места, чем работа готовой модели, и обходится дороже. Отсюда практическое правило: пользоваться готовой моделью дешево, дообучать ее дороже, обучать с нуля дороже всего. Перед проектом спросите, какие слои будут дообучаться, на каких видеокартах и сколько часов это займет. Если задачу закрывают подсказки и поиск по документам без обучения, бюджет заметно меньше. Нужно ли обучение вообще, проверяют на пилоте.
Для специалиста
Обратное распространение ошибки (backpropagation) вычисляет градиент функции потерь по всем параметрам сети за один обратный проход, применяя правило дифференцирования сложной функции (chain rule) слой за слоем. Прямой проход (forward pass) считает активации и сохраняет нужные промежуточные значения; обратный (backward pass) идет от выхода к входу и для каждого слоя получает градиенты по весам и по входу слоя. В современных фреймворках это частный случай автоматического дифференцирования в обратном режиме (reverse-mode autodiff): по документации PyTorch, autograd записывает операции в ориентированный ациклический граф и обходит его от корней к листьям. Для многослойных сетей процедуру описали Rumelhart, Hinton и Williams в Nature (9 октября 1986 года) и показали, что скрытые нейроны при таком обучении сами начинают представлять полезные признаки задачи. Шаг по найденному градиенту делает оптимизатор, например стохастический градиентный спуск или Adam. Известные трудности: затухание и взрыв градиентов в глубоких сетях и память на сохраненные активации, которую экономят пересчетом (gradient checkpointing).
Пример
Сеть для чтения сканов накладных путала единицу и семерку. После каждой пачки примеров обратное распространение ошибки показывало, какие веса в каких слоях сильнее всего тянут к промаху, и оптимизатор их поправлял. Через несколько эпох путаница почти исчезла.
Связанные термины
Вопросы и ответы
Зачем нужно обратное распространение ошибки?
Чем обратное распространение отличается от градиентного спуска?
Источники
Где это применяют в компании
Не уверены, нужно ли это вашей компании?
Карта ИИ-решений