Bibliotecas para Deep Learning
Existen diversas bibliotecas populares para trabajar con Deep Learning:
Theano
Theano es una biblioteca de Python y un compilador de optimización para manipular y evaluar expresiones matemáticas, especialmente las de valor matricial. En Theano, los cálculos se expresan mediante una sintaxis similar a NumPy y se compilan para ejecutarse de manera eficiente en arquitecturas de CPU o GPU.
TensorFlow
TensorFlow es una biblioteca de código abierto para aprendizaje automático a través de un rango de tareas, desarrollada por Google para satisfacer sus necesidades de sistemas capaces de construir y entrenar redes neuronales para detectar y descifrar patrones y correlaciones, análogos al aprendizaje y razonamiento usados por los humanos.
Keras
Keras es una biblioteca de Redes Neuronales de Código Abierto escrita en Python. Está especialmente diseñada para posibilitar la experimentación rápida con redes de Deep Learning.
Redes Neuronales Artificiales (ANN)
Las redes neuronales artificiales (también conocidas como sistemas conexionistas) son un modelo computacional vagamente inspirado en el comportamiento observado en su homólogo biológico. Consiste en un conjunto de unidades, llamadas neuronas artificiales, conectadas entre sí para transmitirse señales. La información de entrada atraviesa la red neuronal (donde se somete a diversas operaciones) produciendo unos valores de salida.
Pasos para ejecutar una Red Neuronal Artificial
- Inicializar aleatoriamente los pesos a números pequeños cercanos a 0 (pero no a 0).
- Ingresar la primera observación del conjunto de datos en la capa de entrada, asignando cada característica a un nodo de entrada.
- Propagación hacia adelante: De izquierda a derecha. Las neuronas se activan de tal manera que el impacto de la activación de cada neurona está limitado por los pesos. Propagar las activaciones hasta obtener el resultado previsto.
- Comparar el resultado previsto con el resultado real. Medir el error generado.
- Propagación hacia atrás: De derecha a izquierda. El error se propaga hacia atrás. Actualizar los pesos de acuerdo a cuánto son responsables del error. La tasa de aprendizaje determina cuánto se actualizan los pesos.
- Repetir los pasos 1 a 5 y actualizar los pesos después de cada observación (aprendizaje online/estocástico). O bien: repetir los pasos 1 a 5, pero actualizar los pesos solo después de un lote de observaciones (aprendizaje por lotes).
- Una vez que todo el conjunto de entrenamiento ha pasado por la red neuronal artificial (ANN), se completa una época. Realizar más épocas según sea necesario.
Compensación Sesgo-Varianza (Bias-Variance Trade-off)
Cuando entrenamos nuestra red neuronal artificial varias veces, se puede notar que la precisión obtenida varía entre entrenamientos, tanto en el conjunto de entrenamiento como en el conjunto de prueba. Esto nos introduce a la compensación Sesgo-Varianza (Bias-Variance Trade-off). La Compensación entre Sesgo y Varianza se refiere al hecho de que buscamos entrenar un modelo que no solo sea preciso, sino que también tenga una variación mínima en su precisión cuando se entrena múltiples veces.
Validación Cruzada K-Fold (K-Fold Cross Validation)
La técnica Validación Cruzada K-Fold mejora significativamente la situación de la varianza. Soluciona este problema dividiendo el conjunto de entrenamiento en K pliegues (folds). Comúnmente, K es igual a 10. Se entrena el modelo en K-1 pliegues y se prueba en el pliegue restante. Dado que con K pliegues se pueden hacer K combinaciones diferentes de conjuntos de entrenamiento y prueba, esta técnica permite entrenar y evaluar el modelo en K combinaciones distintas, proporcionando una estimación más robusta del rendimiento.
Sobreajuste (Overfitting)
El sobreajuste (overfitting) es el efecto de sobreentrenar un algoritmo de aprendizaje con unos ciertos datos para los que se conoce el resultado deseado. Cuando un sistema se entrena demasiado (se sobreentrena) o se entrena con datos extraños, el algoritmo de aprendizaje puede quedar ajustado a unas características muy específicas de los datos de entrenamiento que no tienen relación causal con la función objetivo. La validación cruzada es una técnica útil para identificar la existencia de problemas durante el entrenamiento de los modelos, como el sobreajuste, permitiendo así obtener modelos más estables.
Ajuste de Parámetros (Tuning)
La afinación o ajuste (tuning) de parámetros permite elegir los mejores parámetros para nuestra red neuronal. En una ANN, tenemos dos tipos de parámetros: los parámetros que se aprenden del modelo durante el entrenamiento (estos son los pesos) y otros parámetros que se mantienen fijos y se denominan hiperparámetros. Ejemplos de hiperparámetros son 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 en encontrar los valores óptimos para estos hiperparámetros.
GridSearchCV
GridSearchCV es una clase disponible en la biblioteca scikit-learn que permite evaluar y seleccionar de forma sistemática los parámetros de un modelo. Indicándole un modelo y un conjunto de parámetros a probar, puede evaluar el rendimiento del modelo para cada combinación de parámetros mediante validación cruzada, facilitando la búsqueda de la mejor configuración.
