--- status: seed type: concept tags: [] created: 2025-12-17 updated: 2026-05-07 aliases: - Обратное распространение ошибки - вывод --- # Обратное распространение ошибки - вывод > [!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)}$ для каждого скрытого нейрона.