22 Jul

Tuning: Optimización de Parámetros en Redes Neuronales

La afinación o ajuste (tuning) de parámetros permite elegir los mejores parámetros para nuestra red neuronal. En una Red Neuronal Artificial (RNA), existen dos tipos de parámetros:

  • Parámetros que se aprenden del modelo durante el entrenamiento: Estos son los pesos de la red.
  • Parámetros que se mantienen fijos: Estos se denominan hiperparámetros.

Ejemplos de hiperparámetros incluyen el número de épocas, el tamaño del lote (batch size), el optimizador utilizado o el número de neuronas en las capas. El ajuste de parámetros se centra precisamente en la optimización de estos últimos para mejorar el rendimiento del modelo.

GridSearchCV: Selección Sistemática de Parámetros

GridSearchCV es una clase disponible en la biblioteca scikit-learn que permite evaluar y seleccionar de forma sistemática los parámetros óptimos de un modelo. Al indicarle un modelo y un conjunto de parámetros a probar, puede evaluar el rendimiento del primero en función de los segundos mediante técnicas de validación cruzada, facilitando la búsqueda de la mejor configuración.

Paradigmas de Aprendizaje en Inteligencia Artificial

Aprendizaje Supervisado

El aprendizaje supervisado implica entrenar una máquina con ejemplos etiquetados para que aprenda a distinguir patrones, como imágenes de coches o aviones, según explica Lecun. Tras el entrenamiento, el sistema se pone a prueba. Si las predicciones no son precisas, se ajustan los parámetros del modelo para mejorar su rendimiento en iteraciones posteriores. Después de ser expuestos a suficientes ejemplos y recibir los ajustes necesarios, estos sistemas alcanzan niveles de precisión aceptables.

Este paradigma es particularmente exitoso en áreas donde se dispone de grandes volúmenes de datos etiquetados o fácilmente recopilables, como el reconocimiento de texto, imágenes, caras o traducciones.

El origen de esta técnica se remonta al perceptrón, un algoritmo fundamental para el aprendizaje supervisado de clasificadores binarios. Un ejemplo clásico es entrenar un perceptrón para distinguir entre cuadrados y círculos. Se le podría indicar que active una ‘luz 1’ para cuadrados y una ‘luz 2’ para círculos. Luego, se le mostraría un amplio conjunto de cuadrados de diferentes tamaños y en diversos entornos, manteniendo la ‘luz 1’ activa para forzar la respuesta correcta. Posteriormente, se repetiría el proceso con círculos y la ‘luz 2’. Aunque el perceptrón demostró ser efectivo en tareas específicas, su adaptabilidad a formas y conceptos más complejos era limitada. Lecun lo describe como lo que hoy se conocería como una red neuronal de una sola capa.

Aprendizaje por Refuerzo

El aprendizaje supervisado no es la única vía para desarrollar máquinas inteligentes. Otra aproximación es el aprendizaje por refuerzo. Este sistema es particularmente fascinante porque, a diferencia del aprendizaje supervisado, no requiere que se le indique a la máquina cuál es la respuesta correcta. La estrategia principal es que el sistema interactúe repetidamente con su entorno para aprender.

Este proceso puede ser lento, incluso para conceptos relativamente simples. Por ejemplo, para entrenar una red neuronal profunda a jugar juegos de Atari, el sistema observa la pantalla y juega múltiples partidas, deduciendo qué acciones maximizan la puntuación. Sin embargo, puede tomar alrededor de 83 horas alcanzar un rendimiento que un humano lograría en solo 15 minutos de juego. Este paradigma se basa en el principio de ensayo y error.

Aprendizaje Autosupervisado

El aprendizaje autosupervisado se presenta como una solución clave para superar las limitaciones del aprendizaje por refuerzo. Lecun propone que, al igual que los bebés aprenden fundamentalmente a través de la observación, se puede entrenar una red neuronal muy grande para comprender el mundo mediante la predicción. Por ejemplo, si se le presenta una porción de un vídeo, el sistema debería ser capaz de predecir lo que ocurrirá a continuación.

En este modelo, no se requieren etiquetas externas asignadas por humanos; una parte de la entrada (input) sirve como entrenamiento para predecir el resto y así avanzar en el aprendizaje. Aunque se emplea con éxito en contextos de procesamiento del lenguaje natural (PLN), su eficacia disminuye al aplicarse a imágenes.

Entrenamiento Adversarial (GANs)

Para que una máquina aprenda a interpretar situaciones complejas, como una niña inclinándose sobre una tarta con una vela encendida rodeada de niños, se requiere el trabajo conjunto de dos redes neuronales en lo que se conoce como entrenamiento adversarial. Una red, el generador, se encarga de crear escenarios, mientras que la otra, el discriminador, evalúa la probabilidad o autenticidad de estos.

Ambas redes se entrenan mutuamente: el generador se vuelve cada vez más verosímil, y el discriminador, cada vez más difícil de engañar. Hemos visto estos sistemas en acción en diversas aplicaciones, como la generación de caras sintéticas, la creación de nuevos patrones para estampados de ropa e incluso en vehículos autónomos para predecir trayectorias de otros vehículos. Este enfoque podría ser fundamental para resolver el problema de la incertidumbre en los modelos predictivos.

Proceso de Entrenamiento de Redes Neuronales

El proceso de entrenamiento de una red neuronal generalmente sigue estos pasos:

  1. Muestra de datos etiquetados.
  2. Propagación hacia adelante (forward pass) a través de la red neuronal para obtener predicciones.
  3. Retropropagación (backpropagation) de los errores.
  4. Actualización de los pesos de la red neuronal.

Métrica de Error: Error Cuadrático Medio (MSE)

El Error Cuadrático Medio (MSE) es una métrica común para cuantificar el error de un modelo. Se calcula como:

MSE = (1/M) * Σ(i=1 to M) (real_i - estimado_i)^2

Donde:

  • M es el número total de muestras.
  • real_i es el valor real de la muestra i.
  • estimado_i es el valor predicho por el modelo para la muestra i.

Funciones de Activación Comunes

Las funciones de activación introducen no linealidad en las redes neuronales, permitiéndoles aprender patrones complejos. Algunas de las más comunes incluyen:

  • Identidad: La salida es igual a la entrada. Rango de salida: (-∞, +∞).
  • Escalón (Heaviside): Produce una salida binaria (0 o 1, o -1 o 1) dependiendo de si la entrada supera un umbral. Rango de salida: {0, 1} o {-1, 1}.
  • Lineal por Tramos (ReLU, Leaky ReLU, ELU, etc.): Funciones que son lineales en segmentos. Por ejemplo, ReLU (Rectified Linear Unit) devuelve la entrada si es positiva y cero si es negativa. Rango de salida: [0, +∞) para ReLU, o (-∞, +∞) para variantes como Leaky ReLU.
  • Sigmoide (Logística): Comprime cualquier valor de entrada en un rango entre 0 y 1, útil para probabilidades. Rango de salida: (0, 1).
  • Gaussiana (RBF – Radial Basis Function): Genera una salida basada en la distancia a un punto central, con un pico en el centro y disminuyendo hacia los extremos. Rango de salida: (0, 1].

Deja un comentario