¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo aprende una red de sus errores

Después de esta lección: Puedo explicar cómo aprende una red de sus errores.

Lección de 60 min3 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

El descenso del gradiente corrige los pesos

El descenso del gradiente (gradient descent en inglés) es el método con el que una red neuronal aprende. Mide su error y mueve sus pesos un poco hacia donde el error baja.

Repetido miles de veces, este paso pequeño es todo el aprendizaje. Hoy lo haces a mano con un solo peso.

Al final de esta lección

Nota

Puedo explicar cómo aprende una red de sus errores.

Palabras clave

PalabraQué significaEjemplo
Pérdidaun número que mide cuánto se equivoca la red (loss en inglés)
Gradientehacia dónde sube la pérdida si subes el peso
Tasa de aprendizajeel tamaño de cada corrección (learning rate en inglés)tasa = 0.1
Descenso del gradienterepetir pasos que bajan la pérdida
Épocauna vuelta completa por todos los datos

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La pérdida mide cuánto se equivoca la red

Imagina un modelo con un solo peso: predice peso × x. Hoy x vale 2, la temperatura de un día, y debería salir 6, los cientos de alquileres.

Con el peso 1 predice 2. El error es predicción menos objetivo: 2 - 6 = -4. La pérdida es ese error al cuadrado, 16, para que nunca sea negativa.

Ejemplo resuelto: la pérdida con tres pesos

PesoPredicción (peso × 2)ErrorPérdida (error al cuadrado)
12-416
24-24
3600
4824

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La pérdida del peso 1 en el laboratorio

Comando
docker exec jupyter python3 -c "print((2 * 1 - 6) ** 2)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El gradiente dice hacia dónde mover el peso

El gradiente dice cuánto cambia la pérdida si subes el peso un poco. Para este modelo vale 2 × error × x.

Con el peso 1: 2 × -4 × 2 = -16. Es negativo: subir el peso baja la pérdida. Por eso el paso resta el gradiente: peso nuevo = peso - tasa × gradiente.

Ejemplo resuelto: tres pasos con tasa 0,1

PasoPesoPérdidaGradientePeso nuevo
1116-161 + 0,1 × 16 = 2,6
22,60,64-3,22,6 + 0,32 = 2,92
32,920,0256-0,642,92 + 0,064 = 2,984

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cuatro pasos del descenso en Python

Código: python
# Un solo peso w. El modelo predice w * x y debería acertar y.
x = 2
y = 6
w = 1.0
tasa = 0.1

for paso in range(1, 5):
    prediccion = w * x
    perdida = (prediccion - y) ** 2
    gradiente = 2 * (prediccion - y) * x
    w = w - tasa * gradiente
    print("paso", paso, "pérdida", round(perdida, 4), "peso nuevo", round(w, 4))
# Cambia tasa a 0.3 y ejecuta otra vez. ¿Qué le pasa al peso?

La tasa fija el tamaño del paso

Una tasa pequeña da pasos pequeños y seguros, pero lentos. Una tasa grande da pasos largos.

Si es demasiado grande, el peso salta de un lado al otro del valor bueno, y cada salto es mayor que el anterior. La pérdida sube en vez de bajar.

En una red grande el cálculo del gradiente se encadena capa por capa. Ese método se llama retropropagación.

Ejemplo resuelto: dos tasas desde el peso 1

PasoTasa 0,1Tasa 0,3
12,65,8
22,92-0,92
32,9848,488
42,9968-4,6832

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error muy común

Advertencia

Mucha gente cree que una tasa más alta aprende más rápido. Solo ocurre mientras el paso no se pase del valor bueno. Con la tasa 0,3 de la tabla el peso se aleja del 3 cada vez más. Empieza con una tasa pequeña y súbela con cuidado.

El gradiente del peso 1

Comando
docker exec jupyter python3 -c "print(2 * (2 * 1 - 6) * 2)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El primer paso con tasa 0,1

Comando
docker exec jupyter python3 -c "print(round(1 - 0.1 * -16, 2))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos: una tasa exacta

En el código de arriba, cambia la tasa a 0.125 y ejecuta otra vez. Mira el peso del primer paso.

Después prueba 0.25. Explica con la tabla qué le pasa al peso y por qué una tasa de 0,25 no lo deja quieto en 3.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.