12 Redes neuronales, multilayer perceptron
Las redes neuronales artificiales (artificial neural networks, ANN) son modelos computacionales inspirados en el funcionamiento del cerebro humano. Están compuestas por unidades básicas llamadas neuronas, organizadas en capas interconectadas que transforman entradas en salidas mediante operaciones matemáticas. Su capacidad para modelar relaciones complejas en los datos las convierte en herramientas fundamentales en el contexto del aprendizaje automático (machine learning, ML).
El modelo más básico de red neuronal es el perceptrón (perceptron). Un perceptrón consiste en una o más entradas (input), una función que calcula una combinación lineal de las entradas y una función de activación básica (una función escalón, step function) que transforma los valores en la salida (output). El perceptrón, bajo su definición original, permitía realizar tareas de clasificación linealmente separable, pero era limitado para problemas más complejos.
Una red neuronal multicapa (multilayer perceptron, MLP) extiende el perceptrón añadiendo capas ocultas con múltiples neuronas y otras funciones de activación (como una sigmoide o ReLU), permitiendo representar relaciones no lineales. Estas redes constituyen la base conceptual del denominado aprendizaje profundo (Deep Learning) y de arquitecturas de modelos de redes neuronales más avanzados (que deben tener su propia asignatura), como:
- Redes Neuronales Convolucionales (Convolutional Neural Networks, CNNs)
- Redes Neuronales Recurrentes (Recurrent Neural Networks, RNNs)
- Redes LSTM (Long Short-Term Memory) y GRU (Gated Recurrent Units)
- Redes Generativas Antagónicas o Adversarias (Generative Adversarial Networks, GANs)
- Modelos Autoencoders
- Modelos basados en mecanismos de atención, como los Transformers
En esta sección, nos enfocaremos exclusivamente en el modelo más básico de red neuronal, el perceptrón y su extensión a redes neuronales multicapa (MLP). Aquí abordaremos: los fundamentos esenciales para comprender el funcionamiento de estas redes, una introducción a sus principios matemáticos básicos, y su aplicación en tareas de clasificación y regresión.
Cuadernos computacionales:
Deep playground. Play with neural networks:
12.1 Enlace scikit-learn
12.2 Acerca de entornos de desarrollo (frameworks)
12.2.1 Tensorflow
- Descripción: TensorFlow es una biblioteca de código abierto desarrollada por Google para construir y entrenar modelos de aprendizaje automático y aprendizaje profundo. Es altamente flexible y escalable, lo que la hace adecuada tanto para investigación como para aplicaciones comerciales.
- Características principales:
- Compatibilidad con múltiples plataformas de hardware, incluyendo CPU, GPU y TPU.
- Integración con TensorBoard, una herramienta para la visualización y el análisis del entrenamiento de modelos.
- Ecosistema completo con APIs de alto nivel (para desarrollo rápido) y bajo nivel (para mayor control y optimización).
Desde la versión TensorFlow 2.0, Keras se ha convertido en su API de alto nivel oficial, proporcionando una interfaz simplificada para la definición y entrenamiento de modelos. TensorFlow también incluye tf.keras
, su propia implementación de Keras, que permite aprovechar características avanzadas del ecosistema TensorFlow sin sacrificar la simplicidad de uso.
Cuadernos computacionales:
12.2.2 Pytorch
- Descripción: PyTorch es una biblioteca de aprendizaje profundo desarrollada por Facebook (ahora Meta). Es conocida por su flexibilidad y facilidad de uso, especialmente en investigación académica.
- Características principales:
- Construcción dinámica de grafos computacionales, lo que facilita la depuración y experimentación en comparación con el enfoque estático de TensorFlow.
- Compatibilidad con herramientas de análisis y depuración nativas de Python.
- Soporte para TorchScript, que permite transformar modelos dinámicos en representaciones optimizadas para despliegue en producción.
PyTorch es una alternativa directa a TensorFlow, pero tiene un enfoque diferente en términos de diseño y filosofía. Mientras que TensorFlow/Keras es más popular en aplicaciones comerciales y producción, PyTorch es ampliamente utilizado en investigación debido a su flexibilidad y facilidad de uso. Ambas bibliotecas tienen funcionalidades similares, pero la elección entre ellas depende del caso de uso y las preferencias del usuario.