Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Propagación Hacia Atrás | Red Neuronal Desde Cero
Introducción a las Redes Neuronales

bookPropagación Hacia Atrás

La propagación hacia atrás (backprop) es el proceso de calcular cómo la función de pérdida cambia con respecto a cada parámetro en la red. El objetivo es actualizar los parámetros en la dirección que reduce la pérdida.

Para lograr esto, se utiliza el algoritmo de descenso de gradiente y se calculan las derivadas de la pérdida con respecto a los valores de preactivación de cada capa (valores de salida en bruto antes de aplicar la función de activación) y se propagan hacia atrás.

Cada capa contribuye a la predicción final, por lo que los gradientes deben calcularse de manera estructurada:

  1. Realizar la propagación hacia adelante;
  2. Calcular la derivada de la pérdida con respecto a la preactivación de salida;
  3. Propagar esta derivada hacia atrás a través de las capas utilizando la regla de la cadena;
  4. Calcular los gradientes para los pesos y sesgos para actualizarlos.
Note
Nota

Los gradientes representan la tasa de cambio de una función con respecto a sus entradas, es decir, son sus derivadas. Indican cuánto afecta un pequeño cambio en los pesos, sesgos o activaciones a la función de pérdida, guiando el proceso de aprendizaje del modelo mediante el descenso de gradiente.

Notación

Para clarificar la explicación, utilizaremos la siguiente notación:

  • WlW^l es la matriz de pesos de la capa ll;
  • blb^l es el vector de sesgos de la capa ll;
  • zlz^l es el vector de preactivaciones de la capa ll;
  • ala^l es el vector de activaciones de la capa ll;

Por lo tanto, estableciendo a0a^0 como xx (las entradas), la propagación hacia adelante en un perceptrón con n capas puede describirse como la siguiente secuencia de operaciones:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Para describir la retropropagación matemáticamente, introducimos las siguientes notaciones:

  • dalda^l: derivada de la pérdida con respecto a las activaciones en la capa ll;
  • dzldz^l: derivada de la pérdida con respecto a las pre-activaciones en la capa ll (antes de aplicar la función de activación);
  • dWldW^l: derivada de la pérdida con respecto a los pesos en la capa ll;
  • dbldb^l: derivada de la pérdida con respecto a los sesgos en la capa ll.

Cálculo de gradientes para la capa de salida

En la capa final nn, primero se calcula el gradiente de la pérdida con respecto a las activaciones de la capa de salida, danda^n. Luego, utilizando la regla de la cadena, se calcula el gradiente de la pérdida con respecto a las pre-activaciones de la capa de salida:

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)
Note
Nota

El símbolo \odot representa la multiplicación elemento a elemento. Como estamos trabajando con vectores y matrices, el símbolo de multiplicación habitual \cdot representa el producto punto en su lugar. fnf'^n es la derivada de la función de activación de la capa de salida.

Esta cantidad representa cuán sensible es la función de pérdida a los cambios en la pre-activación de la capa de salida.

Una vez que tenemos dzn\text d z^n, calculamos los gradientes para los pesos y los sesgos:

dWn=dzn(an1)Tdbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T\\ db^n &= dz^n \end{aligned}

donde (an1)T(a^{n-1})^T es el vector transpuesto de activación de la capa anterior. Dado que el vector original es un vector de nneurons×1n_{neurons} \times 1, el vector transpuesto es de 1×nneurons1 \times n_{neurons}.

Para propagar esto hacia atrás, calculamos la derivada de la pérdida con respecto a las activaciones de la capa anterior:

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Propagación de Gradientes a las Capas Ocultas

Para cada capa oculta ll el procedimiento es el mismo. Dado dalda^l:

  1. Calcular la derivada de la pérdida con respecto a las pre-activaciones;
  2. Calcular los gradientes para los pesos y los sesgos;
  3. Calcular dal1da^{l-1} para propagar la derivada hacia atrás.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Este paso se repite hasta que se alcanza la capa de entrada.

Actualización de pesos y sesgos

Una vez que se han calculado los gradientes para todas las capas, se actualizan los pesos y sesgos utilizando descenso por gradiente:

Wl=WlαdWlbl=blαdbl\begin{aligned} W^l &= W^l - \alpha \cdot dW^l\\ b^l &= b^l - \alpha \cdot db^l \end{aligned}

donde α\alpha es la tasa de aprendizaje, que controla cuánto se ajustan los parámetros.

question mark

Durante la retropropagación, ¿cómo actualiza una red neuronal sus pesos y sesgos para minimizar la función de pérdida?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

Can you explain how the chain rule is applied in backpropagation?

