Red neuronal artificial, concepto, ¿cómo funciona? y ¿cómo entrenarlas?
Las redes neuronales, también llamadas artificial neural networks (ANN) o simulated neural networks (SNN), constituyen un subcampo del aprendizaje automático y desempeñan un papel central en los algoritmos de aprendizaje profundo. Su denominación y estructura se basan en el cerebro humano, imitando el intercambio de señales entre las neuronas biológicas.
Las redes neuronales artificiales (ANN) se estructuran mediante capas de nodos, las cuales incluyen una capa de entrada, una o más capas ocultas y una capa de salida. Cada nodo, también conocido como neurona artificial, establece conexiones con otros nodos y posee un peso y un umbral asignados. Si la salida de un nodo individual supera el umbral establecido, se activa y envía datos a la siguiente capa de la red. En caso contrario, no se transmiten datos a la siguiente capa.
Índice de contenidos
Introducción
Las redes neuronales se fundamentan en el uso de datos de entrenamiento para aprender y mejorar su precisión a lo largo del tiempo. No obstante, una vez que estos algoritmos de aprendizaje están bien ajustados, se convierten en herramientas poderosas en el ámbito de la informática y la inteligencia artificial. Esto nos permite realizar clasificaciones y agrupaciones de datos a una velocidad considerable.
Tareas como el reconocimiento de voz o de imágenes pueden completarse en cuestión de minutos en lugar de horas, en comparación con la identificación manual llevada a cabo por expertos humanos. Uno de los ejemplos más conocidos de redes neuronales es el algoritmo de búsqueda utilizado por Google.
Cada neurona en una red neuronal establece conexiones con otras a través de enlaces. En estos enlaces, el valor de salida de la neurona anterior se multiplica por un peso asignado. Estos pesos pueden incrementar o inhibir la activación de las neuronas adyacentes. Asimismo, en la salida de la neurona puede haber una función limitadora o umbral que ajusta el valor resultante o impone un límite antes de propagarse a la siguiente neurona. Esta función se conoce como función de activación.
Estos sistemas tienen la capacidad de aprender y formarse por sí mismos, en lugar de ser programados de manera explícita, y destacan en áreas donde resulta difícil expresar soluciones o características mediante programación convencional. Para llevar a cabo este aprendizaje automático, se suele buscar la minimización de una función de pérdida que evalúa el rendimiento global de la red. Los pesos de las neuronas se van actualizando con el objetivo de reducir el valor de la función de pérdida. Este proceso se realiza mediante la propagación hacia atrás.
El objetivo de las redes neuronales es resolver problemas de manera similar al cerebro humano, aunque las redes neuronales son más abstractas. Las redes neuronales actuales pueden contener desde unos pocos miles hasta varios millones de unidades neuronales.
Las investigaciones en curso sobre el cerebro a menudo estimulan la creación de nuevos patrones en las redes neuronales. Un enfoque reciente utiliza conexiones que se extienden mucho más allá y capas de procesamiento en lugar de estar limitado únicamente a las neuronas adyacentes. Otro campo de investigación se centra en el estudio de los diferentes tipos de señales en el tiempo en las que los axones se propagan. El aprendizaje profundo, por ejemplo, permite una mayor complejidad que un conjunto de variables booleanas que solo pueden estar encendidas o apagadas.
Las redes neuronales se han utilizado para resolver una amplia variedad de tareas, como visión por computadora y reconocimiento de voz, las cuales resultan difíciles de abordar mediante la programación convencional basada en reglas. Históricamente, el uso de modelos de redes neuronales marcó un cambio de dirección a finales de la década de 1980, alejándose de los sistemas expertos de alto nivel caracterizados por reglas “si-entonces” con conocimiento incorporado, hacia el aprendizaje automático de bajo nivel, donde el conocimiento se encuentra en los parámetros de un modelo cognitivo con un sistema dinámico.
¿Cómo funcionan las redes neuronales?
La arquitectura de las redes neuronales está inspirada en el cerebro humano. En el cerebro humano, las células conocidas como neuronas forman una red compleja y altamente interconectada, transmitiéndose señales eléctricas entre sí para procesar la información. De manera análoga, una red neuronal artificial se compone de neuronas artificiales que colaboran para resolver problemas. Estas neuronas artificiales son módulos de software llamados nodos, y las redes neuronales artificiales son programas o algoritmos informáticos que utilizan sistemas computacionales para realizar cálculos matemáticos.
Estructura de una red neuronal básica
Una red neuronal simple consta de tres capas interconectadas de neuronas artificiales:
Capa de entrada
La información proveniente del entorno externo se introduce en la red neuronal a través de la capa de entrada. Los nodos de entrada procesan, analizan o clasifican los datos y los transmiten a la siguiente capa.
Capa oculta
Las capas ocultas reciben su entrada de la capa de entrada o de otras capas ocultas. Las redes neuronales artificiales pueden tener múltiples capas ocultas. Cada capa oculta analiza la salida de la capa anterior, la procesa aún más y la envía a la siguiente capa.
Capa de salida
La capa de salida proporciona el resultado final del procesamiento de datos realizado por la red neuronal artificial. Puede consistir en uno o varios nodos. Por ejemplo, en un problema de clasificación binaria (sí/no), la capa de salida tendrá un nodo de salida que produce un resultado de 1 o 0. En cambio, en un problema de clasificación multiclase, la capa de salida puede constar de varios nodos de salida.
Estructura de una red neuronal profunda
La arquitectura de una red neuronal profunda, también conocida como red de aprendizaje profundo, se caracteriza por tener múltiples capas ocultas con millones de neuronas artificiales interconectadas entre sí. Estas conexiones están representadas por números llamados pesos, los cuales pueden ser positivos para indicar una estimulación entre nodos o negativos para indicar una supresión. Los nodos con pesos más altos ejercen una mayor influencia en los demás nodos.
En teoría, las redes neuronales profundas tienen la capacidad de asignar cualquier tipo de entrada a cualquier tipo de salida. Sin embargo, también requieren de un entrenamiento mucho más extenso en comparación con otros métodos de aprendizaje automático. Necesitan millones de ejemplos de datos de entrenamiento en lugar de los cientos o miles que podrían ser suficientes para una red más sencilla.
¿Cuáles son los tipos de redes neuronales?
Existen diferentes clasificaciones de las redes neuronales artificiales en función del flujo de datos desde el nodo de entrada hasta el nodo de salida. A continuación, se presentan algunos ejemplos:
- Redes neuronales prealimentadas: Las redes neuronales prealimentadas procesan los datos en una dirección, desde el nodo de entrada hasta el nodo de salida. En este tipo de redes, todos los nodos de una capa están conectados a todos los nodos de la capa siguiente. Estas redes utilizan la retroalimentación para mejorar las predicciones a lo largo del tiempo.
- Algoritmo de retropropagación: Las redes neuronales artificiales aprenden de forma continua mediante bucles de retroalimentación correctiva para mejorar su capacidad predictiva. En este proceso, los datos fluyen desde el nodo de entrada hasta el nodo de salida a través de diferentes caminos en la red neuronal. La red ajusta los pesos de las conexiones en función de las respuestas correctas e incorrectas para encontrar el camino óptimo.
- Redes neuronales convolucionales: Las redes neuronales convolucionales se utilizan principalmente en la clasificación de imágenes. Estas redes contienen capas ocultas que realizan operaciones matemáticas específicas, llamadas convoluciones, que permiten extraer características relevantes de las imágenes. Cada capa oculta se encarga de procesar y extraer diferentes características, como bordes, colores y profundidad, lo que facilita la clasificación y el reconocimiento de imágenes.
¿Para qué se utilizan las redes neuronales?
Las redes neuronales tienen una amplia variedad de aplicaciones en diversos sectores. A continuación, se presentan cuatro de los casos de uso más importantes:
- Visión artificial: Las redes neuronales se utilizan en el procesamiento de imágenes y videos para realizar tareas como el reconocimiento de objetos, detección de rostros, clasificación de imágenes y más. Esto tiene aplicaciones en vehículos autónomos, moderación de contenido, reconocimiento facial y etiquetado de imágenes.
- Reconocimiento de voz: Las redes neuronales permiten el reconocimiento y procesamiento del habla humana. Se utilizan en asistentes virtuales, sistemas de transcripción automática y análisis de llamadas para mejorar la atención al cliente, la documentación médica y la transcripción de contenido audiovisual.
- Procesamiento de lenguaje natural (PLN): Las redes neuronales son fundamentales en el PLN, permitiendo a las computadoras entender y generar texto en lenguaje natural. Esto se aplica en chatbots, análisis de texto, generación de resúmenes, clasificación de datos escritos y motores de recomendación.
- Motores de recomendaciones: Las redes neuronales se utilizan en la personalización de recomendaciones, analizando el comportamiento del usuario para ofrecer sugerencias relevantes. Esto se aplica en plataformas de comercio electrónico, servicios de streaming, redes sociales y más, mejorando la experiencia del usuario y aumentando la eficacia del marketing.
¿Cómo entrenar las redes neuronales?
El entrenamiento de las redes neuronales implica ajustar los pesos y los sesgos de las conexiones entre las neuronas para que la red pueda aprender y realizar tareas específicas. Aquí hay una descripción general de los pasos típicos para entrenar una red neuronal:
- Preparación de los datos de entrenamiento: Se deben recopilar y preparar los datos que se utilizarán para entrenar la red. Esto implica dividir los datos en conjuntos de entrenamiento y validación, y realizar cualquier procesamiento necesario, como la normalización de los valores.
- Inicialización de la red: Se establecen aleatoriamente los pesos y los sesgos iniciales de la red neuronal. Estos valores iniciales determinan cómo la red responde a los estímulos y son refinados durante el proceso de entrenamiento.
- Propagación hacia adelante (forward propagation): Los datos de entrenamiento se alimentan a través de la red, capa por capa, en una dirección desde la entrada hasta la salida. Cada neurona realiza una combinación lineal de las entradas ponderadas por sus pesos, y luego aplica una función de activación para generar una salida.
- Cálculo de la función de pérdida: Se calcula una métrica de error o pérdida que indica qué tan bien está realizando la red neuronal en comparación con las salidas esperadas. Esto se hace comparando las salidas de la red con los valores reales de entrenamiento.
- Retropropagación del error (backpropagation): El error calculado se propaga hacia atrás a través de la red neuronal para ajustar los pesos y sesgos. Esto implica calcular las derivadas parciales del error con respecto a los pesos y sesgos de cada neurona, y utilizarlas para actualizar los valores mediante un algoritmo de optimización, como el descenso del gradiente.
- Actualización de los pesos y sesgos: Los pesos y sesgos se actualizan utilizando el algoritmo de optimización seleccionado, que ajusta los valores en función de las derivadas calculadas durante el paso de retropropagación. Esto se repite para cada ejemplo de entrenamiento en el conjunto de datos.
- Repetición del proceso: Se repiten los pasos 3 a 6 para iterar sobre todo el conjunto de entrenamiento varias veces, conocido como épocas. Esto permite que la red mejore gradualmente su rendimiento a medida que los pesos se ajustan con mayor precisión.
- Validación y ajuste: Se utiliza el conjunto de validación para evaluar el rendimiento de la red durante el entrenamiento. Si la red muestra un buen rendimiento en el conjunto de entrenamiento pero no en el conjunto de validación, puede ser necesario ajustar los hiperparámetros de la red, como la tasa de aprendizaje o el número de capas ocultas.
- Evaluación del rendimiento final: Una vez que la red ha sido entrenada, se evalúa su rendimiento utilizando un conjunto de datos separado llamado conjunto de prueba. Esto proporciona una medida objetiva del rendimiento de la red en datos no vistos durante el entrenamiento.
Es importante destacar que el entrenamiento de una red neuronal puede ser un proceso iterativo y requiere ajustar varios hiperparámetros y técnicas según el problema y los datos específicos. Además, existen diferentes algoritmos y enfoques de entrenamiento más avanzados, como el aprendizaje por transferencia y el aprendizaje por refuerzo, que se utilizan en casos más complejos.
Historia de las redes neuronales
Warren McCulloch y Walter Pitts desarrollaron el modelo de lógica umbral en 1943, que sentó las bases para la investigación en redes neuronales. Este modelo se basa en conceptos matemáticos y algoritmos. A partir de ahí, la investigación en redes neuronales se dividió en dos enfoques distintos: uno centrado en los procesos biológicos del cerebro y otro centrado en la aplicación de las redes neuronales en la inteligencia artificial.
En la década de 1940, Donald Hebb propuso el aprendizaje de Hebb, una hipótesis basada en el mecanismo de plasticidad neuronal. Este tipo de aprendizaje se considera no supervisado y sentó las bases para el desarrollo de modelos de potenciación a largo plazo en las redes neuronales.
En 1954, Farley y Clark utilizaron máquinas computacionales para simular redes de Hebb en el MIT, y en 1956, Rochester, Holland, Habit y Duda crearon otras simulaciones de redes neuronales por computadora.
En 1958, Frank Rosenblatt desarrolló el perceptrón, un algoritmo de reconocimiento de patrones basado en una red de aprendizaje de dos capas. Este algoritmo utilizaba operaciones simples de adición y sustracción. Rosenblatt también propuso circuitos adicionales, como el circuito XOR, que no se podían procesar con las redes neuronales básicas hasta el desarrollo del algoritmo de retropropagación por Paul Werbos en 1975.
En 1959, los ganadores del Premio Nobel David H. Hubel y Torsten Wiesel propusieron un modelo biológico basado en su descubrimiento de células simples y células complejas en la corteza visual primaria.
En 1965, Ivakhnenko y Lapa publicaron el primer informe sobre redes neuronales funcionales multicapa, conocido como el método de agrupamiento para el manejo de datos.
La investigación en redes neuronales tuvo un estancamiento después de la publicación del libro de Marvin Minsky y Seymour Papert en 1969, que planteaba desafíos fundamentales con las redes neuronales computacionales. Estos desafíos incluían la incapacidad de los perceptrones básicos para procesar el circuito XOR y la limitada capacidad de procesamiento de los ordenadores para manejar eficientemente las grandes redes neuronales.
Sin embargo, en la década de 1980, el procesamiento distribuido en paralelo ganó popularidad con el nombre de conexionismo. El libro de Rumelhart y McClelland en 1986 proporcionó una exposición completa de la aplicación del conexionismo en los ordenadores para simular procesos neuronales.
El algoritmo de retropropagación, que resuelve el problema del circuito XOR y permite un entrenamiento eficiente de redes neuronales multicapa, fue un avance clave desarrollado en 1975 por Werbos.
En los últimos años, el campo de las redes neuronales ha experimentado un resurgimiento con el surgimiento del aprendizaje profundo. Los avances en el preentrenamiento no supervisado, el aumento de la potencia de cálculo con el uso de GPUs y la computación distribuida han permitido desplegar redes neuronales a gran escala en problemas de procesamiento de imágenes y reconocimiento visual.
Además, se han explorado diseños basados en hardware, como dispositivos CMOS y nanodispositivos, para la simulación biofísica y el cómputo neuromórfico.