Por Eduardo Cesar Garrido Merchán
Profesor de Métodos Cuantitativos, Universidad Pontificia Comillas.
Pincha aquí para ver el vídeo sobre este post
En artículos anteriores, hemos visto cómo las palabras se transforman en puntos en un espacio semántico gracias a los word embeddings y cómo podemos recombinar todas las dependencias semánticas entre palabras utilizando el mecanismo de atención. Sin embargo, ahora nos enfrentamos a un problema significativo. Durante el entrenamiento de una red neuronal, los errores se retropropagan para actualizar los pesos, pero esto puede distorsionar los pesos de la atención o hacer que se concentren demasiado en ciertos valores, ignorando dependencias menores. Además, añadir muchas capas puede hacer que los gradientes se desvanezcan a medida que el error se propaga hacia atrás. En este artículo se detalla una ingeniosa solución llamada capa de normalización puede ayudar a resolver este problema técnico.
En la práctica, implementar redes neuronales en un ordenador puede presentar muchos problemas técnicos, como la anulación de gradientes durante el entrenamiento. En una red neuronal, la información de entrada se convierte en word embeddings y se propaga hacia adelante capa a capa a través del codificador del transformador, pasando por capas de redes neuronales planas y capas de atención. También se utilizan capas de normalización entre estas capas. ¿Qué hacen exactamente estas capas de normalización?
El procesamiento de la información en una red neuronal implica muchas multiplicaciones de matrices. El problema es que multiplicar números muy pequeños puede generar resultados aún más pequeños, hasta el punto en que un ordenador puede interpretarlos como 0, un problema conocido como underflow. Por ejemplo, 10^(−10)×10^(−10) es 10^(−20), pero si nuestro lenguaje de programación solo soporta 10^(−15), el resultado final sería 10^(−15) o incluso cero, destruyendo el contenido semántico de la información. Este problema afecta tanto a la predicción como al entrenamiento de los billones de parámetros en las redes neuronales. Los gradientes en cada capa se vuelven cada vez más pequeños hasta que desaparecen, un fenómeno conocido como desvanecimiento de gradientes. ¿Cómo lo solucionamos?
De vez en cuando, podemos realizar un cambio de posición y escala en las variables a través de una normalización, que convierte las activaciones de salida en una distribución normal con media 0 y desviación estándar 1. ¿Qué logramos con esto? Estabilidad y robustez en la red durante el entrenamiento, lo que se traduce en una mejora del rendimiento. Aunque la normalización es un concepto básico en estadística, no se implementa de manera simple en las redes neuronales. La normalización está parametrizada con un cambio adicional de escala y posición, pero su propósito sigue siendo el mismo: añadir estabilidad y robustez. Puedes imaginar esta capa como los pulmones de nuestra red neuronal, un mecanismo de limpieza que hace posible implementar las matemáticas teóricas en la práctica.