Files
SecondBrain/99 System/Archive/Обратное распространение ошибки - вывод.md
T
2026-05-07 15:27:12 +03:00

153 lines
4.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
status: seed
type: concept
tags: []
created: 2025-12-17
updated: 2026-05-07
title: Обратное распространение ошибки - вывод
---
# Обратное распространение ошибки - вывод
> [!note] Обозначения
> $x_{j}$ - $j$-ый вход
> $w_{ij}^{(1)}$ - вес от входа $j$ к скрытому нейрону $i$
> $w_{li}^{(2)}$ - вес от скрытого нейрона $i$ к выходу $l$
> $S_{i}^{(1)}$ - взвешенная сумма на входе нейрона $i$ в слое *1*
> $u_{i}$ - выход нейрона $i$ слоя *1* (после активации)
> $S_{l}^{(2)}$ - взвешенная сумма на входе нейрона $l$ слоя *2*
> $y_{l}$ - выход нейрона $l$ слоя *2* (предсказание)
> $d_{l}$ - истинное значение
> $F$ - функция активации (напр. сигмоида)
## Прямой проход
$$\begin{align*}
&S_{i}^{(1)} = \sum\limits_{j=1}^{n}w_{ij}^{(1)}x_{j} \text{ - взвешенная сумма на первом слое}\\
&u_{i}=F(S_{i}^{(1)}) \\
&y_{l}=F(s_{l}^{(2)}) \\
&E = \frac{1}{2}*\sum\limits_{l=1}^{m}(y_{l}-d_{l})^{2}
\end{align*}$$
## Обратный проход (выходной слой)
*Цепное правило:*
$$\begin{align*}
\frac{dE}{dw_{li}^{(2)}}&=\frac{dE}{dy_{l}}* \frac{dy_{l}}{dS_{l}^{(2)}}*\frac{dS_{l}^{(2)}}{dw_{li}^{(2)}}\\
\end{align*}$$
Отдельно вычисляем каждую часть:
$$\frac{dE}{dy_{l}} = y_{l}-d_{l}$$
(производная MSE):$$\frac{dy_{l}}{dS_{l}^{(2)}}=f^{'}(s_{l}^{(2)})=\frac{df(s_{l}^{(2)})}{ds_{l}^{(2)}}$$(производная функции активации):$$\frac{ds_{l}^{(2)}}{dw_{li}^{(2)}}=u_{i}$$
Собираем вместе:
$$\frac{dE}{dw_{li}^{(2)}}=(y_{l}-d_{l})*f^{'}(s_{l}^{(2)})*u_{i}$$
Введем сокращение $\delta_{l}^{(2)}$:
$$\delta_{l}^{(2)}=(y_{l}-d_{l})*f^{'}(s_{l}^{(2)})$$
Тогда:$$\frac{dE}{dw_{li}^{(2)}}=\delta_{l}^{(2)}*u_{i}$$
**Интерпретация:** $\delta_{l}^{(2)}$ — это "ошибка" на выходном нейроне $l$ (разница между предсказанием и истиной), помноженная на крутизну функции активации.
### Обратный проход (скрытый слой)
Теперь нужна производная ошибки по весу первого слоя:
$$\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}
*
\frac{\partial y_l}{\partial u_i}
*
\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)}}
*
\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)}}
*
\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)}$:
$$
\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)}$ для каждого скрытого нейрона.