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:

Derivada de la última capa (capa de salida)

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} $$

Función de coste - Error cuadrático medio

$$ 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) $$

Función de activación - Sigmoide

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) $$

Derivada de la suma ponderada

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} $$

Error imputado a la neurona

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} $$

Derivadas parciales de capas previas

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} $$

Notaciones

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} $$

Resumen:

  1. Cómputo del error de la última capa

    $$ \delta^L=\cfrac{\delta C}{\delta a^L}\cdot \cfrac{\partial a^L}{\partial z^L} $$

  2. 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}}$

  3. 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} $$