Jaime Raúl Toaquiza
Para entrenar a la red, propiamente dicho, se hará uso del error en las salidas de la red; se procece analizando la variación del coste (este coste puede ser el error cuadratico medio, etc)
$$ \cfrac{\partial C}{\partial w} $$
Supongamos una red neuronal de:
$L$ capas
Capa de entrada tenemos 2 variables $x_1$ y $x_2$, más el nodo de sesgo.
La suma ponderada: $y=b+w_1x_1+w_2x_2$
$$ \underbrace{\cfrac{\partial C}{\partial w}}{respecto\;a\; los\;pesos \;w}\quad \underbrace{\cfrac{\partial C}{\partial b}}{respecto\;a\; los\;sesgos \;b}\quad $$
Denotemos por:
Tenemos la función de coste u error
$$ {\color{red}C\Big(}{\color{blue}a\big(}{\color{green}Z^L}{\color{blue}\big)}{\color{red}\Big)}={\color{red}error} $$
→ Es claro que tenemos una composición de funciones, por tant usaremos la regla de la cadena para hallar las derivadas parciales.
Así, tenemos la derivada de la última capa:
$$ \begin{aligned} \cfrac{\partial C}{\partial w^L}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^L}\cdot \cfrac{\partial z^L}{\partial {\color{cyan}w}^L}\\ \\ \cfrac{\partial C}{\partial b^L}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^L}\cdot \cfrac{\partial z^L}{\partial {\color{cyan}b}^L}\\ \\ Z^L&= W^L\cdot a^{L-1}+b^L\\ C(a^L(Z^L))&=error^L \end{aligned} $$
$$ C(a^L_j)=\cfrac{1}{2} \sum_{j} (y_j-a_j^L)^2 $$
Se sigue que la derivada de esta función es:
$$ \cfrac{\partial C}{\partial a^L_j}=\Big(a_j^L-y_j\Big) $$
Consideremos la función de activación sigmoide:
$$ a^L(z^L)=\cfrac{1}{1+e^{-z^L}} $$
la derivada de esta función está dado por:
$$ \cfrac{\partial a^L}{\partial z^L}=a^L(z^L)\cdot \Big(1-a^L(z^L)\Big) $$
Tenemos la suma ponderada
$$ z^L=b^L+\sum_i w_i^La_i^{L-1} $$
así, tenemos las derivadas respecto a cada parámetro:
$$ \begin{cases} \cfrac{\partial z^L}{\partial b^L}=1 \\ \\ \cfrac{\partial z^L}{\partial w^L}=a_i^{L-1} \end{cases} $$
A mode de resumen tenemos:
$$ \begin{cases} \cfrac{\partial C}{\partial w^L}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^L}\cdot \cfrac{\partial z^L}{\partial {\color{cyan}w}^L}\\ \\ \cfrac{\partial C}{\partial b^L}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^L}\cdot \cfrac{\partial z^L}{\partial {\color{cyan}b}^L} \end{cases}\Rightarrow \begin{cases} \cfrac{\partial C}{\partial a^L_j}=\Big(a_j^L-y_j\Big) \\ \\ \cfrac{\partial a^L}{\partial z^L}=a^L(z^L)\cdot \Big(1-a^L(z^L)\Big) \\\\ \cfrac{\partial z^L}{\partial b^L}=1 \\ \\ \cfrac{\partial z^L}{\partial w^L}=a_i^{L-1} \end{cases} $$
Se define el error imputado a la neurona en la capa L como:
$$ \cfrac{\partial C}{\partial w^L}= \underbrace{\color{magenta}\cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^L}}_{\color{magenta}\cfrac{\partial C}{\partial z^L}= \delta ^L}\cdot \cfrac{\partial z^L}{\partial {\color{cyan}w}^L} $$
es decir:
$$ \delta^L=\cfrac{\partial C}{\partial w^L}= \overbrace{\cfrac{\partial C}{\partial a^L}}^{\text{Derv. func de coste}}\cdot \underbrace{\cfrac{\partial a^L}{\partial z^L}}_{Der. func de activación} $$
Así, con los resultados y la nueva notación se tiene:
$$ \begin{cases} \cfrac{\partial C}{\partial w^L}&= \delta^L \cdot a_i^{L-1}\\ \\ \cfrac{\partial C}{\partial b^L}&= \delta^L \end{cases} $$
No os desespereís, que para el cálculo de las derivadas de las capas previas usaremos los resultados de las dervidas de la capa $L$, solo, bastará calcular una derivada más por cada capa.
Las derivadas parciales tienen la siguiente cara:
$$ \begin{aligned} \cfrac{\partial C}{\partial w^{L-1}}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^{L-1}}\cdot {\color{green}\cfrac{\partial a^{L-1}}{\partial z^{L-1}}}\cdot \cfrac{\partial z^{L-1}}{\partial {\color{cyan}w}^{L-1}}\\ \\ \cfrac{\partial C}{\partial b^{L-1}}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^{L-1}}\cdot {\color{green}\cfrac{\partial a^{L-1}}{\partial z^{L-1}}}\cdot \cfrac{\partial z^{L-1}}{\partial {\color{cyan}b}^{L-1}} \\ \\ Z^{L-1}&= W^{L-1}\cdot a^{L-2}+b^{L-1}\\ C(a^L(W^La^{L-1}(W^{L-1}a^{L-2}+b^{L-1})+b^L))&=error^{L-1} \end{aligned} $$
Y finalmente denotemos por: $\delta^{L-1}=\cfrac{\partial C}{\partial z^{L-1}}= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^{L-1}}\cdot {\color{green}\cfrac{\partial a^{L-1}}{\partial z^{L-1}}}$
Así, tenemos las derivadas recursivas:
$$ \begin{cases} \cfrac{\partial C}{\partial w^{L-1}}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^{L-1}}\cdot {\color{green}\cfrac{\partial a^{L-1}}{\partial z^{L-1}}}\cdot \cfrac{\partial z^{L-1}}{\partial {\color{cyan}w}^{L-1}}\\ \\ \cfrac{\partial C}{\partial b^{L-1}}&= \cfrac{\partial C}{\partial a^L}\cdot \cfrac{\partial a^L}{\partial z^{L-1}}\cdot {\color{green}\cfrac{\partial a^{L-1}}{\partial z^{L-1}}}\cdot \cfrac{\partial z^{L-1}}{\partial {\color{cyan}b}^{L-1}} \end{cases} \Rightarrow \begin{cases} \cfrac{\partial C}{\partial w^{L-1}}&= \delta^{L-1 }\cdot a^{L-2}\\ \\ \cfrac{\partial C}{\partial b^{L-1}}&= \delta^{L-1} \end{cases} $$
Cómputo del error de la última capa
$$ \delta^L=\cfrac{\delta C}{\delta a^L}\cdot \cfrac{\partial a^L}{\partial z^L} $$
Retropropagamos el error a la capa anterior
$\delta^{L-1}=W^L\cdot \delta^L\cdot \cfrac{\partial a^{L-1}}{\partial z^{L-1}}$
Calculamos las derivadas de las capa usando el error
$$ \cfrac{\partial C}{\partial b^{L-1}}=\delta ^{L-1},\quad \cfrac{\partial C}{\partial w^{L-1}}=\delta^{L-1}\cdot a^{L-2} $$