Глоссарий

Backpropagation

Узнай, как обратное распространение обучает нейронные сети, снижает процент ошибок и эффективно питает такие приложения ИИ, как распознавание образов и NLP.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

Backpropagation, сокращение от "обратного распространения ошибок", - это краеугольный алгоритм, используемый для обучения искусственных нейронных сетей, особенно в глубоком обучении. Это двигатель, который позволяет моделям учиться на своих ошибках, эффективно вычисляя, насколько каждый параметр (вес и смещение) в сети способствовал общей ошибке в предсказаниях. Эта информация затем используется алгоритмами оптимизации для корректировки параметров и улучшения работы модели с течением времени в процессе ее обучения.

Как работает обратное распространение

Процесс включает в себя две основные фазы после первоначального предсказания:

  1. Forward Pass: Входные данные подаются через сеть, слой за слоем, активируя нейроны и применяя веса модели, пока не будет сгенерирован выход (предсказание).
  2. Вычисление ошибок: Разница между предсказанием сети и фактическим значением цели (ground truth) вычисляется с помощью функции потерь. Этот убыток количественно определяет, насколько ошибочным было предсказание. Общим ресурсом для понимания этого является глава книги Deep Learning Book, посвященная MLP.
  3. Обратный проход: Именно здесь происходит настоящее обратное распространение. Начиная с выходного слоя, алгоритм вычисляет градиент функции потерь относительно weights and biases каждого слоя. Он использует правило цепочки из вычислений, чтобы эффективно распространять сигнал ошибки назад по сети, слой за слоем. Это определяет, насколько нужно изменить каждый параметр, чтобы уменьшить общую ошибку. Проиллюстрировать этот поток помогут визуализации, подобные тем, что представлены в книге "Calculus on Computational Graphs".
  4. Обновление весов: вычисленные градиенты затем используются алгоритмом оптимизации, таким как Gradient Descent или более продвинутыми вариантами вроде Adam, для обновления weights and biases сети, подталкивая модель к тому, чтобы делать лучшие предсказания на следующей итерации.

Важность в глубоком обучении

Обратное распространение является основой успеха современного глубокого обучения. Она позволяет обучать очень глубокие и сложные архитектуры, такие как конволюционные нейронные сети (CNN), широко используемые в компьютерном зрении, и рекуррентные нейронные сети (RNN), применяемые для работы с последовательными данными, такими как текст. Без эффективного способа вычисления градиентов, который обеспечивает обратное распространение, обучение таких больших моделей было бы невыполнимым с вычислительной точки зрения. Она позволяет моделям автоматически изучать сложные особенности и взаимосвязи из огромных объемов данных, формируя основу многих достижений ИИ с момента ее популяризации в 1980-х годах, о чем подробно рассказывается в ресурсах, посвященных истории Deep Learning.

Применение в реальном мире

Backpropagation неявно используется всякий раз, когда обучается модель глубокого обучения. Вот два примера:

  1. Обнаружение объектов: Модели типа Ultralytics YOLO обучаются с помощью обратного распространения. Когда модель неправильно идентифицирует объект или неточно размещает ограничительную рамку на изображении из наборов данных вроде COCO, обратное распространение вычисляет градиенты, необходимые для корректировки весов модели, улучшая ее способность точно обнаруживать объекты.
  2. Обработка естественного языка (NLP): Обучение больших языковых моделей вроде BERT или GPT для таких задач, как машинный перевод или анализ настроения, в значительной степени опирается на обратное распространение. Она настраивает параметры модели так, чтобы минимизировать разницу между сгенерированным текстом и желаемым результатом, что позволяет этим моделям понимать и генерировать человекоподобный язык. Стэнфордская группа NLP предоставляет множество ресурсов по этим темам.

Смежные понятия

Несмотря на тесную взаимосвязь, Backpropagation отличается от Gradient Descent. Backpropagation - это алгоритм, специально предназначенный для вычисления градиентов функции потерь относительно параметров сети. Градиентный спуск (и его разновидности) - это алгоритм оптимизации, который использует эти вычисленные градиенты для итеративного обновления параметров и минимизации потерь. Backpropagation иногда может страдать от таких проблем, как проблема исчезающего градиента, особенно в очень глубоких сетях, хотя такие техники, как использование функций активации ReLU и остаточных связей, помогают смягчить эту проблему.

Читать полностью