Cómo aprende de verdad
La lección anterior dejó una pregunta abierta: ¿cómo exactamente ajusta un modelo sus parámetros? Aquí está la respuesta completa, con la pieza que subía la red a la locura — el learning rate — explicada de una vez.
Entrenar un modelo es, en esencia, repetir tres pasos muchísimas veces: medir cuánto se equivoca, calcular en qué dirección hay que mover cada parámetro para equivocarse un poco menos, y moverlo un poquito en esa dirección. La primera pieza — cuánto se equivoca — se llama función de pérdida (loss): un único número que resume, para un ejemplo o un lote de ejemplos, cuán lejos está la predicción del modelo de la respuesta correcta. Cuanto más alta, peor; el objetivo de todo el entrenamiento es hacerla bajar.
La segunda pieza es el gradiente, y es la idea central de todo esto. Para cada parámetro, el gradiente dice si subirlo o bajarlo reduciría la pérdida, y cuánto. Es exactamente como buscar el punto más bajo de un valle con los ojos vendados: no ves el valle entero, pero notas la pendiente bajo tus pies y das un paso cuesta abajo. Repite eso con cada parámetro — pueden ser miles — y tienes descenso de gradiente. En la demo del descenso de gradiente puedes ver tres bolas con distinto tamaño de paso compitiendo por llegar al fondo de una superficie de pérdida en 3D; es la misma mecánica que entrena cualquier red, dibujada en un paisaje que se puede mirar.
El tamaño de ese paso es el learning rate, y es de los números más delicados de todo el entrenamiento. Demasiado pequeño, y el modelo tarda una eternidad en llegar al fondo — o se queda atascado antes de tiempo. Demasiado grande, y en vez de bajar el valle se pasa de largo, rebota a la ladera de enfrente, y puede acabar más arriba que donde empezó: es exactamente lo que viste romper la red neuronal de la lección anterior al subir ese control. No hay un valor universal correcto; hay un rango razonable para cada problema, y encontrarlo suele ser prueba y error.
Queda la pregunta que de verdad importa: ¿cómo se calcula el gradiente de miles de parámetros a la vez? La respuesta es backpropagation, y su ingrediente es una regla de instituto: la regla de la cadena. Una red se puede dibujar como un grafo de operaciones simples encadenadas — multiplicar, sumar, aplicar una no linealidad — y el error final se propaga hacia atrás por ese grafo, capa a capa, multiplicando derivadas locales en cada paso. Nadie deriva a mano una función de miles de parámetros; se deriva cada pieza diminuta por separado y se encadenan los resultados.
En la demo de backpropagation se ve ese grafo con números de verdad: avanzas el forward nodo a nodo, y luego el gradiente fluye hacia atrás con la regla de la cadena escrita en cada paso, así que se puede seguir exactamente de dónde sale cada número. Aplica los gradientes unas cuantas veces seguidas y verás la pérdida bajar delante de ti, la versión más pequeña posible de lo que ocurre miles de veces por segundo al entrenar cualquier red de verdad.
Esta idea no siempre estuvo ahí. En 1958 Rosenblatt propuso el perceptrón: una sola neurona que ajusta sus pesos cada vez que se equivoca, con una garantía matemática — si las dos clases se pueden separar con una línea recta, el perceptrón converge, siempre. El problema llegó con XOR, un problema tan simple que cabe en cuatro puntos, y que ninguna línea recta puede separar. La regla de Rosenblatt no tiene forma de resolverlo: la línea baila para siempre y nunca converge. Ese fracaso, publicado en 1969, congeló buena parte de la investigación en redes neuronales durante casi veinte años. En la demo del perceptrón puedes ver las dos caras: converge limpio con clases separables, y baila sin parar con XOR.
La solución llegó de apilar neuronas y entrenarlas juntas con backpropagation — exactamente la red que rompiste con el learning rate en la lección anterior. Una sola neurona solo puede trazar una línea recta; varias neuronas combinadas, con una no linealidad entre capas, pueden doblar esa línea hasta separar cualquier XOR y casi cualquier otra cosa. El perceptrón no estaba mal planteado: le faltaban compañeros y una forma de entrenarlos a todos a la vez. Esa forma es la que acabas de ver funcionando, nodo a nodo, en la demo de backpropagation.
Práctica
Antes del cuestionario, toca estas demos del laboratorio:
Comprueba lo que has aprendido