vault backup: 2026-05-07 15:27:12

This commit is contained in:
Dmitry
2026-05-07 15:27:12 +03:00
parent dd141591a7
commit 0defa25df0
6 changed files with 169 additions and 12 deletions
@@ -6,7 +6,7 @@ tags:
- neural-networks
- backpropagation
created: 2025-12-17
updated: 2026-05-02
updated: 2026-05-07
title: Обратное распространение ошибки - вывод
---
@@ -73,6 +73,143 @@ $$
\frac{dE}{dw_{li}^{(2)}}=(y_l-d_l)F'(S_l^{(2)})u_i
$$
Введём локальную ошибку выходного нейрона:
$$
\delta_l^{(2)}=(y_l-d_l)F'(S_l^{(2)})
$$
Тогда:
$$
\frac{dE}{dw_{li}^{(2)}}=\delta_l^{(2)}u_i
$$
## Обратный проход для скрытого слоя
Теперь нужна производная ошибки по весу первого слоя:
$$
\frac{\partial E}{\partial w_{ij}^{(1)}}
$$
Вес $w_{ij}^{(1)}$ влияет на $E$ не напрямую, а через все выходные нейроны:
$$
w_{ij}^{(1)} \rightarrow u_i \rightarrow y_l \rightarrow E
$$
По правилу цепочки нужно просуммировать вклады всех путей от скрытого нейрона $i$ к выходным нейронам:
$$
\frac{\partial E}{\partial w_{ij}^{(1)}} =
\sum\limits_{l=1}^{m}
\frac{\partial E}{\partial y_l}
\cdot
\frac{\partial y_l}{\partial u_i}
\cdot
\frac{\partial u_i}{\partial w_{ij}^{(1)}}
$$
Первый множитель:
$$
\frac{\partial E}{\partial y_l}=y_l-d_l
$$
Производная выхода $y_l$ по выходу скрытого нейрона $u_i$:
$$
\frac{\partial y_l}{\partial u_i}
=
\frac{\partial y_l}{\partial S_l^{(2)}}
\cdot
\frac{\partial S_l^{(2)}}{\partial u_i}
$$
Так как:
$$
S_l^{(2)}=\sum w_{li}^{(2)}u_i
$$
То:
$$
\frac{\partial y_l}{\partial u_i}
=
F'(S_l^{(2)})w_{li}^{(2)}
$$
Производная выхода скрытого нейрона $u_i$ по весу $w_{ij}^{(1)}$:
$$
\frac{\partial u_i}{\partial w_{ij}^{(1)}}
=
\frac{\partial u_i}{\partial S_i^{(1)}}
\cdot
\frac{\partial S_i^{(1)}}{\partial w_{ij}^{(1)}}
$$
Так как:
$$
S_i^{(1)}=\sum w_{ij}^{(1)}x_j
$$
То:
$$
\frac{\partial u_i}{\partial w_{ij}^{(1)}}
=
F'(S_i^{(1)})x_j
$$
Собираем:
$$
\frac{\partial E}{\partial w_{ij}^{(1)}} =
\sum\limits_{l=1}^{m}
(y_l-d_l)
F'(S_l^{(2)})
w_{li}^{(2)}
F'(S_i^{(1)})
x_j
$$
Вводим локальную ошибку скрытого нейрона:
$$
\delta_i^{(1)}
=
\sum\limits_{l=1}^{m}
(y_l-d_l)
F'(S_l^{(2)})
w_{li}^{(2)}
F'(S_i^{(1)})
$$
Или через ошибку выходного слоя $\delta_l^{(2)}$:
$$
\delta_i^{(1)}
=
F'(S_i^{(1)})
\sum\limits_{l=1}^{m}
\delta_l^{(2)}
w_{li}^{(2)}
$$
Тогда:
$$
\frac{\partial E}{\partial w_{ij}^{(1)}}
=
\delta_i^{(1)}x_j
$$
Ошибка выходного слоя $\delta_l^{(2)}$ проходит назад через вес $w_{li}^{(2)}$, суммируется по всем выходным нейронам и умножается на крутизну активации скрытого слоя. Так получается локальная ошибка $\delta_i^{(1)}$ для каждого скрытого нейрона.
## Связанные заметки
- [[Обратное распространение ошибки]]