Desafí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, an. A continuación se muestran las fórmulas para la función de pérdida y su derivada:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ydonde an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Finalmente, las fórmulas para calcular los gradientes son las siguientes:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlLos 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()
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:
- Implemente el método
backward()en la claseLayer:
- 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 dedzy el vector de entrada transpuesto;d_biases: gradiente de la pérdida con respecto a los sesgos, igual adz;da_prev: gradiente de la pérdida con respecto a las activaciones de la capa anterior, obtenido multiplicando la matriz de pesos transpuesta pordz.- Actualice los pesos y sesgos utilizando la tasa de aprendizaje.
- Complete el método
fit()en la clasePerceptron:
- Calcule la salida del modelo llamando al método
forward(); - Calcule la pérdida utilizando la fórmula de entropía cruzada;
- Calcule dan — 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.
- 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
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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?
Awesome!
Completion rate improved to 4
Desafí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, an. A continuación se muestran las fórmulas para la función de pérdida y su derivada:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ydonde an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Finalmente, las fórmulas para calcular los gradientes son las siguientes:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlLos 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()
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:
- Implemente el método
backward()en la claseLayer:
- 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 dedzy el vector de entrada transpuesto;d_biases: gradiente de la pérdida con respecto a los sesgos, igual adz;da_prev: gradiente de la pérdida con respecto a las activaciones de la capa anterior, obtenido multiplicando la matriz de pesos transpuesta pordz.- Actualice los pesos y sesgos utilizando la tasa de aprendizaje.
- Complete el método
fit()en la clasePerceptron:
- Calcule la salida del modelo llamando al método
forward(); - Calcule la pérdida utilizando la fórmula de entropía cruzada;
- Calcule dan — 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.
- 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
¡Gracias por tus comentarios!
single