5.7 KiB
status, type, tags, created, updated, aliases
| status | type | tags | created | updated | aliases | ||||
|---|---|---|---|---|---|---|---|---|---|
| stable | concept |
|
2025-12-17 | 2026-05-08 |
|
Backpropagation для однослойного перцептрона
Эта заметка фиксирует математический вывод градиентов для алгоритма Обратное распространение ошибки на примере сети с одним скрытым слоем. Общая схема для произвольного числа слоёв вынесена в Backpropagation для многослойной нейронной сети.
Bias для краткости не записан: его градиент считается так же, как градиент веса при входе, равном 1.
Обозначения
[!note] Обозначения
x_j- $j$-й вход
w_{ij}^{(1)}- вес от входаjк скрытому нейронуi
w_{li}^{(2)}- вес от скрытого нейронаiк выходуl
S_i^{(1)}- взвешенная сумма на входе нейронаiв первом слое
u_i- выход нейронаiпервого слоя после активации
S_l^{(2)}- взвешенная сумма на входе нейронаlво втором слое
y_l- выход нейронаlвторого слоя
d_l- истинное значение
F- функция активации
\delta- локальная ошибка нейрона
Прямой проход
\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*}
Обратный проход для выходного слоя
Для веса w_{li}^{(2)} используется правило цепочки:
\frac{\partial E}{\partial w_{li}^{(2)}} =
\frac{\partial E}{\partial y_l}
\cdot
\frac{\partial y_l}{\partial S_l^{(2)}}
\cdot
\frac{\partial S_l^{(2)}}{\partial w_{li}^{(2)}}
Компоненты производной:
\frac{\partial E}{\partial y_l}=y_l-d_l
\frac{\partial y_l}{\partial S_l^{(2)}}=F'(S_l^{(2)})
\frac{\partial S_l^{(2)}}{\partial w_{li}^{(2)}}=u_i
Итог:
\frac{\partial E}{\partial w_{li}^{(2)}}=(y_l-d_l)*F'(S_l^{(2)})*u_i
Введём локальную ошибку выходного нейрона:
\delta_l^{(2)}=(y_l-d_l)*F'(S_l^{(2)})
Тогда:
\frac{\partial E}{\partial w_{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\limits_{i=1}^{k}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\limits_{j=1}^{n}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
Итоговые формулы
Для слоя 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)}
Связанные заметки
- Обратное распространение ошибки
- Backpropagation для многослойной нейронной сети
- Нейронные сети
- Линейные модели