Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Entrenamiento del Perceptrón | Red Neuronal Desde Cero
Introducción a las Redes Neuronales

bookDesafío: Entrenamiento del Perceptrón

Antes de proceder con el entrenamiento del perceptrón, tenga en cuenta que utiliza la función de pérdida de entropía cruzada binaria discutida anteriormente. El último concepto clave antes de implementar el retropropagación es la fórmula para la derivada de esta función de pérdida con respecto a las activaciones de salida, ana^n. A continuación se muestran las fórmulas para la función de pérdida y su derivada:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

donde an=y^a^n = \hat{y}

Para verificar que el perceptrón se está entrenando correctamente, el método fit() también imprime la pérdida promedio en cada época. Esto se calcula promediando la pérdida sobre todos los ejemplos de entrenamiento en esa época:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Finalmente, las fórmulas para calcular los gradientes son las siguientes:

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}

Los datos de entrenamiento de ejemplo (X_train) junto con las etiquetas correspondientes (y_train) se almacenan como arreglos de NumPy en el archivo utils.py. Además, las instancias de las funciones de activación también se definen allí:

relu = ReLU()
sigmoid = Sigmoid()
Tarea

Swipe to start coding

El objetivo es completar el proceso de entrenamiento para un perceptrón multicapa implementando el retropropagación y actualizando los parámetros del modelo.

Siga estos pasos cuidadosamente:

  1. Implemente el método backward() en la clase Layer:
  • Calcule los siguientes gradientes:
  • dz: derivada de la pérdida con respecto a los valores de preactivación, utilizando la derivada de la función de activación;
  • d_weights: gradiente de la pérdida con respecto a los pesos, calculado como el producto punto de dz y el vector de entrada transpuesto;
  • d_biases: gradiente de la pérdida con respecto a los sesgos, igual a dz;
  • da_prev: gradiente de la pérdida con respecto a las activaciones de la capa anterior, obtenido multiplicando la matriz de pesos transpuesta por dz.
  • Actualice los pesos y sesgos utilizando la tasa de aprendizaje.
  1. Complete el método fit() en la clase Perceptron:
  • Calcule la salida del modelo llamando al método forward();
  • Calcule la pérdida utilizando la fórmula de entropía cruzada;
  • Calcule danda^n — la derivada de la pérdida con respecto a las activaciones de salida;
  • Recorra hacia atrás las capas, realizando la retropropagación llamando al método backward() de cada capa.
  1. Verifique el comportamiento del entrenamiento:
  • Si todo está implementado correctamente, la pérdida debe disminuir de manera constante en cada época al usar una tasa de aprendizaje de 0.01.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 10
single

single

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 derivative of the binary cross-entropy loss is used in backpropagation?

What is the purpose of printing the average loss at each epoch?

Can you clarify how the gradients are computed using the provided formulas?

close

Awesome!

Completion rate improved to 4

bookDesafío: Entrenamiento del Perceptrón

Desliza para mostrar el menú

Antes de proceder con el entrenamiento del perceptrón, tenga en cuenta que utiliza la función de pérdida de entropía cruzada binaria discutida anteriormente. El último concepto clave antes de implementar el retropropagación es la fórmula para la derivada de esta función de pérdida con respecto a las activaciones de salida, ana^n. A continuación se muestran las fórmulas para la función de pérdida y su derivada:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

donde an=y^a^n = \hat{y}

Para verificar que el perceptrón se está entrenando correctamente, el método fit() también imprime la pérdida promedio en cada época. Esto se calcula promediando la pérdida sobre todos los ejemplos de entrenamiento en esa época:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Finalmente, las fórmulas para calcular los gradientes son las siguientes:

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}

Los datos de entrenamiento de ejemplo (X_train) junto con las etiquetas correspondientes (y_train) se almacenan como arreglos de NumPy en el archivo utils.py. Además, las instancias de las funciones de activación también se definen allí:

relu = ReLU()
sigmoid = Sigmoid()
Tarea

Swipe to start coding

El objetivo es completar el proceso de entrenamiento para un perceptrón multicapa implementando el retropropagación y actualizando los parámetros del modelo.

Siga estos pasos cuidadosamente:

  1. Implemente el método backward() en la clase Layer:
  • Calcule los siguientes gradientes:
  • dz: derivada de la pérdida con respecto a los valores de preactivación, utilizando la derivada de la función de activación;
  • d_weights: gradiente de la pérdida con respecto a los pesos, calculado como el producto punto de dz y el vector de entrada transpuesto;
  • d_biases: gradiente de la pérdida con respecto a los sesgos, igual a dz;
  • da_prev: gradiente de la pérdida con respecto a las activaciones de la capa anterior, obtenido multiplicando la matriz de pesos transpuesta por dz.
  • Actualice los pesos y sesgos utilizando la tasa de aprendizaje.
  1. Complete el método fit() en la clase Perceptron:
  • Calcule la salida del modelo llamando al método forward();
  • Calcule la pérdida utilizando la fórmula de entropía cruzada;
  • Calcule danda^n — la derivada de la pérdida con respecto a las activaciones de salida;
  • Recorra hacia atrás las capas, realizando la retropropagación llamando al método backward() de cada capa.
  1. Verifique el comportamiento del entrenamiento:
  • Si todo está implementado correctamente, la pérdida debe disminuir de manera constante en cada época al usar una tasa de aprendizaje de 0.01.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 10
single

single

some-alt