What is the difference between pre-activations and activations?

Can you provide a step-by-step example of backpropagation for a simple network?

Awesome!

Completion rate improved to 4

bookPropagación Hacia Atrás

Desliza para mostrar el menú

La propagación hacia atrás (backprop) es el proceso de calcular cómo la función de pérdida cambia con respecto a cada parámetro en la red. El objetivo es actualizar los parámetros en la dirección que reduce la pérdida.

Para lograr esto, se utiliza el algoritmo de descenso de gradiente y se calculan las derivadas de la pérdida con respecto a los valores de preactivación de cada capa (valores de salida en bruto antes de aplicar la función de activación) y se propagan hacia atrás.

Cada capa contribuye a la predicción final, por lo que los gradientes deben calcularse de manera estructurada:

  1. Realizar la propagación hacia adelante;
  2. Calcular la derivada de la pérdida con respecto a la preactivación de salida;
  3. Propagar esta derivada hacia atrás a través de las capas utilizando la regla de la cadena;
  4. Calcular los gradientes para los pesos y sesgos para actualizarlos.
Note
Nota

Los gradientes representan la tasa de cambio de una función con respecto a sus entradas, es decir, son sus derivadas. Indican cuánto afecta un pequeño cambio en los pesos, sesgos o activaciones a la función de pérdida, guiando el proceso de aprendizaje del modelo mediante el descenso de gradiente.

Notación

Para clarificar la explicación, utilizaremos la siguiente notación:

  • WlW^l es la matriz de pesos de la capa ll;
  • blb^l es el vector de sesgos de la capa ll;
  • zlz^l es el vector de preactivaciones de la capa ll;
  • ala^l es el vector de activaciones de la capa ll;

Por lo tanto, estableciendo a0a^0 como xx (las entradas), la propagación hacia adelante en un perceptrón con n capas puede describirse como la siguiente secuencia de operaciones:

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Para describir la retropropagación matemáticamente, introducimos las siguientes notaciones:

  • dalda^l: derivada de la pérdida con respecto a las activaciones en la capa ll;
  • dzldz^l: derivada de la pérdida con respecto a las pre-activaciones en la capa ll (antes de aplicar la función de activación);
  • dWldW^l: derivada de la pérdida con respecto a los pesos en la capa ll;
  • dbldb^l: derivada de la pérdida con respecto a los sesgos en la capa ll.

Cálculo de gradientes para la capa de salida

En la capa final nn, primero se calcula el gradiente de la pérdida con respecto a las activaciones de la capa de salida, danda^n. Luego, utilizando la regla de la cadena, se calcula el gradiente de la pérdida con respecto a las pre-activaciones de la capa de salida:

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)
Note
Nota

El símbolo \odot representa la multiplicación elemento a elemento. Como estamos trabajando con vectores y matrices, el símbolo de multiplicación habitual \cdot representa el producto punto en su lugar. fnf'^n es la derivada de la función de activación de la capa de salida.

Esta cantidad representa cuán sensible es la función de pérdida a los cambios en la pre-activación de la capa de salida.

Una vez que tenemos dzn\text d z^n, calculamos los gradientes para los pesos y los sesgos:

dWn=dzn(an1)Tdbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T\\ db^n &= dz^n \end{aligned}

donde (an1)T(a^{n-1})^T es el vector transpuesto de activación de la capa anterior. Dado que el vector original es un vector de nneurons×1n_{neurons} \times 1, el vector transpuesto es de 1×nneurons1 \times n_{neurons}.

Para propagar esto hacia atrás, calculamos la derivada de la pérdida con respecto a las activaciones de la capa anterior:

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Propagación de Gradientes a las Capas Ocultas

Para cada capa oculta ll el procedimiento es el mismo. Dado dalda^l:

  1. Calcular la derivada de la pérdida con respecto a las pre-activaciones;
  2. Calcular los gradientes para los pesos y los sesgos;
  3. Calcular dal1da^{l-1} para propagar la derivada hacia atrás.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Este paso se repite hasta que se alcanza la capa de entrada.

Actualización de pesos y sesgos

Una vez que se han calculado los gradientes para todas las capas, se actualizan los pesos y sesgos utilizando descenso por gradiente:

Wl=WlαdWlbl=blαdbl\begin{aligned} W^l &= W^l - \alpha \cdot dW^l\\ b^l &= b^l - \alpha \cdot db^l \end{aligned}

donde α\alpha es la tasa de aprendizaje, que controla cuánto se ajustan los parámetros.

question mark

Durante la retropropagación, ¿cómo actualiza una red neuronal sus pesos y sesgos para minimizar la función de pérdida?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 7
some-alt