Actualmente estoy tratando de enseñarme a mí mismo cómo codificar una red neuronal y quiero una comprensión de las matemáticas tan buena como sea posible para alguien que obtuvo una D- en cálculo hace más de 15 años y no ha tomado una clase de matemáticas desde entonces. Basta con decir que soy un principiante en matemáticas pero he estado leyendo/viendo vídeos durante semanas. Tengo una buena comprensión de gran parte de lo que va en los algoritmos, pero - en gran parte porque lucho con la regla de la cadena - Estoy absolutamente perplejo por el algoritmo de retropropagación, específicamente cómo derivar el término de error.
Todas las ecuaciones que estoy utilizando se pueden encontrar aquí:
Esto es lo que sé:
Esta es la ecuación de error que representa la suma del error al cuadrado. $E = \frac{1}{2} $$ (t_k - a_k)^2 $
En una red neuronal básicamente tienes una salida que está asociada a unos pesos. Queremos cambiar los pesos para reducir el error. $ \bigtriangleup W \propto- \frac{\partial E}{\partial W} $
Bien hasta ahora. ${\partial E}$ no está directamente relacionado con los pesos por lo que entiendo que tenemos que utilizar la regla de la cadena aquí.
E" es una función de $a_k$ que es a su vez una función de una entrada neta ( $net_k$ ) que es en sí misma una función de los pesos. Así que según el enlace en última instancia, la ecuación para la retropropagación es la siguiente:
${\frac{\partial E}{\partial a_k}}\times {\frac{\partial a_k}{\partial net_k}}\times {\frac{\partial net_k}{\partial w_{jk}}} $
Ok, así que tengo ${\frac{\partial E}{\partial a_k}}$ - se utiliza la regla de la potencia. Multiplicas 2 x .5 para que se cancele y la suma también se cancela así que la derivada aquí es sólo $-(t_k - a_k)$ . Hasta ahora he conseguido esto.
Así que $a_k$ es la función de activación que para un sigmoide es ${\frac{1}{1+e^{-z}}}$ y aquí es donde me pierdo. Así que la derivada sigmoidea es $a_k(1-a_k)$ pero no tengo ni idea de por qué. El enlace presenta la ecuación sigmoidea como ${(1+e^{-net_k})^{-1}}$ lo que lleva a ${\frac{\partial a_k}{\partial net_k}} = {\frac{e^{-net_k}}{(1+e^{-net_k})^{2}}}$ pero no entiendo esta derivación. ¿Podría alguien guiarme, posiblemente explicando qué reglas está utilizando para llegar a esto?
Por último, al realizar ${\frac{\partial net_k}{\partial w_{jk}}}$ el artículo dice:
Obsérvese que sólo un término de la suma neta tendrá una derivada distinta de cero: de nuevo la asociada al peso particular que estamos considerando.
Esto significa que ciertos pesos van a tener derivadas de 0 por lo que sólo tenemos que considerar... creo... los pesos en... ¿'j'? Claramente no estoy seguro aquí. Entonces ellos declaran: ${\frac{\partial net_k}{\partial w_{jk}}} = {\frac{\partial(w_{kj}a_j)}{\partial{w_{kj}}} = a_j}$ Conceptualmente entiendo que la idea detrás de las derivadas parciales es tomar lo que no está en la ecuación y tratarlo como una constante, así que en este ejemplo estamos tratando $a_j$ como una constante. ¿Por qué entonces la derivada $a_j$ ? ¿No debería derivarse como 0? Además, ¿dónde han ido a parar las w? ¿Qué tipo de reglas se utilizan en la derivación de estas variables? No estoy seguro de si se utiliza la regla de la potencia/regla del cociente/etc. (obviamente no pero sólo como ejemplos) para obtener este resultado.
Y luego, para obtener el cambio de peso real, sólo tienes que multiplicar todos estos resultados, ¿verdad?
Está claro que soy un absoluto idiota matemático. Si alguien pudiera ponerse a mi nivel y ayudarme, se lo agradecería muchísimo.