Las redes neuronales artificiales son modelos matemáticos compuestos por neuronas artificiales que se inspiran en el funcionamiento biológico del cerebro humano. Son indispensables para resolver problemas de ingeniería de inteligencia artificial y requieren chips hardware avanzados para su soporte. En este artículo analizamos qué son, cómo funcionan, con qué tipo de chips pueden funcionar las redes neuronales y cuáles son sus nuevas fronteras tecnológicas.
Nota
Neuronas biológicas interconectadas forman nuestras redes neuronales cerebrales, las que permiten a cada individuo razonar, hacer cálculos en paralelo, reconocer sonidos, imágenes, rostros, aprender y actuar… La idea de poder replicar artificialmente el cerebro humano, simulando su funcionamiento, a través de redes neuronales artificiales tiene una historia que comienza desde lejos, desde los primeros años de la década de 1940 del siglo XX [la primera neurona artificial fue propuesta por W.S. McCulloch y W. Pitts en un famoso trabajo de 1943 titulado «A Logical Calculus of the Ideas Immanent in Nervous Activity» con el que intentaron demostrar que una máquina de Turing podía ser realizada con una red finita de neuronas para demostrar que la neurona era la unidad lógica básica del cerebro – ndr].
Tratemos de entender mejor de qué se trata, por qué se habla mucho de redes neuronales artificiales, cómo se emplean en el ámbito de la inteligencia artificial y del Machine learning, cuál es su historia y cuáles son las nuevas fronteras tecnológicas del hardware.
¿Qué son las Redes Neuronales Artificiales?
Las redes neuronales artificiales son modelos matemáticos compuestos por neuronas artificiales inspiradas en las redes neuronales biológicas (la humana o animal) y se utilizan para resolver problemas de ingeniería de inteligencia artificial relacionados con diversos ámbitos tecnológicos como la informática, la electrónica, la simulación u otras disciplinas.
Si quisiéramos dar una definición más detallada podríamos decir que las redes neuronales son modelos de cálculo matemático-informáticos basados en el funcionamiento de las redes neuronales biológicas, es decir, modelos constituidos por interconexiones de información; dichas interconexiones derivan de neuronas artificiales y procesos de cálculo basados en el modelo de las ciencias cognitivas llamado «conexionismo» [es decir, basados en PDP – Parallel Distributed Processing, procesamiento distribuido en paralelo de la información: el cerebro humano procesa la información de los diferentes sentidos de forma paralela y distribuye la información en todos los diferentes nodos de la red, no en una memoria central; haciendo la comparación con la informática tradicional, los cálculos se realizan de forma serial y no en paralelo y los datos se almacenan en una memoria central, aunque, como veremos, en los últimos años se han hecho enormes avances tanto en el frente de las memorias como en el punto de vista del cálculo computacional y los procesadores de hardware – ndr].
Curioso
Una curiosidad, en inglés se les llama ANN – Artificial Neural Network, pero desde hace varios años se ha pasado al más simple NN – Neural Network y también en español se habla simplemente de redes neuronales, sin distinguir la naturaleza biológica o artificial (deducible del contexto en el que se habla).
Los Sistemas Expertos y las Redes Neuronales
En el análisis de qué son y cómo funcionan las redes neuronales no podemos dejar de mencionar los llamados sistemas expertos. Se trata principalmente de aplicaciones que entran en la rama de la inteligencia artificial porque reproducen artificialmente las prestaciones de una persona experta en un determinado dominio de conocimiento o campo de actividad.
No se trata de una novedad, son sistemas que han gozado de cierta relevancia mediática y de gran interés por parte de las empresas en la década de 1980 (la demanda «excesiva» en comparación con la madurez tecnológica de la oferta de entonces hizo que pronto «se enfriaran los ánimos»), pero su introducción en el ámbito de la investigación se remonta a la década de 1970 cuando los científicos lograron realizar programas de software capaces de conservar, organizar y proponer al usuario el conocimiento de un dominio preciso, pero sobre todo, deducir de determinadas acciones/preguntas incluso el conocimiento útil aunque no se haya pedido expresamente.
Una verdadera revolución que permitió crear soluciones de software capaces de identificar las soluciones de problemas complejos. Soluciones que hoy clasificaríamos como sistemas de apoyo a la toma de decisiones, definiendo los sistemas expertos como software inteligente que, respondiendo de forma dinámica a las preguntas de los usuarios, les ayudan a resolver un problema relativo a una materia específica (es decir, un dominio de conocimiento particular).
¿Cómo funcionan los sistemas expertos?
Los sistemas expertos están estructurados en tres niveles tecnológicos diferentes:
- Base de conocimiento (knowledge base): podríamos identificarlo como la base de datos de la información que necesita el sistema para proporcionar una respuesta a un problema determinado (como lo haría el experto humano que tiene el conocimiento específico de la materia que se debe aplicar a la resolución del problema). Se trata del repositorio donde se almacena la información y las reglas que permiten al sistema poner en práctica un razonamiento;
- Motor inferencial: la base de conocimiento que subyace a un sistema experto también contiene la información específica de una serie de reglas de tipo If-Then (si-entonces): si se cumple una determinada condición – por ejemplo, se hace una determinada pregunta – se aplica una regla específica – por ejemplo, se hace una segunda pregunta o se da una respuesta precisa o se inicia una acción determinada, etc. Este «motor de reglas» es de hecho el componente de software que, analizando y procesando la información contenida en la base de conocimiento, entiende el problema y propone una solución.
- Interfaz de usuario: es la parte del software que permite al usuario aprovechar el motor inferencial; normalmente se trata de una interfaz web, a veces muy simplificada (una página donde el usuario introduce una pregunta por escrito y recibe en la pantalla la respuesta elaborada por el sistema experto), a veces más estructurada (hoy integrable también con otros sistemas basados en inteligencia artificial como el reconocimiento y la comprensión del lenguaje natural).
Lo que diferencia a los sistemas expertos de los programas de software normales son los datos que constituyen la base de conocimiento: en lugar de «apoyarse» en una estructura decisional predefinida, los sistemas expertos pueden proponer al usuario la mejor de las alternativas posibles encontrando la solución óptima al problema entre todas las disponibles.
¿En qué se Diferencian los Sistemas Expertos y las Redes Neuronales Artificiales?
En el imaginario común, los sistemas expertos se asocian – erróneamente – a las redes neuronales artificiales, quizás porque para describirlos a menudo se recurre a la comparación humana y se dice que son sistemas capaces de replicar el rendimiento de un ser humano experto (hablando luego de redes neuronales artificiales como sistemas capaces de emular el funcionamiento del cerebro biológico).
En realidad, la diferencia entre estas tecnologías es bastante evidente cuando se comparan las funcionalidades:
- Un sistema experto puede deducir algunos razonamientos (Mario es un ser humano; los hombres son mortales; Mario no es inmortal), cosa que la red neuronal no hace; esta última, sin embargo, es perfectamente capaz de reconocer un rostro humano en una imagen compleja, cosa que el sistema experto no es capaz de hacer;
- El sistema experto es capaz de explicar cómo ha llegado a una solución (recorre donde y cómo ha aplicado las reglas If-Then en base al conocimiento); el funcionamiento de las redes neuronales es, sin embargo, muy complejo y es casi imposible remontarse al procedimiento lógico que ha llevado a una determinada solución;
- Los sistemas expertos necesitan una intervención primaria por parte del experto de dominio que define las reglas que alimentan el motor inferencial, por lo que deben ser programados; las redes neuronales, por el contrario, «deducen» las reglas y las actividades de forma automática, a través del aprendizaje (las redes neuronales no utilizan reglas If-Then);
Aunque hoy en día la atención se centra a menudo solo en las redes neuronales, la madurez tecnológica alcanzada por los sistemas expertos les ha permitido encontrar importantes salidas de aplicación (hoy Myti, por ejemplo, utiliza los sistemas expertos dentro de soluciones de software como los configuradores de productos comerciales para ayudar a los usuarios no expertos, como los vendedores, a realizar propuestas eficaces para proyectos y productos complejos), tanto que hoy se habla del «próximo nivel», aquel que ve a los sistemas expertos y las redes neuronales trabajando juntos.
Aunque, como hemos visto, se trata de tecnologías diferentes, hoy en día las redes neuronales podrían utilizarse para «alimentar» de forma autónoma la base de conocimiento de los sistemas expertos. Para entender cómo, veamos cómo funcionan las redes neuronales.
Cómo Funcionan las Redes Neuronales
Una red neuronal se presenta como un sistema «adaptativo» capaz de modificar su estructura (los nodos y las interconexiones) basándose tanto en datos externos como en información interna que se conectan y pasan a través de la red neuronal durante la fase de aprendizaje y razonamiento.
Veamos cómo: una red neuronal biológica recibe datos y señales externas (en el hombre y el animal se perciben a través de los sentidos gracias a complejas organizaciones de células nerviosas que tienen «tareas» diferentes como la percepción del entorno, el reconocimiento de los estímulos, etc.); estos se procesan en información a través de un número impresionante de neuronas (que representan la capacidad de cálculo) interconectadas entre sí en una estructura no lineal y variable en respuesta a esos datos y estímulos externos. Es desde esta perspectiva que se habla entonces de «modelo» matemático-informático.
Del mismo modo, las redes neuronales artificiales son estructuras no lineales de datos estadísticos organizadas como herramientas de modelado: reciben señales externas en una capa de nodos (que representa la unidad de procesamiento, el procesador); cada uno de estos «nodos de entrada» está conectado a varios nodos internos de la red que, típicamente, están organizados en múltiples niveles de modo que cada nodo individual puede procesar las señales recibidas transmitiendo a los niveles sucesivos el resultado de sus procesamientos (por lo tanto, de la información más evolucionada, detallada).
En general, las redes neuronales están formadas por tres capas (que, sin embargo, pueden involucrar miles de neuronas y decenas de miles de conexiones):
- La capa de entrada (I – Input): es la que tiene la tarea de recibir y procesar las señales de entrada adaptándolas a las demandas de las neuronas de la red;
- La llamada capa H – hidden (capa oculta): es la que se encarga del proceso de procesamiento en sí (y también puede estar estructurada con múltiples columnas-niveles de neuronas);
- La capa de salida (O – Output): aquí se recopilan los resultados del procesamiento de la capa H y se adaptan a las demandas del siguiente nivel-bloque de la red neuronal.
Modelos de Aprendizaje de las Redes Neuronales
Para que este proceso sea eficiente es necesario «entrenar» las redes neuronales, es decir, hacer que aprendan cómo comportarse en el momento en que se vaya a resolver un problema de ingeniería, como por ejemplo el reconocimiento de un ser humano a partir del análisis de las imágenes (a través de, por ejemplo, la tecnología de reconocimiento facial).
El tema del aprendizaje está relacionado con el Machine Learning, entendido como algoritmos que utilizan métodos matemático-computacionales para aprender información de la experiencia (por lo tanto, de forma automática y adaptativa).
Estos son los principales modelos en uso hoy en día:
- Aprendizaje supervisado (Supervised Learning): al algoritmo se le proporcionan tanto conjuntos de datos como entrada como la información relativa a los resultados deseados con el objetivo de que la red identifique una regla general que relacione los datos de entrada con los de salida; en otras palabras, se le proporcionan ejemplos de entrada y salida para que el sistema aprenda la conexión entre ellos y extrapole una regla reutilizable para otras tareas similares;
- Aprendizaje no supervisado (Unsupervised Learning): al sistema solo se le proporcionan conjuntos de datos sin ninguna indicación del resultado deseado. El objetivo de este segundo método de aprendizaje es «remontarse» a patrones y modelos ocultos, es decir, identificar en los datos de entrada una estructura lógica sin que estos estén etiquetados previamente;
- Aprendizaje por refuerzo: en este caso, el sistema debe interactuar con un entorno dinámico (que le permite tener los datos de entrada) y alcanzar un objetivo (al alcanzarlo recibe una recompensa), aprendiendo también de los errores (identificados mediante «castigos»). El comportamiento (y el rendimiento) del sistema está determinado por una rutina de aprendizaje basada en la recompensa y el castigo;
- Aprendizaje semi-supervisado: es un modelo «híbrido» donde al ordenador se le proporciona un conjunto de datos incompletos para el entrenamiento/aprendizaje; algunos de estos datos de entrada están «dotados» de los respectivos ejemplos de salida (como en el aprendizaje supervisado), mientras que otros carecen de ellos (como en el aprendizaje no supervisado). El objetivo, en última instancia, es siempre el mismo: identificar reglas y funciones para la resolución de problemas, así como patrones y estructuras de datos útiles para alcanzar determinados objetivos.
Cómo se ha llegado a las Redes Neuronales Artificiales de Hoy
Como se anticipó al principio de este nuestro «viaje» para descubrir las redes neuronales, el primer gran paso hacia el nacimiento y el desarrollo de las redes neuronales artificiales lo dieron en 1943 Warren Sturgis McCulloch (neurofisiólogo) y Walter Pitts (matemático) en su publicación «A logical calculus of the ideas immanent in nervous activity». Los dos científicos intentaron modelar una primera neurona artificial esquematizando lo que se identificó como un «combinador lineal de umbral«, sistema donde la capa de entrada preveía datos binarios múltiples de entrada mientras que para la salida se preveía un único dato binario de salida; para «componer» la red neuronal, bastaba conceptualmente combinar un número adecuado de estos elementos y se demostró que era capaz de calcular funciones booleanas simples (funciones matemáticas basadas en dos variables que en informática equivalen a 1 y 0).
Desde 1943 hasta finales de la década de 1950, sin embargo, sucedió muy poco; hubo un intento en 1949 por parte del psicólogo canadiense Donald Olding Hebb de explicar los modelos complejos del cerebro y de extrapolar de ellos las primeras hipótesis de aprendizaje de las redes neuronales (a él se le atribuye el mérito de haber introducido uno de los algoritmos de aprendizaje fundamentales en el campo de las redes neuronales, el aprendizaje hebbiano, que se basa en el «peso» de las conexiones: se basa en el sencillo principio de que si dos neuronas se activan simultáneamente, su interconexión debe fortalecerse).
Un importante salto innovador se vio en 1958 con el primer esquema de red neuronal presentado por Frank Rosenblatt (psicólogo y científico informático estadounidense), precursor de las actuales redes neuronales: se llamó Perceptrón e indicaba una red con una capa de entrada y una de salida y una regla de aprendizaje intermedia basada en el algoritmo ‘retropropagación de errores’ (minimización de errores); la función matemática, en esencia, en función de la evaluación de los datos efectivos de salida – respecto a una entrada determinada – altera los pesos de las conexiones (sinapsis) provocando una diferencia entre la salida efectiva y la deseada.
Las teorías de Rosenblatt calentaron la comunidad científica durante más de una década, pero en 1969 Marvin Minsky y Seymour Papert demostraron sus fuertes limitaciones: el perceptrón resultó ser una red neuronal poco potente, incapaz de calcular la función «o exclusivo» (XOR).
Fue necesario esperar otra década para volver a ver algo innovador; en 1986 David Rumelhart introdujo la tercera capa de las redes neuronales (la que hoy se llama capa H – hidden) a través de la cual se identificaron los modelos de aprendizaje para entrenar las redes MLP – Multi-Layers Perceptron (es decir, un perceptrón multicapa); Rumelhart propuso a la comunidad científica el llamado algoritmo de retropropagación del error (error backpropagation), que modifica sistemáticamente los pesos de las conexiones entre los nodos, de modo que la respuesta de la red se acerque cada vez más a la deseada (algoritmo utilizado hoy en día en el aprendizaje supervisado).
Entre 1958 y principios de la década de 1970 también se asistió al «lanzamiento» de los primeros lenguajes de programación específicos para la inteligencia artificial (Lisp en 1958 y Prolog en 1973), pero es a partir de finales de la década de 1980 que se produce otra gran aceleración con la llegada al mercado «ampliado» de nuevos y potentes procesadores y chips avanzados capaces de soportar aplicaciones intensivas como las de análisis y simulaciones; a partir de entonces, el camino del avance tecnológico del hardware no se ha detenido y hoy en día en los laboratorios de investigación ya se está trabajando en chips neuromórficos (que imitan el funcionamiento del cerebro humano) y en chips para la computación cuántica.