Please enable JavaScript.
Coggle requires JavaScript to display documents.
OPTIMIZACIÓN DE REDES NEURONALES - Coggle Diagram
OPTIMIZACIÓN DE REDES NEURONALES
FUNDAMENTOS DE LA OPTIMIZACIÓN
¿Qué es?
Proceso de ajustar los parámetros internos de un modelo para mejorar sus predicciones
Busca minimizar o maximizar una función de costo
Se realiza mediante aprendizaje iterativo
Elementos principales
Parámetros (θ): pesos y sesgos que aprende la red
Función de costo J(θ): mide el error del modelo
Gradiente ∇J(θ): indica la dirección de mayor incremento del costo
Tasa de aprendizaje (η): controla el tamaño del paso de actualización
Época: ciclo de entrenamiento sobre el conjunto de datos
Convergencia: acercamiento a una solución óptima
Objetivo
Reducir errores en clasificación, regresión y reconocimiento de patrones
Lograr predicciones más precisas
Ajustar los pesos de la red neuronal
Importancia
Permite aprender patrones de los datos
Un ajuste deficiente produce predicciones poco precisas
La elección del optimizador influye en velocidad y estabilidad
DESCENSO DE GRADIENTE POR LOTES (BATCH)
Concepto y funcionamiento
Calcula el gradiente usando todo el conjunto de entrenamiento
Actualiza los parámetros una vez por época
Produce un gradiente más suave y menos ruidoso
Fórmula
θ = θ − η ∇θ J(θ)
El gradiente se calcula con todos los ejemplos
La actualización ocurre después de procesar el conjunto completo
Ventajas
Actualizaciones estables
Menos oscilaciones por ruido
Gradiente más preciso al utilizar todos los datos
Desventajas
Alto costo de tiempo y recursos por actualización
Convergencia más lenta que SGD en ciertos escenarios
Poca escalabilidad para conjuntos de datos grandes
Puede requerir mucha memoria
Aplicación
Conjuntos de datos pequeños que caben en memoria
Situaciones donde importa la estabilidad del gradiente
Implementación con TensorFlow y PyTorch
DESCENSO DE GRADIENTE CON MOMENTUM
Concepto y funcionamiento
Considera los gradientes actuales y pasados
Acumula un promedio ponderado exponencialmente
La velocidad actúa como memoria de actualizaciones anteriores
Mantiene la dirección del movimiento y suaviza los cambios
Fórmulas
Velocidad: vt = β vt−1 + (1 − β) ∇θ J(θ)
Parámetros: θ = θ − η vt
β: coeficiente que determina cuánto gradiente anterior se conserva
η: tasa de aprendizaje
Comportamiento
Ayuda a avanzar por valles y superficies con mesetas
Reduce rebotes y oscilaciones
Busca acercarse a un óptimo local
Un óptimo local no necesariamente es el mínimo global
Ventajas
Acelera la convergencia
Reduce oscilaciones erráticas
Puede ayudar a superar mínimos locales o zonas planas
Desventajas
Hay que elegir adecuadamente β
Un β muy alto puede hacer que se sobrepase el mínimo
Requiere memoria y cálculo adicional
Aplicación
Modelos complejos de clasificación
Entrenamiento de redes neuronales
Implementaciones con TensorFlow y PyTorch
RMSprop
Significado y concepto
RMSprop = Root Mean Square Propagation
Propuesto por Geoffrey Hinton en un curso online
Mantiene una tasa de aprendizaje adaptativa
Busca evitar pasos demasiado grandes o demasiado pequeños
¿Cómo funciona?
Calcula un promedio ponderado exponencialmente de los cuadrados de los gradientes
Ajusta dinámicamente la tasa de aprendizaje de cada parámetro
Ayuda ante gradientes variables, oscilaciones o convergencia lenta
Fórmulas y parámetros
Promedio cuadrático: s = βs + (1 − β)(∇J(θ))²
Actualización: θ = θ − [η / (raíz(s) + ε)] · ∇J(θ)
β: controla el peso de gradientes anteriores; valor típico 0.9
η: tasa de aprendizaje
ε: valor pequeño para evitar división por cero; ejemplo 10⁻⁸
Pasos de implementación
Inicializar los promedios cuadrados en cero
Calcular gradientes durante la retropropagación
Actualizar los promedios ponderados
Actualizar los pesos y sesgos
Ventajas
Tasa de aprendizaje adaptativa
Menos propenso a oscilaciones
Puede converger más rápido que el descenso estándar
Útil cuando los gradientes cambian rápidamente
Desventajas
El rendimiento puede depender de β
En ciertos casos puede quedar atrapado en mínimos locales
Puede ser menos eficaz en escenarios de largo plazo
Aplicación
Entrenamiento de redes neuronales
Implementaciones disponibles en TensorFlow y PyTorch
DESCENSO DE GRADIENTE ESTOCÁSTICO (SGD)
Concepto y funcionamiento
Actualiza los parámetros después de evaluar cada ejemplo individual
No espera a procesar todo el conjunto de datos
Introduce ruido en las actualizaciones
Fórmula
θ = θ − η ∇θ J(θ; x(i); y(i))
θ: parámetros del modelo
η: tasa de aprendizaje
Gradiente: costo calculado para un solo ejemplo
Ventajas
Actualizaciones rápidas y frecuentes
Menor costo de memoria y cálculo por actualización
Útil en conjuntos de datos grandes
Desventajas
Puede oscilar alrededor del mínimo
El ruido puede dificultar una convergencia estable
Es sensible a una tasa de aprendizaje mal ajustada
Aplicación
Entrenamiento de modelos de aprendizaje automático
Ejemplos de implementación en TensorFlow y PyTorch
Puede combinarse con Momentum o reducción de la tasa de aprendizaje
DESCENSO DE GRADIENTE MINI-BATCH
Concepto y funcionamiento
Combina características de SGD y Batch Gradient Descent
Divide los datos en pequeños lotes o mini-batches
Actualiza los parámetros después de procesar cada mini-lote
Promedia los gradientes de los ejemplos del lote
Fórmula
θ = θ − η ∇θ J(θ; x(i:i+n); y(i:i+n))
El gradiente se calcula sobre un grupo de ejemplos
El tamaño del lote influye en el comportamiento del entrenamiento
Ventajas
Equilibrio entre precisión y velocidad
Reduce el ruido respecto a SGD
Aprovecha memoria y procesamiento de GPU
Puede favorecer la generalización
Desventajas
Elegir el tamaño del mini-batch puede ser difícil
Lotes pequeños pueden producir entrenamiento inestable
Lotes grandes se parecen al método Batch
Pueden persistir oscilaciones si la tasa de aprendizaje es alta
Aplicación
Entrenamiento de redes neuronales profundas
Redes neuronales convolucionales (CNN)
Procesamiento por lotes en TensorFlow y PyTorch
OPTIMIZADOR ADAM
Significado y concepto
ADAM = Adaptive Moment Estimation
Combina Momentum y RMSprop
Es muy utilizado en aprendizaje profundo
Adecuado para grandes cantidades de datos y modelos con muchos parámetros
¿Cómo funciona?
Primer momento: promedio exponencial de gradientes pasados
Segundo momento: promedio exponencial de cuadrados de gradientes
Adapta la tasa de aprendizaje para cada parámetro
Aplica corrección del sesgo en las primeras iteraciones
Fórmulas y parámetros
Primer momento: promedio ponderado de gradientes (β1, típico 0.9)
Segundo momento: promedio ponderado de gradientes al cuadrado (β2, típico 0.999)
Corrección del sesgo: divide los momentos por 1 − β1^t y 1 − β2^t
Actualización: θ = θ − η · momento corregido / (raíz del segundo momento corregido + ε)
ε evita la división por cero; valor típico 10⁻⁸
η: tasa de aprendizaje
Pasos de implementación
Inicializar los momentos en cero
Calcular gradientes en cada iteración
Actualizar los dos promedios exponenciales
Corregir el sesgo
Actualizar los parámetros
Ventajas
Convergencia rápida
Tasa de aprendizaje adaptativa por parámetro
Eficiencia de memoria y cálculo
Adecuado para modelos con muchos parámetros
Desventajas
Sensibilidad a β1, β2 y η
Puede converger a soluciones subóptimas
Requiere ajustar hiperparámetros
Aplicación
Aprendizaje profundo y redes neuronales
Ejemplos de implementación en TensorFlow y PyTorch
COMPARACIÓN Y ELECCIÓN
Según cómo procesa los datos
SGD: un ejemplo por actualización
Batch: todo el conjunto por actualización
Mini-Batch: un pequeño lote por actualización
Según cómo ajusta las actualizaciones
Momentum: aprovecha la dirección de gradientes anteriores
ADAM: combina primer y segundo momento con corrección del sesgo
RMSprop: adapta la tasa usando cuadrados de gradientes
Criterios de elección
Tamaño del conjunto de datos
Memoria y capacidad de procesamiento disponibles
Estabilidad y velocidad deseadas
Comportamiento de los gradientes
Ajuste de tasa de aprendizaje e hiperparámetros
Idea clave
No existe un optimizador universal para todos los problemas
La elección depende del modelo, los datos y el objetivo
La optimización busca mejorar precisión y rendimiento