Открыть сервис

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

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

История

Идея, лежащая в основе обратного распространения, была независимо предложена несколькими исследователями в 1960–1970-х годах. В 1960 году Генри Келли (Henry J. Kelley) в работе о градиентных методах в управлении, а в 1961 году Артур Брайсон (Arthur E. Bryson) описали дифференцирование по цепному правилу для многослойных систем. В 1969 году Сеймур Пейперт и Марвин Минский в книге «Персептроны» (Perceptrons) показали, что однослойные персептроны не могут решать задачи, нелинейно разделимые (например, XOR), и указали на отсутствие эффективного алгоритма обучения для многослойных сетей, что привело к временному спаду интереса к нейросетям (так называемая «первая зима ИИ»).

В 1974 году Пол Вербос (Paul Werbos) в своей докторской диссертации впервые формализовал и применил обратное распространение ошибки для обучения нейронных сетей. Однако его работа осталась малоизвестной. В 1986 году Дэвид Румельхарт, Джеффри Хинтон и Рональд Уильямс опубликовали статью «Learning representations by back-propagating errors», которая популяризировала алгоритм и показала его эффективность для обучения многослойных персептронов. Эта работа стала поворотным моментом, возродив интерес к нейронным сетям и заложив основу для современного глубокого обучения.

Принцип работы

Алгоритм обратного распространения ошибки состоит из двух основных фаз: прямого прохода (forward pass) и обратного прохода (backward pass).

Прямой проход (Forward Pass)

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

Обратный проход (Backward Pass)

Цель обратного прохода — вычислить градиент функции потерь по каждому весу сети. Для этого используется цепное правило (chain rule) дифференцирования сложной функции. Градиент ошибки распространяется от выходного слоя к входному, слой за слоем, в обратном направлении по отношению к прямому проходу.

  1. Выходной слой: Для каждого нейрона выходного слоя вычисляется частная производная функции потерь по его выходу. Затем, используя производную функции активации, вычисляется «сигнал ошибки» (дельта) для этого нейрона.
  2. Скрытые слои: Для каждого нейрона скрытого слоя сигнал ошибки вычисляется как взвешенная сумма сигналов ошибки нейронов следующего слоя, умноженная на производную его собственной функции активации. Таким образом, ошибка «распространяется обратно» через сеть.
  3. Обновление весов: После вычисления сигнала ошибки для каждого нейрона, градиент функции потерь по каждому весу вычисляется как произведение сигнала ошибки нейрона, в который входит данный вес, на значение сигнала, выходящего из нейрона предыдущего слоя. Затем веса корректируются в направлении, противоположном градиенту, с использованием шага, определяемого скоростью обучения (learning rate). Этот процесс называется градиентным спуском (gradient descent).

Математическая формализация

Пусть нейронная сеть имеет \(L\) слоёв. Обозначим:

  • \(w^l_{ij}\) — вес связи между \(j\)-м нейроном слоя \(l-1\) и \(i\)-м нейроном слоя \(l\).
  • \(b^l_i\) — смещение (bias) \(i\)-го нейрона слоя \(l\).
  • \(a^l_i\) — активация (выход) \(i\)-го нейрона слоя \(l\).
  • \(z^l_i = \sum_j w^l_{ij} a^{l-1}_j + b^l_i\) — взвешенная сумма входов \(i\)-го нейрона слоя \(l\).
  • \(a^l_i = \sigma(z^l_i)\) — результат применения функции активации \(\sigma\).
  • \(C\) — функция потерь.

Обратный проход:

  1. Ошибка выходного слоя \(L\):

