Propagación hacia adelante y funciones de pérdida en Python
Una red neuronal está formada por capas de neuronas. En la propagación hacia adelante, la entrada recorre cada capa para producir una predicción, y una función de pérdida puntúa cuánto se aleja esa predicción de la respuesta correcta.
El concepto en palabras sencillas
Una red neuronal está formada por capas de neuronas. En la propagación hacia adelante, la entrada recorre cada capa para producir una predicción, y una función de pérdida puntúa cuánto se aleja esa predicción de la respuesta correcta.
Pasa entradas capa por capa por una pequeña red neuronal y mide el error con el error cuadrático y la entropía cruzada.
Ideas clave
- Una capa densa conecta cada entrada con cada neurona de la capa.
- La salida de una capa es la entrada de la siguiente.
- La pérdida es un único número, y cuanto más baja, mejores son las predicciones.
- Usa el error cuadrático para números y la entropía cruzada para probabilidades y clases.
¿Cuándo se utiliza?
- Entender qué pasa dentro de las redes neuronales y las bibliotecas de IA.
- Aprender la idea antes de implementarla en los retos correspondientes.
- Prepararte para cursos de aprendizaje automático, entrevistas y proyectos.
Pruébalo en acción
Cambia las entradas y el objetivo. Sigue los valores a través de la capa oculta y mira cómo reaccionan ambas pérdidas a la predicción.
Código de ejemplo
import math
def dense(inputs, weights, biases, activation):
# Each row of weights belongs to one neuron in the layer.
return [activation(sum(x * w for x, w in zip(inputs, row)) + b) for row, b in zip(weights, biases)]
relu = lambda z: max(0.0, z)
sigmoid = lambda z: 1 / (1 + math.exp(-z))
x = [1.0, 2.0]
hidden = dense(x, [[0.5, -0.2], [0.3, 0.8]], [0.0, -0.5], relu)
output = dense(hidden, [[1.0, -1.0]], [0.2], sigmoid)
print("hidden layer:", [round(h, 3) for h in hidden])
print("prediction:", round(output[0], 3))
# A loss function measures how wrong the prediction is.
target = 1.0
mse = (output[0] - target) ** 2
bce = -(target * math.log(output[0]) + (1 - target) * math.log(1 - output[0]))
print("squared error:", round(mse, 3))
print("cross-entropy:", round(bce, 3))
Resultado esperado
hidden layer: [0.1, 1.4]
prediction: 0.25
squared error: 0.563
cross-entropy: 1.387
Cómo funciona
dense() calcula una capa, en la que cada fila de pesos es una neurona. La capa oculta usa ReLU y la de salida usa sigmoid para dar una probabilidad. El error cuadrático y la entropía cruzada miden la distancia entre la predicción 0.25 y el objetivo 1.0; el entrenamiento intenta reducirlos.
Cambia los valores y ejecuta el programa en el compilador Python online de CodeUtility sin instalar Python.
Ejercicios prácticos
Modifica las entradas y prueba casos límite antes de usar conjuntos de datos mayores.
- Cambia las entradas o los pesos y predice la salida antes de ejecutar.
- Imprime los valores intermedios para seguir cada paso del cálculo.
- Resuelve los retos enlazados abajo para implementar la idea por tu cuenta.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
- Propagación hacia adelante en una capa densa Calcula las salidas de una capa de neuronas totalmente conectada con la activación que elijas. Intermedio
- Propagación hacia adelante en una red de dos capas Pasa las entradas por una capa oculta ReLU y una capa de salida sigmoide. Intermedio
- Funciones de pérdida: MSE, MAE y entropía cruzada Mide cuán equivocadas son las predicciones de un modelo con el error cuadrático medio, el error absoluto medio o la entropía cruzada binaria. Fácil