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, o retropropagación, es el proceso de determinar cómo la función de pérdida cambia con respecto a cada parámetro en la red neuronal. El objetivo es ajustar estos parámetros de manera que se reduzca la pérdida total.

Este proceso se basa en el algoritmo de descenso de gradiente, que utiliza las derivadas de la pérdida con respecto a los valores de preactivación de cada capa (las salidas en bruto antes de aplicar la función de activación) y las propaga hacia atrás a través de la red.

Dado que cada capa contribuye a la predicción final, los gradientes se calculan paso a paso:

  1. Realizar la propagación hacia adelante para obtener las salidas;
  2. Calcular la derivada de la pérdida con respecto a la preactivación de la salida;
  3. Propagar esta derivada hacia atrás a través de las capas utilizando la regla de la cadena;
  4. Calcular y utilizar los gradientes para los pesos y sesgos para actualizarlos durante el entrenamiento.
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, utilicemos 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, se introducen 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, el primer paso es calcular el gradiente de la pérdida con respecto a las activaciones de la capa de salida, denotado como danda^n.

Luego, utilizando la regla de la cadena, el gradiente de la pérdida con respecto a las pre-activaciones de la capa de salida se calcula como:

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

Aquí, fn(zn)f'^n(z^n) representa la derivada de la función de activación en la capa nn, y el símbolo \odot denota la multiplicación elemento a elemento.

Note
Nota

El símbolo \odot denota la multiplicación elemento a elemento, lo que significa que cada elemento de un vector se multiplica por el elemento correspondiente de otro vector. En contraste, el símbolo \cdot representa el producto punto, utilizado para la multiplicación estándar de matrices o vectores. El término fnf'^n se refiere a la derivada de la función de activación en la capa de salida.

Este valor indica cuán sensible es la función de pérdida a los cambios en los valores de preactivación de la capa de salida.

Después de calcular dzndz^n, el siguiente paso es calcular los gradientes para los pesos y los sesgos:

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

Estos gradientes describen cuánto debe ajustarse cada peso y sesgo en la capa de salida para reducir la pérdida.

Aquí, (an1)T(a^{n-1})^T es el vector de activación transpuesto de la capa anterior. Si el vector original tiene la forma nneurons×1n_{\text{neurons}} \times 1, su transpuesta tiene la forma 1×nneurons1 \times n_{\text{neurons}}.

Para continuar con la retropropagación, se calcula la derivada de la pérdida con respecto a las activaciones de la capa anterior como:

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

Esta expresión permite que la señal de error se propague hacia atrás a través de la red, posibilitando el ajuste de las capas anteriores durante el entrenamiento.

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 preactivaciones;
  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 proceso se repite para cada capa anterior, paso a paso, hasta que se alcanza la capa de entrada.

Actualización de pesos y sesgos

Después de calcular los gradientes para todas las capas, los pesos y sesgos se actualizan utilizando el algoritmo de descenso de gradiente:

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

Aquí, α\alpha representa la tasa de aprendizaje, que controla cuánto se ajustan los parámetros durante cada paso de entrenamiento.

Aquí, α\alpha es la tasa de aprendizaje, un hiperparámetro que determina el tamaño del ajuste aplicado a los pesos y sesgos durante cada paso de actualización.

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

Awesome!

Completion rate improved to 4

bookPropagación Hacia Atrás

Desliza para mostrar el menú

La propagación hacia atrás, o retropropagación, es el proceso de determinar cómo la función de pérdida cambia con respecto a cada parámetro en la red neuronal. El objetivo es ajustar estos parámetros de manera que se reduzca la pérdida total.

Este proceso se basa en el algoritmo de descenso de gradiente, que utiliza las derivadas de la pérdida con respecto a los valores de preactivación de cada capa (las salidas en bruto antes de aplicar la función de activación) y las propaga hacia atrás a través de la red.

Dado que cada capa contribuye a la predicción final, los gradientes se calculan paso a paso:

  1. Realizar la propagación hacia adelante para obtener las salidas;
  2. Calcular la derivada de la pérdida con respecto a la preactivación de la salida;
  3. Propagar esta derivada hacia atrás a través de las capas utilizando la regla de la cadena;
  4. Calcular y utilizar los gradientes para los pesos y sesgos para actualizarlos durante el entrenamiento.
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, utilicemos 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, se introducen 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, el primer paso es calcular el gradiente de la pérdida con respecto a las activaciones de la capa de salida, denotado como danda^n.

Luego, utilizando la regla de la cadena, el gradiente de la pérdida con respecto a las pre-activaciones de la capa de salida se calcula como:

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

Aquí, fn(zn)f'^n(z^n) representa la derivada de la función de activación en la capa nn, y el símbolo \odot denota la multiplicación elemento a elemento.

Note
Nota

El símbolo \odot denota la multiplicación elemento a elemento, lo que significa que cada elemento de un vector se multiplica por el elemento correspondiente de otro vector. En contraste, el símbolo \cdot representa el producto punto, utilizado para la multiplicación estándar de matrices o vectores. El término fnf'^n se refiere a la derivada de la función de activación en la capa de salida.

Este valor indica cuán sensible es la función de pérdida a los cambios en los valores de preactivación de la capa de salida.

Después de calcular dzndz^n, el siguiente paso es calcular los gradientes para los pesos y los sesgos:

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

Estos gradientes describen cuánto debe ajustarse cada peso y sesgo en la capa de salida para reducir la pérdida.

Aquí, (an1)T(a^{n-1})^T es el vector de activación transpuesto de la capa anterior. Si el vector original tiene la forma nneurons×1n_{\text{neurons}} \times 1, su transpuesta tiene la forma 1×nneurons1 \times n_{\text{neurons}}.

Para continuar con la retropropagación, se calcula la derivada de la pérdida con respecto a las activaciones de la capa anterior como:

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

Esta expresión permite que la señal de error se propague hacia atrás a través de la red, posibilitando el ajuste de las capas anteriores durante el entrenamiento.

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 preactivaciones;
  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 proceso se repite para cada capa anterior, paso a paso, hasta que se alcanza la capa de entrada.

Actualización de pesos y sesgos

Después de calcular los gradientes para todas las capas, los pesos y sesgos se actualizan utilizando el algoritmo de descenso de gradiente:

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

Aquí, α\alpha representa la tasa de aprendizaje, que controla cuánto se ajustan los parámetros durante cada paso de entrenamiento.

Aquí, α\alpha es la tasa de aprendizaje, un hiperparámetro que determina el tamaño del ajuste aplicado a los pesos y sesgos durante cada paso de actualización.

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