vault backup: 2026-05-07 15:27:12
This commit is contained in:
@@ -1,152 +0,0 @@
|
||||
---
|
||||
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)}$ для каждого скрытого нейрона.
|
||||
Reference in New Issue
Block a user