¿Cómo aprenden las redes neuronales: descenso de gradiente en el paisaje de energía libre?
Al finalizar este tema
Comprenderá cómo se ajustan automáticamente los 33,62 millones de parámetros (pesos y sesgos) que vimos en el episodio 2 para completar el entrenamiento. Conectaremos en una sola narrativa la relación entre tres componentes: la función de coste, el gradiente y la tasa de aprendizaje, y entenderemos por qué este proceso coincide conceptualmente con el proceso de minimización de la energía libre que es común en la naturaleza.
Este episodio sienta las bases para el episodio 4 (retropropagación) y también para el principio fundamental del RLHF que trataremos en el episodio 11.
El dilema de un estudiante de posgrado que descubre una nueva enzima
Imaginemos que está en el laboratorio analizando las características de una enzima recién descubierta. Esta enzima cataliza una reacción metabólica específica, pero aún no se conocen sus condiciones óptimas de reacción. Su misión es encontrar experimentalmente cuándo la actividad de esta enzima es máxima.
Supongamos inicialmente que solo hay dos condiciones que afectan a la actividad enzimática: temperatura y pH. Las demás condiciones (concentración del sustrato, fuerza iónica, presencia de cofactores) se mantienen fijas.
Si tuviera tiempo y recursos ilimitados, ¿qué haría? Podría probar todas las combinaciones variando la temperatura de 4 °C a 60 °C en incrementos de 1 °C, y el pH de 4,0 a 10,0 en incrementos de 0,1. Esto daría 57 × 61 = 3477 condiciones. Si repite cada condición tres veces, serían aproximadamente 10 000 ensayos. Aunque le llevaría varios meses, al final encontraría el punto óptimo.
Sin embargo, la situación real es mucho más complicada. ¿Qué ocurre si los parámetros no son dos, sino cinco, diez o cien? Si realiza una búsqueda exhaustiva para cada parámetro, el número de combinaciones se dispara exponencialmente. Incluso con solo 10 pasos por parámetro para 100 parámetros, se necesitarían combinaciones. Esto requeriría más experimentos que átomos en el universo (aproximadamente ), lo cual es claramente imposible.
Los parámetros de la red neuronal que estamos entrenando son 33,62 millones, como vimos en el episodio 2. La búsqueda exhaustiva es físicamente imposible. Necesitamos un método mucho más inteligente.
Aquí es donde entra el método que vamos a aprender: el descenso de gradiente. En realidad, este no es un truco exclusivo del entrenamiento de redes neuronales, sino un principio que la naturaleza ha utilizado desde hace mucho tiempo en las reacciones químicas, el plegamiento de proteínas y el equilibrio de los ecosistemas. Lo que estamos aprendiendo es cómo la naturaleza consigue "deslizarse" hacia el estado óptimo sin tener que explorar exhaustivamente un espacio de condiciones multidimensional. Las redes neuronales simplemente han adoptado este principio.
El paisaje de la energía libre: el problema de minimización de la naturaleza
Es probable que se haya encontrado con el concepto de paisaje de la energía libre en sus estudios universitarios de química o bioquímica. Se trata de una curva en la que el grado de avance de una reacción química se representa en el eje x y la energía libre en el eje y. Es un terreno irregular con montañas, valles y puntos de silla.
¿Cómo se desarrolla la reacción en este entorno? Se mueve en la dirección de disminuir la energía libre. Aunque a veces es necesario superar una barrera de energía de activación, al final se estabiliza en un estado estable con menor energía libre. Este principio explica tanto las reacciones orgánicas como las reacciones redox, el plegamiento de proteínas y el autoensamblaje.
La clave es esta: sin necesidad de conocer de antemano la imagen completa del entorno, basta con saber "en qué dirección disminuye la energía libre" en cada punto para dirigirse hacia el mínimo. La bola que rueda cuesta abajo no necesita ver todo el entorno de antemano; solo necesita detectar la pendiente bajo sus pies.
El aprendizaje de las redes neuronales sigue exactamente este mismo proceso y concepto.
Para nosotros:
- En lugar de un entorno de energía libre, tenemos el entorno de la función de costo,
- En lugar de una coordenada de progreso de la reacción, tenemos un espacio de parámetros (de millones a decenas de miles de millones de dimensiones),
- Y en lugar de un estado de mínima energía libre, tenemos el objetivo de mínimo costo (predicción más precisa).
Mantener esta perspectiva desde el inicio permite que todos los conceptos posteriores se conecten de manera natural.
Función de costo: cuantificar la deficiencia del modelo
Comencemos con la función de costo. La función de costo o función de pérdida es una función que expresa numéricamente cuánto difiere la predicción actual de la red neuronal de la respuesta correcta. Un valor mayor indica que la predicción se aleja más de la respuesta correcta, mientras que un valor cercano a 0 indica que se aproxima a ella.
Volvamos al ejemplo de las diapositivas de patología del capítulo #2. Supongamos que la red neuronal emite una probabilidad de normal de 0.7, benigna de 0.2 y maligna de 0.1 para una diapositiva determinada, pero la respuesta correcta es "maligna". ¿Qué tan deficiente es esta predicción?
Si utilizamos la función de costo de entropía cruzada, este valor es aproximadamente -log(0.1) ≈ 2.30. Si la red neuronal asignara una probabilidad de 0.9 a la respuesta correcta (maligna), el valor sería muy bajo, alrededor de -log(0.9) ≈ 0.11. Si se asignara una probabilidad de 1 a la respuesta correcta, el valor sería exactamente 0.
Calculamos esto para todos los ejemplos del conjunto de datos de entrenamiento y tomamos el promedio. El costo promedio sobre todo el conjunto de datos de entrenamiento es el objetivo que queremos minimizar. A este costo promedio se le llama pérdida de entrenamiento.
Aunque las fórmulas se tratan con precisión en el Apéndice A.1, aquí basta con captar la idea central. La función de costo posee dos propiedades:
En primer lugar, depende únicamente de los parámetros. Una vez fijos el conjunto de datos y la estructura de la red neuronal, el valor de la función de costo lo determinan los valores de los parámetros (pesos y sesgos). Si cambiamos ligeramente los parámetros, el costo también cambiará ligeramente.
En segundo lugar, es diferenciable. A medida que los parámetros varían continuamente, el costo también varía continuamente. Es decir, podemos responder a la pregunta "¿cuánto cambiará el costo si aumento ligeramente este parámetro?". Esta derivada parcial es la esencia del gradiente que veremos a continuación.
Una analogía. En el ejemplo de la nueva enzima, el costo que definimos es "valor de actividad máxima menos valor de actividad en las condiciones actuales". Si las condiciones son óptimas, este valor es 0. A medida que nos alejamos del óptimo, este valor aumenta. Si los valores de temperatura y pH cambian ligeramente, la actividad cambia ligeramente y el costo también cambia ligeramente. La función de costo de una red neuronal tiene exactamente esta estructura. Solo que en lugar de dos parámetros, hay 33,62 millones.
Gradiente: ¿en qué dirección debemos movernos para reducirlo?
Volvamos al problema de la bola que rueda cuesta abajo en un terreno. Dijimos que la bola solo necesita detectar la pendiente bajo sus pies. ¿Qué representa esta "pendiente" en el espacio de parámetros?
El gradiente es un vector que contiene las derivadas parciales de la función de costo con respecto a cada parámetro. Es decir, si hay 33,62 millones de parámetros, el vector gradiente también tiene 33,62 millones de dimensiones.
Lo que significa cada elemento del vector gradiente es lo siguiente: "¿Cuánto aumenta (valor positivo) o disminuye (valor negativo) el costo si aumentamos ligeramente este parámetro?".
- Si el valor del elemento es muy positivo: aumentar este parámetro hace que el costo aumente rápidamente → debemos reducirlo
- Si el valor del elemento es muy negativo: aumentar este parámetro hace que el costo disminuya rápidamente → debemos aumentarlo
- Si el valor del elemento está cerca de cero: este parámetro no afecta mucho al costo en las cercanías → podemos dejarlo como está
El vector que calcula esto para los 33,62 millones de parámetros es precisamente el gradiente.
La dirección del gradiente apunta hacia "la dirección en la que el costo aumenta más rápidamente". Por lo tanto, debemos movernos en la dirección opuesta. Este es el origen del nombre del descenso de gradiente: descenso (descent) es lo opuesto a ascenso (ascent).
Ahora, la imagen de una bola que rueda cuesta abajo en un paisaje multidimensional de energía libre se concreta así:
- Calcular el gradiente en la posición actual de los parámetros.
- Mover ligeramente los parámetros en la dirección opuesta al gradiente.
- Calcular nuevamente el gradiente en la nueva posición.
- Repetir.
Un único movimiento es un paso (step), y el proceso completo mediante el cual los parámetros convergen gradualmente hacia valores mejores (valores de costo más bajos) a través de múltiples pasos se denomina entrenamiento (training).
Pero, ¿cómo se calcula el gradiente? Si hay 33,62 millones de parámetros, ¿cómo obtenemos la derivada parcial para cada uno? Aquí aparece el protagonista del capítulo #4: el algoritmo de retropropagación (backpropagation). Lo trataremos en detalle en el capítulo #4. Por ahora, dejemos de lado "cómo se calcula el gradiente" y continuemos la historia asumiendo que es posible calcularlo.
Tasa de aprendizaje: ¿cuánto debemos movernos?
Si conocemos la dirección opuesta al gradiente, la siguiente pregunta es: ¿cuánto debemos movernos?
El valor que ajusta esta magnitud es la tasa de aprendizaje (learning rate). Se denota con la letra griega η (eta) o α (alfa).
La fórmula para actualizar los parámetros es muy sencilla.
nuevo_parámetro = parámetro_actual - tasa_de_aprendizaje × gradienteUn aprendizaje grande implica un desplazamiento mayor en cada paso, mientras que uno pequeño implica un desplazamiento menor.
Si la tasa de aprendizaje es demasiado pequeña, el entrenamiento se vuelve tediosamente lento. Lo que podría tardar horas en alcanzar el punto óptimo puede extenderse a días.
Si la tasa de aprendizaje es demasiado grande, se sobrepasa el fondo del valle del terreno y se asciende a la colina opuesta. En el siguiente paso, se mueve de nuevo en dirección contraria, pero lo vuelve a sobrepasar. Esto se denomina oscilación. En casos extremos, puede saltar fuera del valle y terminar en una posición mucho peor, haciendo que el entrenamiento diverja.
La tasa de aprendizaje adecuada depende de la curvatura del terreno. Si el valle es estrecho y profundo, se requiere una tasa de aprendizaje pequeña; si es ancho y poco profundo, una tasa de aprendizaje grande. En la práctica, es estándar mantener una tasa de aprendizaje alta al inicio del entrenamiento (para una aproximación rápida) y reducirla gradualmente en las etapas finales mediante la programación de la tasa de aprendizaje.
Mapeo biológico. Si recordamos el cribado por evolución dirigida mencionado en el episodio #1, la tasa de aprendizaje corresponde exactamente a la tasa de mutación. Si la tasa de mutación es demasiado baja, no se puede salir de la secuencia original y la evolución no avanza; si es demasiado alta, las combinaciones útiles no se mantienen y se desmoronan. La tasa de mutación óptima depende del problema y de la ronda, y por lo general se reduce en las etapas finales, un concepto idéntico a la programación de la tasa de aprendizaje en el entrenamiento de redes neuronales.
Mínimos locales: trampas del terreno
En el paisaje de energía libre existen dos tipos de puntos mínimos donde las reacciones suelen quedar atrapadas.
Mínimo global: El punto con la energía libre más baja en todo el terreno. Es el estado termodinámicamente más estable.
Mínimo local: Un punto que es más bajo que sus alrededores, pero no el mínimo global. Si una reacción queda atrapada aquí, no supera la barrera de energía de activación y se estabiliza en un estado indeseable.
El mismo problema ocurre exactamente en el entrenamiento de redes neuronales. Al descender por el espacio de parámetros, se puede quedar atrapado en un mínimo local. Esto se manifiesta cuando la pérdida de entrenamiento disminuye hasta cierto punto, pero ya no baja más.
Dato interesante. Empíricamente se ha demostrado que el paisaje de pérdida de entrenamiento de redes neuronales grandes (con cientos de millones a miles de millones de parámetros) tiene muchos menos mínimos locales de lo que teóricamente se esperaba. Esto se debe a que, con una dimensionalidad de parámetros muy alta, aunque haya un mínimo en una dirección, generalmente hay margen para descender en otras direcciones. Es decir, son mucho más comunes los puntos de silla (saddle points), donde hay un máximo en una dirección y un mínimo en otra. Afortunadamente, estos puntos se pueden superar con pequeñas perturbaciones.
Aun así, en la práctica el entrenamiento a menudo experimenta el problema de que "la pérdida de entrenamiento se estanca en cierto punto". Algunas técnicas para mitigar esto se presentarán más adelante al hablar de los optimizadores.
Analogía biológica. El problema del plegamiento de proteínas tiene la misma estructura. Cuando una cadena polipeptídica se pliega y queda atrapada en un mínimo local, puede plegarse incorrectamente formando agregados: los agregados de beta-amiloide en el Alzheimer (mencionados en el episodio #1) y los de alfa-sinucleína en el Parkinson son ejemplos de ello. La naturaleza resuelve este problema mediante proteínas chaperonas y la respuesta al choque térmico. En el entrenamiento de redes neuronales, el optimizador cumple esta función de chaperona.
Descenso de gradiente estocástico — Perspectivas del lote
Aquí surge un problema práctico. Para calcular la función de costo y obtener el gradiente sobre todo el conjunto de datos de entrenamiento, sería necesario pasar todos los ejemplos de entrenamiento por la red neuronal en cada paso. Si el conjunto de datos tiene millones o cientos de millones de ejemplos, un solo paso podría tardar desde varios minutos hasta varias horas. A esta velocidad, el entrenamiento no es práctico.
La solución es utilizar solo una pequeña parte (minibatch) del conjunto de datos en cada paso. Por ejemplo, de un conjunto de datos de 2 millones de ejemplos, se seleccionan aleatoriamente 256 ejemplos en cada paso para calcular el costo y el gradiente de ese lote y actualizar los parámetros.
A esto se le llama Descenso de Gradiente Estocástico (Stochastic Gradient Descent, SGD). Es "estocástico" porque el gradiente en cada paso es una aproximación del gradiente real sobre todos los datos. Dado que los lotes se seleccionan aleatoriamente, se obtienen direcciones de gradiente ligeramente diferentes en cada momento.
Este ruido resulta ser una bendición. Si siguiéramos exactamente el gradiente total perfecto, podríamos llegar con precisión a un punto silla y quedar atrapados; sin embargo, el ruido estocástico facilita salir naturalmente del punto silla. Por esta razón, SGD funciona mejor en la práctica que el descenso de gradiente puro teórico.
Compensaciones del tamaño del lote:
- Lotes pequeños (ej.: 32~256): Ruido grande y entrenamiento inestable, pero buena capacidad para escapar de puntos silla y ahorro de memoria GPU
- Lotes grandes (ej.: 4096~32768): Ruido pequeño y estable, pero riesgo de quedar atrapado en puntos silla y alto consumo de memoria GPU
En la práctica, se utiliza el lote más grande posible dentro del presupuesto de hardware, o se ajusta la combinación con la tasa de aprendizaje.
Evolución de los optimizadores — Desde SGD puro hasta Adam
El SGD puro mueve los parámetros en la dirección opuesta al gradiente una cantidad igual a la tasa de aprendizaje en cada paso. Esta simplicidad crea varios problemas.
Problema 1: Oscilación de dirección. El caso en el que oscila entre las paredes opuestas de un valle y no desciende adecuadamente hacia abajo.
Problema 2: Dificultad para ajustar la tasa de aprendizaje. La tasa de aprendizaje óptima puede variar para cada parámetro, pero se utiliza la misma tasa para todos.
Problema 3: Gradientes desaparecidos. Si aparecen parámetros cuyos gradientes se vuelven muy pequeños hacia el final del entrenamiento, las actualizaciones de estos parámetros prácticamente se detienen.
Se han desarrollado optimizadores para mitigar estos problemas.
Momentum. Utiliza el concepto físico de inercia. Conserva parte de la dirección del paso anterior para reducir las oscilaciones y acelerar a lo largo del valle, como una pelota que sigue rodando gracias a la inercia.
RMSprop. Sigue la media reciente de la magnitud del gradiente de cada parámetro y ajusta automáticamente su tasa de aprendizaje. Reduce la tasa de los parámetros con gradientes grandes y mantiene la de aquellos con gradientes pequeños.
Adam (Adaptive Moment Estimation). Combina momentum y RMSprop. Es uno de los optimizadores más utilizados para entrenar redes neuronales; gran parte de la literatura y del código práctico emplea Adam, o su variante AdamW, como opción predeterminada.
AdamW. Es una variante de Adam que desacopla el decaimiento de pesos (weight decay). Se utiliza como estándar de facto en el entrenamiento de grandes modelos de lenguaje.
En la primera parte se utilizó principalmente el optimizador AdamW para el preentrenamiento y el ajuste fino. Los apéndices A.4–A.7 describen las fórmulas exactas y los hiperparámetros de cada optimizador.
Proceso de entrenamiento
A partir de lo explicado hasta ahora, examinemos el proceso completo de entrenamiento. El ciclo general de entrenamiento de una red neuronal es el siguiente.
Inicializar aleatoriamente los parámetros
Repetir (de cientos de miles a millones de veces):
Seleccionar aleatoriamente un minilote (por ejemplo, 256 ejemplos)
Realizar la propagación hacia delante sobre el minilote (parte 2) → obtener predicciones
Calcular el coste a partir de las predicciones y las respuestas correctas
Realizar la retropropagación (parte 4) → calcular los gradientes
Actualizar los parámetros con el optimizador Adam
Terminar cuando la pérdida de entrenamiento alcance un nivel satisfactorioCada paso dura entre milisegundos y segundos, y los modelos grandes requieren que este proceso se repita cientos de miles o millones de veces para converger. Esta es la razón por la cual el entrenamiento de redes neuronales a gran escala (de nivel GPT) puede tardar semanas o meses.
Revisión desde el mapeo biológico. En la Parte 1, se asignó este ciclo completo al ciclo de evolución dirigida.
- Parámetros iniciales = Biblioteca inicial de anticuerpos aleatorios
- Mini-lote = Muestras a probar en esta ronda
- Cálculo del costo = Medición de la afinidad de unión al objetivo
- Actualización de parámetros = Reestructuración de la biblioteca hacia la dirección preferida (mutación + selección)
- Repetición de millones de pasos = Varias rondas de cribado
Una perspectiva interesante. Sabemos por qué la evolución dirigida es mucho más rápida que la evolución natural: porque la presión selectiva es explícita y fuerte. El entrenamiento de redes neuronales también es rápido por la misma razón: una función de costo proporciona una presión selectiva explícita que indica la dirección en cada paso. Mientras que la evolución natural depende en gran medida de la deriva aleatoria, el entrenamiento de redes neuronales se beneficia del gradiente, lo que le confiere mucha más direccionalidad.
La evolución de los parámetros — ¿Qué cambia durante el entrenamiento?
Visualicemos qué cambia realmente durante el entrenamiento, tomando como ejemplo una red neuronal patológica.
Al inicio del entrenamiento: Los parámetros son aleatorios. Las decisiones de la red neuronal son completamente al azar (probabilidades aproximadas del 33% para normal, benigno y maligno). La pérdida de entrenamiento es muy alta.
Fase inicial del entrenamiento (miles de pasos): Los parámetros se ajustan ligeramente y la red neuronal comienza a captar patrones aproximados. Por ejemplo, un patrón de bajo nivel como "cuanto más puntos oscuros haya en la imagen, mayor será la probabilidad de tumor". La pérdida de entrenamiento disminuye drásticamente.
Fase media del entrenamiento (decenas de miles de pasos): Las neuronas de las capas ocultas comienzan a captar características más sofisticadas. Se forman detectores de límites celulares y anomalías nucleares, como se mencionó en la Parte 2. La pérdida de entrenamiento disminuye gradualmente.
Fase tardía del entrenamiento (cientos de miles de pasos): Los parámetros se ajustan finamente, mejorando la precisión de las decisiones para casos límite difíciles (por ejemplo, tumor inicial vs. tejido normal). La velocidad de disminución de la pérdida de entrenamiento se vuelve muy lenta.
Punto de sobreajuste: En algún momento, aunque la pérdida de entrenamiento sigue disminuyendo, la pérdida de validación (la pérdida sobre datos no utilizados en el entrenamiento) comienza a aumentar. Esto es una señal de que la red neuronal ha comenzado a memorizar el ruido específico de los datos de entrenamiento. Para obtener un buen rendimiento en la práctica, se debe detener el entrenamiento antes de este punto. Esto se denomina parada temprana (early stopping), y el monitoreo de la pérdida de validación es una práctica estándar.
Escenarios de aplicación biológica
¿Cómo se conectan los conceptos de esta parte con la práctica profesional?
Escenario 1 — Entrenamiento de un clasificador de tipos celulares
Al entrenar realmente el clasificador de tipos celulares de scRNA-seq mencionado en la Parte 2, usted utiliza directamente los conceptos de esta parte.
- Función de costo: Para cada célula, la entropía cruzada entre la distribución de probabilidad predicha y el tipo celular verdadero
- Minilote: de 128 a 1024 células por lote del conjunto de entrenamiento.
- Optimizador: generalmente Adam o AdamW.
- Tasa de aprendizaje: comienza en 1e-3 y se reduce a 1e-4 después de 10 épocas.
- Parada temprana: se detiene si la precisión en el conjunto de validación no mejora durante 5 épocas.
Bibliotecas como Scanpy y scVI gestionan este bucle de entrenamiento internamente, pero proporcionan una API que permite al usuario ajustar el optimizador y la tasa de aprendizaje.
Escenario 2: el entrenamiento de AlphaFold sigue los mismos principios
El entrenamiento de AlphaFold (predicción de la estructura de proteínas) de DeepMind utiliza exactamente los mismos principios descritos en esta sección.
- Función de coste: error de coordenadas entre la estructura predicha y la estructura real (múltiples componentes).
- Minilote: 128 proteínas por lote de la base de datos de entrenamiento (PDB).
- Optimizador: AdamW.
- Programación de la tasa de aprendizaje: calentamiento seguido de reducción coseno.
- Escala del entrenamiento: varias semanas en decenas de TPU.
Los parámetros oscilan entre decenas de millones y cientos de millones, lo que coincide con la escala mencionada en el episodio 2.
Escenario 3: optimización de las condiciones experimentales (alternativa a la optimización bayesiana)
También se aplica en sentido inverso. Para la optimización de las condiciones experimentales (actividad enzimática, condiciones de cultivo celular, eficiencia de la edición genética), se puede entrenar una red neuronal para aprender el mapeo condición → resultado y, a continuación, buscar las condiciones óptimas dentro de esa red neuronal mediante el descenso de gradiente.
Tradicionalmente, este tipo de problemas se resuelven con la optimización bayesiana, pero si hay suficientes datos, el enfoque basado en redes neuronales puede ser más eficiente, especialmente cuando el espacio de parámetros es de alta dimensión (más de decenas de dimensiones).
Resumen clave
- El aprendizaje de redes neuronales es un problema de optimización que busca el mínimo de la función de coste. Conceptualmente, es idéntico al proceso natural de minimización de la energía libre.
- La pendiente (gradiente) de la función de coste indica "la dirección en la que el coste aumenta más rápidamente" en el espacio de parámetros. Moverse en la dirección opuesta reduce el coste.
- El tamaño del paso es la tasa de aprendizaje, conceptualmente análoga a la tasa de mutación en la evolución direccional.
- En la práctica, se utiliza el descenso de gradiente estocástico (SGD), que solo emplea minilotes de datos. El ruido actúa como una bendición al ayudar a escapar de los puntos de silla.
- Los optimizadores sofisticados, como Adam y AdamW, son mucho más prácticos que el SGD puro; son el estándar actual.
- Aunque los mínimos locales y los puntos de silla son trampas, en los espacios de alta dimensión los puntos de silla son más comunes y el ruido del SGD generalmente permite escapar de ellos.
- Al final del entrenamiento comienza el sobreajuste, por lo que supervisar la pérdida de validación y aplicar la parada temprana es una práctica estándar.
Próximos conceptos
- Episodio 4
backpropagation-intuition— Cómo se calculan los gradientes. La tensión democrática del error y la regla de la cadena. - Episodio #5
transformer-and-embedding— ¿Cómo se aplica este principio de aprendizaje a los transformadores? - Episodio #11
hallucination-and-alignment— El RLHF también es, en última instancia, una aplicación del método del descenso de gradiente que se presenta aquí.
📐 Apéndice — Fórmulas matemáticas para expertos
Dificultad: Muy difícil Dirigido a: Lectores con conocimientos de álgebra lineal, cálculo y teoría de optimización a nivel de posgrado
A.1 Definición de la función de costo
Error cuadrático medio (MSE) — Estándar para problemas de regresión:
L_MSE(θ) = (1/N) · Σ_{i=1}^{N} (y_i - f_θ(x_i))^2x_i: entrada número iy_i: respuesta correcta número if_θ(x_i): predicción de la red neuronalθ: todos los parámetros
Entropía cruzada (Cross-Entropy) — estándar para problemas de clasificación:
L_CE(θ) = -(1/N) · Σ_{i=1}^{N} Σ_{c=1}^{C} y_{i,c} · log(f_θ(x_i)_c)C: Número de clasesy_{i,c}: Representación one-hot de la respuesta (la clase correcta es 1, las demás son 0)f_θ(x_i)_c: Probabilidad que la red neuronal asigna a la clase
Corresponde a la forma definida en el Apéndice A.3 del Capítulo 1.
A.2 Definición del gradiente
El gradiente de la función de costo con respecto al parámetro θ es:
∇_θ L = [ ∂L/∂θ_1, ∂L/∂θ_2, ..., ∂L/∂θ_P ]P tiene un número total de parámetros (de millones a cientos de miles de millones).
Cada derivada parcial ∂L/∂θ_i representa el límite que responde a la pregunta: "¿cuánto cambia el costo si aumentamos ligeramente el parámetro θ_i?".
∂L/∂θ_i = lim_{ε → 0} [L(θ_1, ..., θ_i + ε, ..., θ_P) - L(θ)] / εEl algoritmo para calcular estas derivadas parciales de forma eficiente es la retropropagación (episodio #4).
A.3 Regla de actualización del descenso de gradiente
Actualización de un paso del parámetro:
θ_{t+1} = θ_t - η · ∇_θ L(θ_t)θ_t: parámetro en el paso tη: tasa de aprendizaje∇_θ L(θ_t): gradiente en el paso t
Al repetir este proceso, se converge a un mínimo local (la convergencia garantizada solo se cumple bajo ciertas condiciones).
A.4 Aproximación por mini-lotes de SGD
Aproximación del gradiente utilizando un mini-lote B_t ⊂ D (muestra aleatoria, tamaño |B|) en lugar del conjunto de datos completo:
∇̂_θ L(θ_t) = (1/|B|) · Σ_{i ∈ B_t} ∇_θ ℓ(θ_t, x_i, y_i)ℓ es la pérdida para cada ejemplo individual. Este es un estimador imparcial del gradiente total:
E[∇̂_θ L] = ∇_θ L (total)A.5 Momento
Mantener la dirección del movimiento del paso anterior (velocidad) como si tuviera inercia:
v_t = β · v_{t-1} + ∇̂_θ L(θ_t)
θ_{t+1} = θ_t - η · v_tβ: coeficiente de inercia (normalmente 0.9)
Esto es similar al movimiento de una bola en una simulación física, donde el coeficiente de fricción es .
A.6 RMSprop
Ajuste automático de la tasa de aprendizaje mediante el promedio cuadrático reciente de la magnitud del gradiente para cada parámetro:
s_t = ρ · s_{t-1} + (1 - ρ) · [∇̂_θ L(θ_t)]^2
θ_{t+1} = θ_t - η · ∇̂_θ L(θ_t) / (sqrt(s_t) + ε)ρ: Coeficiente de la media móvil exponencial (normalmente 0,999)ε: Valor pequeño para la estabilidad numérica (por ejemplo, 1e-8)
Los parámetros con pendientes pronunciadas tienen un sqrt(s_t) elevado, lo que reduce automáticamente la tasa de aprendizaje efectiva.
A.7 Adam (Adaptive Moment Estimation)
Combina Momentum y RMSprop:
m_t = β_1 · m_{t-1} + (1 - β_1) · ∇̂_θ L(θ_t) (primer momento)
v_t = β_2 · v_{t-1} + (1 - β_2) · [∇̂_θ L(θ_t)]^2 (segundo momento)
m̂_t = m_t / (1 - β_1^t) (corrección del sesgo)
v̂_t = v_t / (1 - β_2^t) (corrección del sesgo)
θ_{t+1} = θ_t - η · m̂_t / (sqrt(v̂_t) + ε)Hiperparámetros básicos:
β_1 = 0.9β_2 = 0.999ε = 1e-8
La corrección del sesgo soluciona el problema por el cual los momentos tienden a cero al inicio del entrenamiento (cuando t es pequeño).
A.8 AdamW (Adam con regularización de pesos desacoplada)
Separa la regularización de pesos (weight decay) como un término independiente, en lugar de aplicarla dentro de Adam:
θ_{t+1} = θ_t - η · m̂_t / (sqrt(v̂_t) + ε) - η · λ · θ_tλ: coeficiente de atenuación de pesos (normalmente 0,01)
Esto difiere de la regularización L2 y tiene el efecto específico de reducir los pesos. Es un estándar en el entrenamiento de modelos de lenguaje de gran tamaño.
A.9 Programación de la tasa de aprendizaje
Atenuación coseno:
η_t = η_min + (1/2) · (η_max - η_min) · (1 + cos(π · t / T))T es el número total de pasos de entrenamiento. La tasa de aprendizaje disminuye gradualmente siguiendo una curva coseno.
Calentamiento (Warmup): Durante los primeros pasos del entrenamiento, la tasa de aprendizaje aumenta linealmente desde 0 hasta el valor objetivo. Esto ayuda a mitigar la inestabilidad inicial en modelos grandes.
Política de ciclo único: Calentamiento → decaimiento coseno → mantenimiento breve en un valor muy bajo. Es ampliamente utilizada por su practicidad.
A.10 Análisis de puntos de silla
Clasificación de puntos críticos según el signo de los valores propios de la matriz Hessiana H = ∇^2 L(θ) en el espacio de parámetros:
- Todos los valores propios > 0: mínimo local (cóncava hacia arriba en todas las direcciones)
- Todos los valores propios < 0: máximo local
- Signos mezclados: punto de silla
- Algunos valores propios = 0: punto plano (difícil de analizar)
En el espacio de pérdida de redes neuronales de alta dimensión, hay muchos más puntos de silla que mínimos locales. Teóricamente, la probabilidad de que un punto crítico aleatorio en una dimensión de parámetros P sea un mínimo local es aproximadamente 2^{-P}, lo que implica una disminución exponencial. Por lo tanto, en 33,62 millones de dimensiones, los puntos críticos que se encuentran en la práctica son casi siempre puntos de silla.
Referencias
El contenido, el escenario, las analogías y los datos numéricos de esta sección fueron desarrollados internamente por BioPlayground; a continuación, se presentan referencias externas útiles para el aprendizaje conceptual:
- Artículo original de Adam: Kingma & Ba, "Adam: A Method for Stochastic Optimization" (ICLR 2015)
- Artículo original de AdamW: Loshchilov & Hutter, "Decoupled Weight Decay Regularization" (ICLR 2019)
- Texto estándar sobre aprendizaje profundo: Goodfellow et al., "Deep Learning", Capítulo 8 (Optimización)
- Visualización del espacio de pérdida: Li et al., "Visualizing the Loss Landscape of Neural Nets" (NeurIPS 2018)
- Teoría de convergencia del descenso de gradiente: Nocedal & Wright, "Numerical Optimization" (Springer)
- Material educativo visual sobre aprendizaje profundo: 3Blue1Brown "Deep Learning" Cap. 2 (YouTube) — Referencia pedagógica
- Artículo de AlphaFold: Jumper et al., "Highly accurate protein structure prediction with AlphaFold" (Nature 2021)
Esta sección es la segunda parte dedicada a los principios y sirve como base para la sección #4 (retropropagación). En la siguiente sección, exploraremos cómo obtener de manera eficiente los gradientes para los 33,62 millones de parámetros que aquí asumimos que son "calculables".