Files
SecondBrain/01 Library/11 Machine Learning/Обратное распространение ошибки.md
T
2026-05-07 15:57:15 +03:00

6.0 KiB
Raw Blame History

status, type, tags, created, updated, title
status type tags created updated title
stable concept
machine-learning
neural-networks
backpropagation
gradient-descent
2025-12-17 2026-05-07 Обратное распространение ошибки

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

Обратное распространение ошибки (backpropagation) - алгоритм вычисления градиентов функции ошибки по весам многослойной Нейронные сети. После вычисления градиентов веса обновляются методом градиентного спуска.

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

Где используется

Backpropagation нужен при обучении сетей с учителем:


X^{(p)} \rightarrow Y^{(p)} \approx D^{(p)}

где:

  • X^{(p)} - входной объект;
  • Y^{(p)} - выход сети;
  • D^{(p)} - целевой ответ;
  • p - номер обучающего примера.

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

Прямой проход

Для сети с одним скрытым слоем:


S_i^{(1)}=\sum\limits_{j=1}^{n}w_{ij}^{(1)}x_j

u_i=F(S_i^{(1)})

S_l^{(2)}=\sum\limits_{i=1}^{k}w_{li}^{(2)}u_i

y_l=F(S_l^{(2)})

В развёрнутом виде:


y_l=
F\left(
\sum\limits_{i=1}^{k}
w_{li}^{(2)}
F\left(
\sum\limits_{j=1}^{n}
w_{ij}^{(1)}x_j
\right)
\right),
\quad l=\overline{1,m}

Функция ошибки

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


E=\frac{1}{2}\sum\limits_{l=1}^{m}(y_l-d_l)^2

Коэффициент \frac{1}{2} нужен только для удобства производной: при дифференцировании квадрат даёт множитель 2, который сокращается.

Обновление весов

Минимизация ошибки происходит через градиентный спуск:


w_{ij}(t+1)=w_{ij}(t)-\alpha\frac{\partial E}{\partial w_{ij}(t)}

где:

  • w_{ij} - вес связи;
  • t - номер шага обучения;
  • \alpha - скорость обучения (learning rate);
  • \frac{\partial E}{\partial w_{ij}} - производная ошибки по весу.

Если производная положительная, увеличение веса увеличивает ошибку, поэтому вес уменьшается. Если производная отрицательная, вес увеличивается.

Алгоритм

  1. Подать входной вектор X на вход сети.
  2. Выполнить прямой проход и получить выходы всех слоёв.
  3. Посчитать ошибку E между предсказанием Y и целевым ответом D.
  4. Посчитать ошибку выходного слоя \delta^{(2)}.
  5. Распространить ошибку назад и посчитать ошибки скрытых слоёв \delta^{(1)}.
  6. Найти градиенты по весам.
  7. Обновить веса в направлении антиградиента.
  8. Повторять до выполнения условия остановки: лимит эпох, малая ошибка, малая норма градиента или отсутствие улучшения.

Локальная ошибка слоя

Для выходного слоя:


\delta_l^{(2)}=(y_l-d_l)F'(S_l^{(2)})

Для скрытого слоя:


\delta_i^{(1)}
=
F'(S_i^{(1)})
\sum\limits_{l=1}^{m}
\delta_l^{(2)}w_{li}^{(2)}

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

Интуиция

Backpropagation - это не отдельный способ оптимизации, а эффективный способ вычислить градиенты. Оптимизацию делает градиентный спуск или его модификации: SGD, Momentum, Adam и т.д.

Смысл \delta:

  • на выходном слое \delta показывает, насколько нейрон ошибся с учётом производной активации;
  • на скрытом слое прямого целевого ответа нет, поэтому ошибка собирается из всех нейронов следующего слоя;
  • градиент веса получается как локальная ошибка нейрона, в который входит вес, умноженная на вход этого веса.

Иллюстрации

!Pasted image 20260417105754.png

!Pasted image 20260417105833.png

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

  • Обратное распространение ошибки - вывод
  • Обратное распространение ошибки для произвольного числа слоев НС
  • Нейронные сети
  • Линейные модели