\[ \delta^L_i = \frac{\partial C}{\partial a^L_i} \sigma'(z^L_i) \]

  1. Распространение ошибки на предыдущие слои:

\[ \delta^l_i = \left( \sum_k w^{l+1}_{ki} \delta^{l+1}_k \right) \sigma'(z^l_i) \]

  1. Градиент по весам и смещениям:

\[ \frac{\partial C}{\partial w^l_{ij}} = a^{l-1}_j \delta^l_i \] \[ \frac{\partial C}{\partial b^l_i} = \delta^l_i \]

  1. Обновление параметров (градиентный спуск):

\[ w^l_{ij} \leftarrow w^l_{ij} - \eta \frac{\partial C}{\partial w^l_{ij}} \] \[ b^l_i \leftarrow b^l_i - \eta \frac{\partial C}{\partial b^l_i} \] где \(\eta\) — скорость обучения.

Разновидности и модификации

Базовый алгоритм градиентного спуска с обратным распространением имеет несколько ключевых разновидностей, различающихся способом использования данных:

  • Стохастический градиентный спуск (SGD): Веса обновляются после каждого отдельного обучающего примера. Это делает процесс обучения более шумным, но позволяет быстрее выходить из локальных минимумов и обрабатывать данные по мере поступления.
  • Пакетный градиентный спуск (Batch GD): Градиент вычисляется по всему обучающему набору данных, после чего веса обновляются один раз. Этот метод более точен, но требует больших вычислительных ресурсов и памяти, особенно для больших наборов данных.
  • Мини-пакетный градиентный спуск (Mini-batch GD): Компромиссный вариант, при котором данные разбиваются на небольшие подмножества (мини-пакеты, обычно размером 32, 64, 128). Градиент вычисляется по каждому мини-пакету, и веса обновляются после каждого пакета. Это наиболее распространённый подход на практике.

Для улучшения сходимости и преодоления проблем, связанных с выбором скорости обучения, были разработаны адаптивные методы оптимизации, такие как Momentum, AdaGrad, RMSProp и Adam. Они модифицируют правило обновления весов, добавляя инерцию (momentum) или адаптивно подстраивая скорость обучения для каждого параметра.

Проблемы и ограничения

Несмотря на свою эффективность, обратное распространение ошибки имеет ряд фундаментальных и практических проблем:

  • Проблема исчезающего градиента (Vanishing Gradient): В глубоких сетях с сигмоидными или гиперболическими функциями активации градиент может экспоненциально уменьшаться по мере распространения к входным слоям. Это приводит к тому, что веса ранних слоёв практически не обновляются, и обучение становится крайне медленным или останавливается. Эта проблема была частично решена с помощью функций активации ReLU, нормализации по мини-пакетам (batch normalization) и скип-соединений (skip connections).
  • Проблема взрывающегося градиента (Exploding Gradient): В некоторых случаях градиент может, наоборот, экспоненциально возрастать, приводя к нестабильности обучения и переполнению числовых значений. Решается с помощью обрезания градиента (gradient clipping).
  • Локальные минимумы и седловые точки: Функция потерь нейронной сети является невыпуклой и может содержать множество локальных минимумов и седловых точек. Градиентный спуск может застревать в них, хотя на практике для глубоких сетей седловые точки представляют большую проблему, чем локальные минимумы.
  • Чувствительность к гиперпараметрам: Эффективность обучения сильно зависит от выбора скорости обучения, размера мини-пакета, инициализации весов и других гиперпараметров. Неправильный выбор может привести к медленной сходимости или расходимости алгоритма.
  • Вычислительная сложность: Для больших сетей и наборов данных обратное распространение требует значительных вычислительных ресурсов, особенно памяти для хранения промежуточных значений активаций.

Применение

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

  • Компьютерное зрение: Обучение свёрточных нейронных сетей (CNN) для задач классификации изображений, обнаружения объектов, сегментации.
  • Обработка естественного языка (NLP): Обучение рекуррентных нейронных сетей (RNN), LSTM, трансформеров (Transformer) для машинного перевода, анализа тональности, генерации текста.
  • Распознавание речи: Обучение глубоких нейронных сетей для преобразования речи в текст.
  • Генеративные модели: Обучение генеративно-состязательных сетей (GAN) и вариационных автокодировщиков (VAE) для генерации изображений, музыки, видео.
  • Рекомендательные системы: Обучение нейросетевых моделей для предсказания предпочтений пользователей.

Критика и альтернативы

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

  • Контрастное обучение Хебба (Contrastive Hebbian Learning): Основано на локальных правилах Хебба, но требует двух фаз работы сети.
  • Алгоритмы обратного распространения без точного дифференцирования: Например, использование случайных весов для обратного прохода (feedback alignment).
  • Эволюционные алгоритмы: Используют принципы естественного отбора для оптимизации весов, не требуя вычисления градиента.
  • Обучение с подкреплением (Reinforcement Learning): В некоторых случаях, особенно для задач с дискретными действиями, используется вместо обратного распространения.

Несмотря на эти альтернативы, обратное распространение ошибки остаётся доминирующим и наиболее эффективным методом обучения глубоких нейронных сетей на практике.

Источники

  • Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088), 533-536.
  • Werbos, P. J. (1974). Beyond regression: New tools for prediction and analysis in the behavioral sciences. Ph.D. dissertation, Harvard University.
  • Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
  • Nielsen, M. A. (2015). Neural Networks and Deep Learning. Determination Press.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →