vault backup: 2026-05-07 15:32:13

This commit is contained in:
Dmitry
2026-05-07 15:32:13 +03:00
parent 0defa25df0
commit 6295e1669f
5 changed files with 190 additions and 45 deletions
@@ -1,5 +1,5 @@
---
status: seed
status: stable
type: concept
tags:
- machine-learning
@@ -12,7 +12,9 @@ title: Обратное распространение ошибки - вывод
# Обратное распространение ошибки - вывод
Эта заметка фиксирует математический вывод градиента для алгоритма [[Обратное распространение ошибки]]. Общий контекст нейронных сетей находится в [[Нейронные сети]].
Эта заметка фиксирует математический вывод градиентов для алгоритма [[Обратное распространение ошибки]]. Общий контекст нейронных сетей находится в [[Нейронные сети]].
Рассматривается сеть с одним скрытым слоем. Bias для краткости не записан: его градиент считается так же, как градиент веса при входе, равном $1$.
## Обозначения
@@ -25,7 +27,8 @@ title: Обратное распространение ошибки - вывод
> $S_{l}^{(2)}$ — взвешенная сумма на входе нейрона $l$ во втором слое
> $y_{l}$ — выход нейрона $l$ второго слоя
> $d_{l}$ — истинное значение
> $F$ — функция активации
> $F$ — функция активации
> $\delta$ — локальная ошибка нейрона
## Прямой проход
@@ -33,6 +36,7 @@ $$
\begin{align*}
S_{i}^{(1)} &= \sum\limits_{j=1}^{n}w_{ij}^{(1)}x_{j} \\
u_{i} &= F(S_{i}^{(1)}) \\
S_l^{(2)} &= \sum\limits_{i=1}^{k}w_{li}^{(2)}u_i \\
y_{l} &= F(S_{l}^{(2)}) \\
E &= \frac{1}{2}\sum\limits_{l=1}^{m}(y_{l}-d_{l})^{2}
\end{align*}
@@ -44,33 +48,33 @@ $$
$$
\begin{align*}
\frac{dE}{dw_{li}^{(2)}} &=
\frac{dE}{dy_{l}}
\frac{\partial E}{\partial w_{li}^{(2)}} &=
\frac{\partial E}{\partial y_{l}}
\cdot
\frac{dy_{l}}{dS_{l}^{(2)}}
\frac{\partial y_{l}}{\partial S_{l}^{(2)}}
\cdot
\frac{dS_{l}^{(2)}}{dw_{li}^{(2)}}
\frac{\partial S_{l}^{(2)}}{\partial w_{li}^{(2)}}
\end{align*}
$$
Компоненты производной:
$$
\frac{dE}{dy_l}=y_l-d_l
\frac{\partial E}{\partial y_l}=y_l-d_l
$$
$$
\frac{dy_l}{dS_l^{(2)}}=F'(S_l^{(2)})
\frac{\partial y_l}{\partial S_l^{(2)}}=F'(S_l^{(2)})
$$
$$
\frac{dS_l^{(2)}}{dw_{li}^{(2)}}=u_i
\frac{\partial S_l^{(2)}}{\partial w_{li}^{(2)}}=u_i
$$
Итог:
$$
\frac{dE}{dw_{li}^{(2)}}=(y_l-d_l)F'(S_l^{(2)})u_i
\frac{\partial E}{\partial w_{li}^{(2)}}=(y_l-d_l)F'(S_l^{(2)})u_i
$$
Введём локальную ошибку выходного нейрона:
@@ -82,7 +86,7 @@ $$
Тогда:
$$
\frac{dE}{dw_{li}^{(2)}}=\delta_l^{(2)}u_i
\frac{\partial E}{\partial w_{li}^{(2)}}=\delta_l^{(2)}u_i
$$
## Обратный проход для скрытого слоя
@@ -130,7 +134,7 @@ $$
Так как:
$$
S_l^{(2)}=\sum w_{li}^{(2)}u_i
S_l^{(2)}=\sum\limits_{i=1}^{k}w_{li}^{(2)}u_i
$$
То:
@@ -154,7 +158,7 @@ $$
Так как:
$$
S_i^{(1)}=\sum w_{ij}^{(1)}x_j
S_i^{(1)}=\sum\limits_{j=1}^{n}w_{ij}^{(1)}x_j
$$
То:
@@ -210,7 +214,34 @@ $$
Ошибка выходного слоя $\delta_l^{(2)}$ проходит назад через вес $w_{li}^{(2)}$, суммируется по всем выходным нейронам и умножается на крутизну активации скрытого слоя. Так получается локальная ошибка $\delta_i^{(1)}$ для каждого скрытого нейрона.
## Итоговые формулы
Для слоя $r$ общий шаблон такой:
$$
\frac{\partial E}{\partial w_{ij}^{(r)}}=\delta_i^{(r)}a_j^{(r-1)}
$$
где $a_j^{(r-1)}$ - выход предыдущего слоя. Для первого слоя $a_j^{(0)}=x_j$, для второго слоя $a_i^{(1)}=u_i$.
Для выходного слоя:
$$
\delta_l^{(2)}=(y_l-d_l)F'(S_l^{(2)})
$$
Для скрытого слоя:
$$
\delta_i^{(1)}
=
F'(S_i^{(1)})
\sum\limits_{l=1}^{m}
\delta_l^{(2)}w_{li}^{(2)}
$$
## Связанные заметки
- [[Обратное распространение ошибки]]
- [[Нейронные сети]]
- [[Линейные модели]]