vault backup: 2026-05-07 15:27:12
This commit is contained in:
@@ -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)}$ для каждого скрытого нейрона.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[Обратное распространение ошибки]]
|
||||
|
||||
Reference in New Issue
Block a user