153 lines
4.9 KiB
Markdown
153 lines
4.9 KiB
Markdown
---
|
||
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)}$ для каждого скрытого нейрона.
|