El software de redes neuronales se utiliza para simular , investigar , desarrollar y aplicar redes neuronales artificiales , conceptos de software adaptados de redes neuronales biológicas y, en algunos casos, una gama más amplia de sistemas adaptativos como la inteligencia artificial y el aprendizaje automático .
Los simuladores de redes neuronales son aplicaciones de software que se utilizan para simular el comportamiento de redes neuronales artificiales o biológicas. Se centran en uno o en un número limitado de tipos específicos de redes neuronales. Por lo general, son independientes y no están destinados a producir redes neuronales generales que se puedan integrar en otro software. Los simuladores suelen tener algún tipo de visualización incorporada para supervisar el proceso de entrenamiento. Algunos simuladores también visualizan la estructura física de la red neuronal.
Históricamente, el tipo más común de software de redes neuronales estaba destinado a la investigación de estructuras y algoritmos de redes neuronales. El objetivo principal de este tipo de software es, a través de la simulación, obtener una mejor comprensión del comportamiento y las propiedades de las redes neuronales. Hoy en día, en el estudio de las redes neuronales artificiales, los simuladores han sido reemplazados en gran medida por entornos de desarrollo basados en componentes más generales como plataformas de investigación.
Los simuladores de redes neuronales artificiales más utilizados incluyen el Simulador de red neuronal de Stuttgart (SNNS) y Emergent .
Sin embargo, en el estudio de las redes neuronales biológicas, el software de simulación sigue siendo el único método disponible. En estos simuladores se estudian las propiedades físicas, biológicas y químicas del tejido neuronal, así como los impulsos electromagnéticos entre las neuronas.
Los simuladores de redes biológicas más utilizados incluyen Neuron , GENESIS , NEST y Brian .
A diferencia de los simuladores de investigación, los simuladores de análisis de datos están pensados para aplicaciones prácticas de redes neuronales artificiales. Su principal objetivo es la minería de datos y la previsión. Los simuladores de análisis de datos suelen tener algún tipo de capacidad de preprocesamiento. A diferencia de los entornos de desarrollo más generales, los simuladores de análisis de datos utilizan una red neuronal estática relativamente sencilla que se puede configurar. La mayoría de los simuladores de análisis de datos del mercado utilizan redes de retropropagación o mapas autoorganizados como núcleo. La ventaja de este tipo de software es que es relativamente fácil de utilizar. Neural Designer es un ejemplo de simulador de análisis de datos.
Cuando se publicaron los volúmenes de procesamiento distribuido paralelo [1] [2] [3] en 1986-87, proporcionaron un software relativamente simple. El software PDP original no requería ninguna habilidad de programación, lo que llevó a su adopción por una amplia variedad de investigadores en diversos campos. El software PDP original se desarrolló en un paquete más poderoso llamado PDP++, que a su vez se convirtió en una plataforma aún más poderosa llamada Emergent . Con cada desarrollo, el software se ha vuelto más poderoso, pero también más desafiante para su uso por parte de principiantes.
En 1997, se lanzó el software tLearn para acompañar un libro. [4] Esto fue un regreso a la idea de proporcionar un simulador pequeño y fácil de usar que fue diseñado teniendo en mente a los principiantes. tLearn permitió redes básicas de propagación hacia adelante, junto con redes recurrentes simples, las cuales pueden ser entrenadas por el algoritmo simple de propagación hacia atrás. tLearn no se ha actualizado desde 1999.
En 2011, se lanzó el simulador Basic Prop. Basic Prop es una aplicación autónoma, distribuida como un archivo JAR independiente de la plataforma, que proporciona gran parte de la misma funcionalidad simple que tLearn.
Los entornos de desarrollo para redes neuronales se diferencian del software descrito anteriormente principalmente en dos aspectos: se pueden utilizar para desarrollar tipos personalizados de redes neuronales y admiten la implementación de la red neuronal fuera del entorno. En algunos casos, tienen capacidades avanzadas de preprocesamiento , análisis y visualización.
Un tipo más moderno de entornos de desarrollo que se utilizan actualmente tanto en el ámbito industrial como científico se basa en un paradigma basado en componentes . La red neuronal se construye conectando componentes de filtro adaptativos en un flujo de filtro de tubería. Esto permite una mayor flexibilidad, ya que se pueden construir redes personalizadas, así como componentes personalizados utilizados por la red. En muchos casos, esto permite que una combinación de componentes adaptativos y no adaptativos trabajen juntos. El flujo de datos está controlado por un sistema de control que es intercambiable, así como los algoritmos de adaptación. La otra característica importante son las capacidades de implementación.
Con la llegada de los marcos basados en componentes, como .NET y Java , los entornos de desarrollo basados en componentes son capaces de implementar la red neuronal desarrollada en estos marcos como componentes heredables. Además, algunos programas también pueden implementar estos componentes en varias plataformas, como los sistemas integrados .
Los entornos de desarrollo basados en componentes incluyen: Peltarion Synapse , NeuroDimension NeuroSolutions , Scientific Software Neuro Laboratory y el software integrado LIONsolver . Los entornos de código abierto basados en componentes gratuitos incluyen Encog y Neuroph .
Una desventaja de los entornos de desarrollo basados en componentes es que son más complejos que los simuladores, requieren más aprendizaje para funcionar plenamente y son más complicados de desarrollar.
Sin embargo, la mayoría de las implementaciones de redes neuronales disponibles son implementaciones personalizadas en varios lenguajes de programación y en varias plataformas. Los tipos básicos de redes neuronales son fáciles de implementar directamente. También hay muchas bibliotecas de programación que contienen funcionalidades de redes neuronales y que se pueden usar en implementaciones personalizadas (como TensorFlow , Theano , etc., que generalmente brindan enlaces a lenguajes como Python , C++ , Java ).
Para que los modelos de redes neuronales puedan ser compartidos por diferentes aplicaciones, es necesario un lenguaje común. Para abordar esta necesidad, se ha propuesto el lenguaje de marcado de modelos predictivos (PMML). PMML es un lenguaje basado en XML que ofrece una forma para que las aplicaciones definan y compartan modelos de redes neuronales (y otros modelos de minería de datos) entre aplicaciones compatibles con PMML.
PMML ofrece a las aplicaciones un método independiente del proveedor para definir modelos, de modo que los problemas de propiedad y las incompatibilidades ya no sean una barrera para el intercambio de modelos entre aplicaciones. Permite a los usuarios desarrollar modelos dentro de la aplicación de un proveedor y utilizar las aplicaciones de otros proveedores para visualizar, analizar, evaluar o utilizar de otro modo los modelos. Antes, esto era muy difícil, pero con PMML, el intercambio de modelos entre aplicaciones compatibles ahora es sencillo.
Se ofrece una gama de productos para producir y consumir PMML. Esta lista, que no deja de crecer, incluye los siguientes productos de redes neuronales: