4 votos

Cómo derivar la ecuación recursiva de la retropropagación para redes neuronales para $\delta_j = \frac{\partial E_n}{ \partial a_j} $

Estoy siguiendo la derivación para la propagación hacia atrás presentada en el libro de Bishop Pattern Recognition and Machine Learning y tuve algunas confusiones al seguir la derivación presentada en la sección 5.3.1.

En ese capítulo presentan la aplicación de la regla de la cadena para las derivadas parciales sobre la definición de $\delta_j$ y obtener la ecuación 5.55:

$$ \delta_j \equiv \frac{\partial E_n}{ \partial a_j} = \sum_k \frac{\partial E_n}{ \partial a_k} \frac{\partial a_k}{ \partial a_j} $$

donde la suma se realiza sobre todas las unidades $k$ a qué unidad $j$ envía conexiones.

Mi pregunta está en cómo pasan de la ecuación 5.55 a la ecuación 5.56:

$$ \delta_j = h'(a_j) \sum_k w_{kj} \delta_k$$

En el capítulo del libro sí intentan explicar cómo se produjo esa ecuación con el siguiente párrafo:

Si ahora sustituimos la definición de $\delta$ dada por la ecuación (5.51) $\delta \equiv \frac{\partial E_n}{ \partial a_j}$ en la ecuación (5.55) $ \delta_j \equiv \frac{\partial E_n}{ \partial a_j} = \sum_k \frac{\partial E_n}{ \partial a_k} \frac{\partial a_k}{ \partial a_j} $ y hacer uso de (5.48) $a_j = \sum_i w_{ji} z_i$ y (5.49) $z_j = h(a_j) $ obtenemos la siguiente fórmula de retropropagación (5.56) $ \delta_j = h'(a_j) \sum_k w_{kj} \delta_k$

Básicamente, no está 100% claro cómo utilizaron todos esos pasos para conseguir $ \delta_j = h'(a_j) \sum_k w_{kj} \delta_k$ de $ \delta_j \equiv \frac{\partial E_n}{ \partial a_j} = \sum_k \frac{\partial E_n}{ \partial a_k} \frac{\partial a_k}{ \partial a_j} $ .

He intentado aplicar esos pasos y voy a mostrar lo que he probado hasta ahora:

Primero sustituí la definición de $\delta$ a la regla de la cadena multivariable para llegar desde $ \delta_j \equiv \frac{\partial E_n}{ \partial a_j} = \sum_k \frac{\partial E_n}{ \partial a_k} \frac{\partial a_k}{ \partial a_j} $ a:

$$ \delta_j = \sum_k \delta_k \frac{\partial a_k}{ \partial a_j} $$

entonces supuse que de alguna manera usaron la regla de la cadena de nuevo en $ \frac{\partial a_k}{ \partial a_j} $ y de alguna manera involucrado $\frac{ \partial h(a_j) }{\partial a_j} = h'(a_j)$ a ella y luego la sustituyó de nuevo. Aunque no me queda 100% claro cómo se hizo. ¿Alguien tiene una idea de cómo se hizo?


Como referencia pegaré la sección correspondiente del libro para ayudar:

enter image description here

enter image description here

0 votos

¿Qué tiene de malo la respuesta de @Eric-Farng?

0 votos

@StevieP Lo siento, no había vuelto a stats.stackechance, así que no había visto su respuesta (encontré una explicación diferente de este concepto con una notación mejor, en los vídeos de las clases de Caltech, así que entiendo mejor el concepto, aunque la explicación y la notación de Bishop me siguen pareciendo muy confusas). Sin embargo, acabo de hacer mi pregunta a Eric para entender esta explicación.

2voto

Alex Puntos 2961

Los tres primeros pasos son sólo las sustituciones indicadas en la explicación.

El cuarto paso merece una pequeña explicación. (5.55) amplía la regla de la cadena utilizando "todas las unidades $k$ a qué unidad $j$ envía conexiones". Entonces, (5.48) se expande $a_k$ en términos de sus entradas feed forward, la misma capa que $a_j$ es de. Por ejemplo, en una red neuronal de 3 capas, dejemos que $a_j$ sea una de las unidades de la capa oculta. Entonces $a_k$ serían las unidades de la capa de salida que $a_j$ envía conexiones a. $a_k$ se calcula a partir de las unidades ocultas y que es $a_i$ . Así que $a_j$ y $a_i$ son la capa oculta. Así que la derivada parcial es cero, excepto cuando $i=j$ por lo que sólo nos queda un plazo.

El último paso es porque $h'(a_j)$ no depende de $k$ .

$$ \begin{align} \delta_j \equiv \frac{\partial E_n}{ \partial a_j} &= \sum_k \frac{\partial E_n}{ \partial a_k} \frac{\partial a_k}{ \partial a_j} \quad (5.55)\\ &= \sum_k \delta_k \frac{\partial a_k}{ \partial a_j} \quad (5.51, \text{definition of } \delta_j)\\ &= \sum_k \delta_k \frac{\partial}{ \partial a_j}\big(\sum_i w_{ki}z_i) \quad (5.48)\\ &= \sum_k \delta_k \frac{\partial}{ \partial a_j}\big(\sum_i w_{ki}h(a_i)) \quad (5.49)\\ &= \sum_k \delta_k w_{kj}h'(a_j)\\ &= h'(a_j)\sum_k \delta_k w_{kj} \end{align} $$

0 votos

El $a_k$ y $a_j$ son de diferentes capas ¿verdad? Es que me cuesta seguir los pasos 4 a 5 de tu prueba cuando desaparece la suma. ¿Te importaría añadir algunos detalles?

0 votos

@Pinocchio Sí, $a_k$ y $a_j$ son de capas diferentes. Pero $a_k$ es una suma de funciones de sus entradas $a_i$ que es la misma capa que $a_j$ . He editado el post con algunos detalles más intentando responder mejor a tu pregunta.

0 votos

Por qué se puede tirar de la función no lineal $h$ que suele aplicarse a $\sum w_{ji}z_{i}$ ¿en la suma?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X