lunes, 14 de julio de 2008

Neurona: Funciones

Función sumatoria
Aquí todos los productos de la entrada y el peso son sumados y comparados con alguna función de transferencia para determinar la salida. De esta manera si la suma de las entradas es mayor que el valor de la función de transferencia, la neurona generará una señal; por el contrario, si la suma de las entradas es menor, ninguna señal será generada. Ambos tipos de respuesta son significantes. La función sumatoria es la siguiente:

E= x1w1 + x2w2 +...+ xnwn

Donde:
E – Función sumatoria
x – Entrada
w – Peso

Función de activación o transferencia
También llamada función de salida o threshold, generalmente es no lineal. Las funciones lineales son limitadas, ya que la salida es simplemente proporcional a la entrada. Por otra parte, la función de transferencia puede ser tan simple como un cero. La salida depende de si el resultado de la función sumatoria es positivo o negativo. La red puede arrojar como resultado un 1 y un -1, ó 1 y 0, etcétera.
La relación entre las entradas y las salidas en cualquier instante esta especificado por la función de transferencia o activación.
La suma de los pesos de la entrada se convierte en la entrada de la función de transferencia, la cual dicta la salida de un proceso en particular. A continuación se muestran las funciones de transferencia más usuales.
Entre las unidades que conforman la red neuronal se tiene un conjunto de conexiones que unen unas a otras. Asociada a cada unidad Ui se tiene una función de salida fi(ai(t)), que transforma el estado actual de activación ai(t) a una señal de salida yi(t), o sea:
yi(t) = fi(ai(t))

Se tiene así el vector que contiene a las salidas de todas las neuronas en un instante t es:

Y(t) = (f1(a1(t)), f2(a2(t)),…, fi(ai(t)),…, fn(an(t)))


Figura. Funciones de transferencia más usuales (Palacios, 2003).
a) Función identidad: Equivale a no aplicar una función de salida (Aranguren & Muzachiodi, 2002).
b) Función escalón: También llamada umbral. Sólo se utiliza cuando la salida de la red es binaria. La salida de la neurona se activa si el estado de activación es mayor o igual que cierto valor umbral.
c) Función sigmoidal: Si se desea una salida analógica, esta función es la más apropiada.


Función de aprendizaje
Si se agrega memoria local a la neurona, se pueden almacenar resultados de cálculos previos y modificar los pesos usados. Esta habilidad de poder modificar los pesos, permite a la neurona modificar su comportamiento en respuesta a sus entradas, dicho de otra manera, le permite a la neurona aprender. En las RNA el conocimiento se encuentra en los pesos de las conexiones que existen entre las neuronas; es por esto que el proceso de aprendizaje consiste en modificar los valores de los pesos de la red.

Propiedades de las Redes Artificiales

Las redes neuronales artificiales cuentan con ciertas propiedades, como la manera en que se agrupan las neuronas, los pesos que contienen las conexiones, su topología, el número de nodos, de capas y el número y tipo de conexiones. Cada una de estas propiedades es explicada a continuación.
Capas
En una RNA, las neuronas se agrupan en capas, por lo tanto una red está formada por varias capas de neuronas. Se llama capa o nivel al conjunto de neuronas cuyas entradas provienen de la misma fuente, pudiendo ser otra capa de neuronas, cuyas salidas se dirigen al mismo destino, también pudiendo ser otra capa de neuronas. A pesar de que todas las capas son conjuntos de neuronas, dependiendo de la función que desempeñen reciben un nombre en específico. A continuación se mencionan:
a) Capa de entrada
La capa de entrada de una red neuronal sirve como buffer, pasando las entradas a la siguiente capa. Las neuronas de la capa de entrada reciben los datos que se proporcionan a la RNA para que ésta los procese. Las entradas pueden ser imágenes visuales, señales de audio, texto, patrones de pixeles, o alguna otra señal. Las redes neuronales manejan solamente tipos de datos numéricos como entrada. Por lo tanto, algunas veces será necesario convertir o codificar los datos para el ambiente externo.
b) Capa oculta
Las capas ocultas son aquellas cuyas entradas y salidas se encuentran dentro del sistema y no tienen contacto con el exterior (Aranguren & Muzachiodi, 2002). El número de capas ocultas depende del tipo de red que de desee construir. Este tipo de capas realiza gran parte del procesamiento (Palacios, 2003).
c) Capa de salida
La capa de salida hace posible que la información de la red esté disponible para el exterior. La función principal de esta capa es proporcionar la respuesta que ha generado la red. Así como hay una gran variación de entradas, lo hay también para las salidas.
Esquemas de pesos
En una red que no aprende, una vez dados los pesos estos nunca van a cambiar. De cualquier manera la habilidad para cambiar los pesos permite al sistema adaptarse a condiciones iniciales similares en diferentes tiempos arrojando diferentes resultados. Los pesos iniciales pueden ser dados mediante un algoritmo o aleatoriamente. Como la interconexión de pesos son cambiados se da la función del algoritmo de aprendizaje. El objetivo es ajustar los pesos hasta reducir el error en la salida.
Cada entrada dará un peso relativo, el cual afectará el impacto de esa entrada. Esto es como una variación sináptica en una red neuronal biológica (algunas entradas son más importantes que otras por la manera en que realizan las combinaciones para producir un impulso). El peso es un coeficiente adaptativo con el cual la red neuronal determina la intensidad de la señal de entrada.

Topología
La arquitectura de una red consiste en la organización de las neuronas en la red formando capas más o menos alejadas de la entrada y la salida de la red. Los parámetros fundamentales de la red son: el número de capas (monocapa o multicapa), el número de neuronas por capa, el grado de conectividad y el número y tipo de interconexiones entre neuronas.

Numero de nodos
El número de elementos necesarios para las capas de entrada y salida dependerá del número de entradas y salidas del sistema.

Número de capas
Algunos modelos sólo utilizan dos capas, pasando directamente de la capa de entrada a la capa de salida, no utilizan capas intermedias u ocultas. De cualquier manera, la estructura de una capa de entrada es diferente a la capa de salida, es por esto que las capas ocultas son utilizadas para crear una representación interna a partir de las entradas. Es importante mencionar que la habilidad para procesar la información incrementa en proporción del número de capas en la red. Esta habilidad de las redes neuronales es una característica muy poderosa.

Redes Monocapa
Son utilizadas en tareas relacionadas con la autoasociación. Para unirse las neuronas crean conexiones laterales para conectarse con otras neuronas de su capa.

Redes Multicapa
Estas redes se pueden clasificar de acuerdo a la manera en que se conectan sus capas. La mayoría de las redes multicapa son bicapa. Este tipo de estructura es apropiada para realizar una asociación de una información con otra información de salida en la segunda capa. El NECOGNITRON es un tipo de red multicapa muy particular, en el que las neuronas se disponen el planos superpuestos, permitiendo eliminar las variaciones geométricas o distorsiones que presenten las informaciones de entrada en la red.

Número y tipo de interconexiones
La salida que arroja un nodo después de haber procesado la información se convierte en la entrada de otra. Si la salida de un elemento simple es canalizada a cada uno de los nodos de la siguiente capa, entonces la red se encuentra totalmente conectada. Algunas redes, como la red de Hopfield se encuentran conectadas de manera esparcida a algunos nodos distantes, con un porcentaje pequeño de nodos recibiendo entradas de manera aleatoria de un elemento de la capa precedente.
Una red donde las neuronas de una capa reciben señales de entrada de otra capa anterior y envían señales de salida a una capa posterior, es llamada red unidireccional o con conexiones hacia delante (feedforward network). Por otra parte, una red recurrente, de conexiones hacia atrás o retroalimentada (feedback network) permite que las salidas de las neuronas de capas posteriores se conecten a las entradas de las capas anteriores. Otro tipo de red es la que se propaga hacia los lados (feedlateral connections), ya que un nodo puede enviar entradas a otros nodos en la misma capa.
Las redes unidireccionales son más rápidas que las recurrentes, ya que pueden obtener una solución con sólo un paso. Además, las redes unidireccionales garantizan estabilidad, ya que las recurrentes deben de realizar varios ciclos iterativos hasta que es sistema se establezca.

Las Redes Biologicas

El cerebro tiene una eficiente estructura y tiene la habilidad de construir sus propias reglas, a las cuales se refieren usualmente como “experiencias”. El cerebro procesa en paralelo, es altamente complejo y no es lineal; tiene la capacidad de organizar las neuronas de modo que ejecuten ciertas tareas como reconocimiento de patrones, reconocimiento del habla, percepción, etcétera, muchas veces de forma más rápida de lo que lo haría la más avanzada computadora digital. Además, el cerebro está compuesto de un gran número de elementos altamente conectados llamados neuronas. Existen alrededor de 100.000 millones de neuronas, conectadas cada una, con aproximadamente 10.00 millones de neuronas.
Al igual que las otras células, las neuronas también cuentan con un cuerpo celular (soma) y núcleo, además de otros elementos específicos: las dendritas y el axón. Las dendritas son ramificaciones de fibras nerviosas que reciben información de otras neuronas y las comunican al cuerpo celular a través señales eléctricas. El axón se ramifica hacia la salida de la neurona y transmite una serie de impulsos eléctricos a varias neuronas. El punto de contacto entre el axón de una célula y una dendrita de otra célula es llamado sinapsis.
La sinapsis es un espacio liquido donde existen elementos ionizados que hacen que el espacio sináptico tenga propiedades de conductividad que activen o impidan el paso de las señales eléctricas. Es por esto que existen dos tipos de sinapsis: la sinapsis de excitación y la sinapsis inhibitoria. La sinapsis es direccional, esto quiere decir que la información fluye en un solo sentido.

Figura. Funcionamiento de la Neurona Biológica (Arbiza, 2004)


La neurona recolecta una serie de señales, provenientes de otras neuronas, por medio de las dendritas. La neurona emite impulsos a lo largo del axón, que a su vez se divide en varias ramificaciones. Las extremidades de estas ramificaciones llegan hasta las dendritas de otras neuronas y establecen la sinapsis, en la cual se produce la transformación del impulso eléctrico en un mensaje neuroquímico, mediante la liberación de unas sustancias neurotransmisoras, el efecto de estas sustancias sobre la neurona receptora puede ser producir señales excitatorias o inhibitorias, que una vez que son recibidas por una neurona se combinan y en función de la estimulación total recibida, la neurona toma cierto nivel de activación, que se describe como la generación de breves impulsos nerviosos con una determinada frecuencia o tasa de disparo, la propagación a lo largo del axón hacia las neuronas con las cuales establece la sinapsis. De esta manera, la información se transmite de unas neuronas a otras y se va procesando a través de las conexiones sinápticas.
El aprendizaje de las redes neuronales se produce mediante la variación de la efectividad de la sinapsis. Es por esto que la influencia que unas neuronas que ejercen sobre otras cambia.
La arquitectura, el tipo y la efectividad de las conexiones en un momento dado, representan en cierto modo la memoria o estado de conocimiento de la red neuronal.

Aplicaciones

Aeroespacial:
Alto rendimiento en los pilotos automáticos de los aviones.
Simulaciones de la trayectoria de vuelo.
Sistemas de control de aviones.
Simulación de componentes de aviones.
Detector de fallas de los componentes de los aviones.

Automotriz:
Sistemas de guía automático para automóviles.

Biología:
Aprender más acerca del cerebro y otros sistemas.
Modelamiento de retina.

Negocios:
Evaluar la probabilidad del aceite en formaciones geológicas.
Identificar en una corporación a los candidatos para posiciones específicas.
Optimización de los horarios y reservaciones de vuelo.

Ambiental:
Análisis de las tendencias y patrones.
Pronóstico del tiempo.

Finanzas:
Determinación de riesgo de crédito.
Detección de falsificaciones y fraudes.
Identificación de firmas.
Análisis de inversiones.
Predicción de índices.
Predicción de la rentabilidad de acciones.
Valoración de los bienes inmuebles.
Consejero de préstamo.
Investigación de la hipoteca.
Grado en el enlace corporativo.
Análisis del uso de la línea de crédito.
Análisis financiero corporativo.
Predicción del valor de la moneda.

Negocios:
Marketing.
Venta cruzada.
Campañas de venta.

Tratamiento de textos y proceso de formas:
Reconocimiento de caracteres impresos mecánicamente.
Reconocimiento de gráficos.
Reconocimiento de caracteres escritos a mano.
Reconocimiento de escritura manual cursiva.

Diálogo:
Reconocimiento del diálogo.
Comprensión del diálogo.
Clasificación del volumen.
Síntesis de texto a diálogo.

Seguridad:
Análisis del mercado.
Grado del enlace automático.

Alimentación:
Análisis de olor y aroma.
Perfilamiento de clientes en función de la compra.
Desarrollo de productos

Energía:
Predicción de consumo eléctrico
Distribución de recursos hidráulicos para la producción eléctrica.
Predicción de consumo de gas.
Exploración del gas y petróleo.

Electrónica:
Predicción de la secuencia de código.
Estructura de los circuitos integrados.
Control de proceso.
Análisis de las fallas de chips.
Síntesis de voz.
Modelación no lineal.

Entretenimiento:
Animación.
Efectos especiales.

Manufactura:
Automatización de robots y sistemas de control.
Control de producción.
Control de procesos.
Inspección de calidad.
Selección de partes en una línea de ensamble.
Análisis y diseño de productos.
Identificación de partículas en tiempo real.
Sistemas de inspección de la calidad visual.
Análisis de la calidad de la soldadura.
Predicción de la calidad del papel.
Análisis de las operaciones de pulido.
Análisis del diseño de productos químicos.
Análisis del mantenimiento de máquinas.
Planeación y manejo.
Modelado dinámico de sistemas de proceso químico.

Medicina:
Análisis de las células causantes del cáncer de mama.
Diseño de prótesis.
Diagnóstico o prescripción de tratamientos a partir de síntomas.
Monitoreo de cirugías.
Predicción de las reacciones adversas del uso de las drogas.
Lectura de Rayos-X.
Comprensión de la causas de ataques epilépticos.
Análisis de imágenes.
Desarrollo de medicamentos.
Optimización del tiempo en los trasplantes.
Reducción del costo en hospitales.
Mejora de la calidad en hospitales.
Consideración de pruebas en cuartos de emergencia.

Milicia:
Clasificación de las señales de radar.
Creación de armas inteligentes.
Optimización del uso de recursos escasos.
Reconocimiento y seguimiento del objetivo.
Manejo de armas.
Reconocimiento facial.
Nuevos tipos de sensores.
Extracción y supresión de características de ruido.
Identificación de señales e imágenes.

Ciencia e Ingeniería:
Análisis de datos y clasificación
Ingeniería química.
Ingeniería eléctrica.
Climatología.

Robótica:
Control de trayectoria.
Manipulación de controladores.
Sistemas de visión.

Transportes y comunicaciones:
Optimización de rutas.
Optimización en la distribución de recursos.
Sistemas para diagnosticar fallas en camiones de carga (AERN, S.L., 2003).

Telecomunicaciones:
Compresión de imágenes y datos.
Sistemas de información automatizados.
Traducción en tiempo real del lenguaje hablado.
Sistemas de procesamiento de pagos del cliente.

Lo que se presenta a continuación son ejemplos de aplicaciones de redes neuronales:

Cancelación del ruido
Esta contribución limpia los ecos de las líneas telefónicas y reduce la transmisión de errores en módems. Cada vez que se realiza una llamada telefónica de larga distancia, la voz es procesada a través de un filtro adaptador. Al utilizar un módem, se está haciendo uso de una pequeña red neuronal.

Evaluador del riesgo de la Hipoteca
Ayuda a los prestamistas a identificar a las personas que pueden ser puntuales en sus pagos. El sistema fue entrenado en miles de aplicaciones.

Detector de Bombas
El sistema detector de bombas enciende automáticamente, que a diferencia de los humanos, no se distrae ni se cansa. Este sistema ha sido entrenado con las características de los materiales explosivos, esto con la finalidad de aprender a identificar los patrones de las emisiones de los rayos gamma. El detector puede examinar alrededor de diez piezas de equipaje por minuto, si no está seguro del contenido de una bolsa, esta es revisada por un inspector humano. La información que recaba del equipaje sospechoso es guardada y usada para futuras mejoras del sistema.

Tipos de Redes

En 1957 nace el PERCEPTRON, que fue el primer paradigma de Redes neuronales que apareció. Su creador, Frank Rosenblatt, construyó este modelo computacional que como aplicaciones tenía clasificación de figuras, reconocimiento de caracteres y reconocimiento de patrones de las capacidades del sistema de la visión. Anatómicamente, este modelo constaba de tres capas localmente conectadas. La capa de entrada o zona sensorial, simulaba a la retina, la cual recolecta la información sensorial, esta información la proyecta a la siguiente capa. La segunda capa, llamada zona de asociación, es una asociación unitaria conectada recíprocamente a la tercera capa, la cual es una unidad de respuesta. Las salidas son cero o uno. Como la función de transferencia es lineal, las últimas investigaciones han mostrado que las tres capas podían haber sido colapsadas en una sola.Rosenblatt creyó que el sistema pudo haber sido capaz de manejar las entradas variables y ruidosas, como lo hacen los sistemas biológicos, así como la auto-organización para asociar estímulos con respuesta.Por otra parte el Perceptrón estaba limitado para resolver problemas como el XOR. Sin embargo este modelo fue la inspiración para la elaboración de otros modelos poderosos como ADALINE. La red neuronal ADALINE, después MADALINE, fue desarrollada en 1959 por Bernard Widrow y Marcian Hoff, en la Universidad de Stanford. Esta fue la primera red neuronal aplicada a un problema real, la cual tenía por objetivo eliminar los ecos en las líneas telefónicas. Esta aplicación ha sido comercializada por varias décadas. La idea de sus creadores fue que este modelo aprendiera más rápido y fuera más exacto que el Perceptrón. Utilizaba el algoritmo de error-corrección también llamado Widrow-Hoff Rule, la cual consiste en que una vez detectado el error, lo corrige y de esta manera va aprendiendo. Entre las contribuciones de este modelo se encuentran: Anular las emisiones de radar, módems y ecualizadores del teléfono. Por último, como limitante es que asume relaciones lineales entre cero y uno. Stephen Grossberg, de la Universidad de Boston, realizó escritos considerables acerca de sus investigaciones psicológicas para el desarrollo de modelos de redes neuronales. En 1967, construyó un modelo llamado Avalanche, que utilizaba una clase de redes para realizar actividades como el reconocimiento del habla y enseñar comandos a los brazos de robots. Como todo modelo de red neuronal tiene sus limitantes, los de Avalanche son que no tenía un camino fácil para alterar su velocidad o interrumpir su movimiento y volver a proseguirlo. El método Backpropagation, o entrenamiento de propagación hacia atrás, fue desarrollado por D.E. Rumelhart, G.E. Hinton y R.J. Williams en 1986, y aproximadamente igual que Parker y Le Cum, ambos en 1985. Este tipo de red es la más popular, efectiva y de rápido aprendizaje para redes complejas y de múltiples capas. Básicamente, utiliza la técnica de Widrow-Hoff, la cual calcula la diferencia entre la salida actual y la salida deseada. Utilizando este error, los pesos son cambiados en proporción sobre el tiempo de error de la entrada. Tomando como referencia un nodo individual, esto significa que la entrada, la salida y la salida deseada deben de estar presentes en la misma sinapsis. Es un poco difícil realizarlo con unidades ocultas[1]. El sistema de entrenamiento consiste en inicializar los pesos sinápticos, elegidos al azar; posteriormente, se introducen unos datos de entrada, pueden ser o no elegidos al azar, para ser usados durante el entrenamiento; luego, se deja que la red genere un vector de datos de salida, a esto se le conoce como propagación hacia adelante; al termino, se compara la salida deseada con la que ha generado la red, a lo cual se le conoce como error; este error (también llamado diferencia), se usa para ajustar los pesos de las neuronas de la capa de salida; después, el error se propaga hacia atrás, hacia la capa de neuronas anterior, esto para ajustar los pesos en esa capa; por último, el error se continua propagando hacia atrás y ajustando los pesos hasta que alcance la capa de entradas. Este proceso es repetido con los diferentes datos de entrenamiento. Entre las aplicaciones de la red se encuentran: síntesis de voz desde el texto, brazos de robot, préstamos bancarios, entre otros. Por el contrario, la necesidad de varios ejemplos de entrada y salida para su entrenamiento es una de sus limitantes. Continuando con la cronología, en 1977 nace un nuevo modelo de red neuronal; Brain State in a Box (BSB), creado por James Anderson. El ingenioso nombre se debe a que establecía a la red neuronal en una caja de límites, o un hipercubo. El objetivo de este modelo es ofrecer un mejor entendimiento del cerebro humano y como trabaja. Al igual que ADALINE, BSB realizaba la corrección de errores mediante la propagación hacia atrás. Dentro de sus aplicaciones se encuentran más experimentos que productos. Una de sus asombrosas aplicaciones es que puede extraer conocimiento de bases de datos; otra es que después de haberla entrenado con diferentes tipos de enfermedades y sus síntomas, este modelo puede sugerir tratamientos si se le provee los síntomas para una enfermedad desconocida para él. John Hopfield, físico que trabajaba en los laboratorios Bell conceptualizó en 1982 una red neuronal en términos de su propia energía y de la física de los sistemas dinámicos. Un nodo cambiará de estado si se reduce el nivel de frustración de la red. La salida de cada nodo en binario, simétricamente está conectada con los pesos de las entradas. Pesos positivos son excitatorios y estarán fuertemente conectados; pesos negativos son inhibitorios, conectados débilmente. Entre las aplicaciones de la red de Hopfield se encuentran los sistemas de control de robots y en la identificación de los blancos militares de los amigos o enemigos.[1] Unidades ocultas: Son aquellas cuyas entradas y salidas se encuentran dentro del sistema, pero que no tienen contacto con el exterior.

Caracterizticas

Debido a su constitución y fundamentos, las redes neuronales artificiales presentan un gran número de características semejantes a las del cerebro. Son capaces de aprender de la experiencia, de generalizar casos anteriores a casos nuevos, de abstraer características esenciales a partir de entradas que representan información irrelevante, por mencionar algunos ejemplos. En esta sección se presentan algunas características básicas que es de gran utilidad conocer de las redes neuronales. Algunas de las características son:

Aprendizaje adaptativo
Es la capacidad de comportarse en función de un entrenamiento con ejemplos ilustrativos. De esta manera, no es necesario realizar un modelo a priori, ni elaborar funciones probabilísticas. “Una red neuronal artificial es adaptativa porque puede modificarse constantemente con el fin de adaptarse a nuevas condiciones de trabajo.”. (Sotolongo & Guzmán, 2001).



Autoorganización
En la etapa de aprendizaje una red neuronal crea su propia organización o representación de la información. La autoorganización es cuando se modifica muchas neuronas al mismo tiempo con el fin de llevar a cabo un objetivo específico. Autoorganización significa generalización (Sotolongo & Guzmán, 2001), que es otra de las características de las redes neuronales; de esta manera la red puede responder de manera apropiada a datos o situaciones a las que no se ha expuesto anteriormente, pero que puede inferir en base a su entrenamiento.

Generalización
A diferencia de la computadora convencional, la cual requiere una entrada precisa para obtener una salida; las redes neuronales pueden recibir variaciones en sus entradas y aún así producir la salida correcta. Esta característica es la capacidad que tiene la red para responder ante una entrada que no ha conocido con anterioridad. Por otra parte, el sistema podrá arrojar una salida en base a una hipótesis si se le presentan datos de entrada incompletos o parciales.

Tolerancia a fallos
A diferencia de la computadora convencional, en la cual la pérdida de un fragmento de información puede inutilizar al sistema; en las redes neuronales no, ya que éstas poseen una alta capacidad de tolerar los fallos. Con esta característica, las redes neuronales artificiales pueden reconocer patrones de información con ruido, distorsión o incompletos, además, pueden seguir trabajando aunque se destruya parte de la red, con cierta degradación por supuesto. Esta característica es posible debido a que las redes neuronales almacenan la información de manera distribuida y con un alto grado de redundancia. (Sotolongo & Guzmán, 2001).

Operación en tiempo real
De todos los métodos existentes, las redes neuronales artificiales son las más adecuadas para el reconocimiento de patrones en tiempo real, ya que trabajan en paralelo y de esta manera actualizan todas sus instancias simultáneamente. Esta característica es posible cuando se implementan redes en hardware diseñado para el procesamiento paralelo.

Fácil inserción en la tecnología existente
Se pueden obtener chips especializados para redes neuronales que mejoran su capacidad en ciertas tareas. Ello facilitará la integración modular en los sistemas existentes (Sotolongo & Guzmán, 2001). Una red individual puede ser entrenada para realizar una sola y bien definida tarea. Debido a que una red puede ser entrenada y verificada rápidamente, su implementación en hardware puede resultar de bajo coste, lo que facilita la inserción de las mismas dentro de sistemas existentes.

Trabajos realizados

Alyuda neurofusion:
Es una librería sobre redes neuronales de propósito general, puede ser usada para crear, entrenar y aplicar construcción redes neuronales cuyo objetivo es resolver problemas de regresión y de clasificación. Esta escrita en ANSI C++ y compilada con visual C++ 6.0. Opera en cualquier entorno de desarrollo que soporte Windows DLLs. La edición .NET está escrita es C# y compilada usando Visual Studio 7.1, puede ser usada en cualquier entorno de desarrollo que soporte tecnología .NET. (Alyuda Research Inc., 2005).

Alyuda forecaster:
Es un software de redes neuronales para predicciones, análisis de datos y clasificación. Permite mejorar los pronósticos sobre el clima, usando tecnología de redes neuronales artificiales. Cuenta con análisis automático de datos y selección automática de parámetros. (Alyuda Research Inc., 2005).

Alyuda neurointelligence:
Software de redes neuronales para expertos, diseñado para resolver problemas de predicción, clasificación y aproximación del mundo real. Utiliza características inteligentes para preprocesar hojas de datos, analizar y aplicar la red neuronal a los nuevos datos. (Alyuda Research Inc., 2005).

Aspirin/migraines:
Consiste en un generador de código que construye simuladores de redes neuronales tras leer una descripción de la red (escrita en un lenguaje llamado "Aspirin") y general una simulación en C. Una interface permite exportar datos desde la red neuronal a herramientas visuales. Funciona en varias plataformas. (Gondar, 2001).

DartNet:
Simulador Backpropagation para Macintosh, desarrollado en Dartmouth por Jamshed Bharucha y Sean Bharucha como una herramienta pedagógica. Utiliza la interface gráfica de Macintosh, además proporciona herramientas para construir, editar, entrenar, probar y examinar redes. (Aranguren & Muzachiodi, 2002).


GENESIS (GEneral NEural SImulation System):
Es una plataforma de simulación desarrollada para soportar la simulación de sistemas neuronales desde complejos modelos de neuronas sencillas hasta simulaciones de grandes redes constituidas por componentes neuronales más abstractos. Ejecutable en la mayor parte de plataformas UNIX. (Aranguren & Muzachiodi, 2002).

Mactivation:
Simulador de redes neuronales artificiales para Apple Macintosh. (Aranguren & Muzachiodi, 2002).

MBP (Matrix Backpropagation):
MBP es una implementación muy eficiente del algoritmo de Backpropagation para estaciones de trabajo de generación reciente. El algoritmo incluye una técnica adaptativa por época para descenso gradiente. Todas las operaciones se realizan a través de multiplicaciones matriciales y utilizan código C altamente optimizado. (Aranguren & Muzachiodi, 2002)

MUME (Multi-Module Neural Computing Environment):
Es un simulador para computación neuronal multi-modular. Proporciona una herramienta orientada a objetos para la simulación y ejercitamiento de múltiples redes con varias arquitecturas y algoritmos de aprendizaje. MUME puede ser utilizado para simulaciones de redes neuronales de gran escala puesto que proporciona un soporte para aprendizaje en entornos multi-redes. Soporte para X Windows. Distribución libre para instituciones educativas tras enviar la licencia firmada. (Aranguren & Muzachiodi, 2002).

Neocognitron Simulator:
El simulador está escrito en C e incluye una lista de referencias que es necesario leer para entender las características de la implementación. (Artificial Intelligence Resources Center Network, 2005).

NeuDL (Neural-Network Description Language):
NeuDL es un lenguaje descriptivo para el diseño, ejercitamiento y operación de redes neuronales. Está actualmente limitado al algoritmo de Backpropagation. Sin embargo, ofrece una gran flexibilidad. NeuDL es un lenguaje parecido a C y a C++. El compilador está escrito en C++, con lo que nuevas instrucciones pueden ser añadidas. (Artificial Intelligence Resources Center Network, 2005).

NevProp (Nevada Backpropagation):
Es un programa gratuito y de fácil manejo para FeedForward Backpropagation (Perceptrón multicapa). Usa una interactiva interface y es distribuido como código C que debería poder compilarse y ejecutarse en cualquier plataforma. (Artificial Intelligence Resources Center Network, 2005).

PMNEURO 1.0a:
El objetivo de este software es crear redes neuronales artificiales de tipo Backpropagation; además los resultados de la propagación pueden ser usados como entradas para el ejercitamiento, esto con el fin de crear nuevas redes y continuar intentos de propagación. (Artificial Intelligence Resources Center Network, 2005).

PYGMALION:
Es un prototipo derivado de un proyecto llamado ESPRIT. Por otra parte, implementa el tipo de red neuronal Backpropagation, mapa auto organizado y redes Hopfield. (Artificial Intelligence Resources Center Network, 2005)

Rochester Connectionist Simulator:
Es un programa de simulación muy versátil para tipos arbitrarios de redes neuronales. Incluye un paquete de la red neuronal artificial tipo Backpropagation. (Artificial Intelligence Resources Center Network, 2005).


Trajan 2.1 Shareware:
Es un simulador para el sistema operativo Windows utilizado para redes neuronales. Este software incluye soporte para dos tipos de redes neuronales: perceptrón multicapa con Backpropagation y redes Kohonen. (Artificial Intelligence Resources Center Network, 2005).

MatLab (Matrix Laboratory):
Es un programa para el análisis numérico creado por la compañía The MathWorks. Este software cuenta con varias aplicaciones, como la adquisición de datos, economía, lógica difusa, inteligencia artificial, así como la creación de redes neuronales artificiales. (The MathWorks, 2007).

Historia

Con la intención de entender el cerebro humano, a principios del siglo XIX se iniciaron las primeras investigaciones en redes neuronales artificiales. Un dispositivo hidráulico descrito por Russell fue la primera implementación de redes neuronales artificiales. Debido al trabajo de varios científicos y de los avances del hardware, en la década de los 40, en el siglo XX, el estudio de las redes neuronales artificiales cobró una fuerza que se ha incrementado hasta la actualidad.
El primer modelo matemático de redes neuronales, fue realizado por Warren McCulloch y Walter Pitts. Este modelo se basa en la idea de que las neuronas funcionan a base de impulsos binarios. Si bien el modelo generó gran interés, ya que su factor clave está en la capacidad de aprendizaje. Su trabajo es conocido como el origen del campo de las redes neuronales artificiales, el cual fue realizado en 1943. Este trabajo fue ampliamente leído en ese tiempo y hasta el día de hoy.
Posteriormente, Donald Hebb desarrolló un procedimiento matemático de aprendizaje competitivo, el cual lo describió él mismo en su libro titulado Organization of Behavior [Hebb, 1949]. En este procedimiento la red tiene una capa de neuronas de entrada y una capa de neuronas de salida. Los valores binarios (0 ó 1) son usados con más frecuencia en los nodos de salida. Esto significa que hay tantas neuronas de salida como número de clases, a su vez que cada nodo de salida representa una categoría de patrones. El procedimiento tiene el objetivo de seleccionar un ganador, es por esto que cuando una neurona participa constantemente en activar una neurona de salida, la influencia de la neurona de entrada es aumentada. A la neurona de salida que proporciona el valor más alto le es asignado el valor total (podría ser 1), por el contrario a las demás se les asigna el valor 0 (Bencomo, Díaz, Díaz, & Martínez, 2001). Éste paradigma de aprendizaje ahora lleva su nombre, aprendizaje hebbiano (Isasi Viñuela & Galván León, 2004).
Marvin Minsky obtuvo los primeros resultados prácticos en redes neuronales en 1945. Minsky y Edmons diseñaron una máquina con 40 neuronas en donde las conexiones se ajustaban con una serie de eventos que ocurrían al realizar ciertas actividades. La máquina fue construida con tubos, motores y relés y fue capaz de modelar el comportamiento de una rata buscando comida en un laberinto.
Poco después, Frank Rosenblatt extendió el modelo de McCulloch y Pitts añadiendo aprendizaje y así el modelo fue llamado el Perceptrón. Desarrolló un modelo de dos niveles, donde los pesos de las conexiones se ajustaban entre los niveles de entrada y la salida obtenida.
Bernard Widrow diseñó una red neuronal artificial similar al Perceptrón y la llamó Adaptative Linear Element o ADALINE. Esta red ajusta los pesos entre los niveles de entrada y salida en función del error entre el valor de salida esperado y el obtenido. En 1960, Widrow junto con Marcian Hoff probaron matemáticamente que en ciertas circunstancias el error entre la salida deseada y la obtenida puede ser minimizado hasta el límite que queramos. El ADALINE ha sido utilizado para procesamiento adaptativo de señales, sistemas de control y sistemas adaptativos de antenas.
Uno de los primeros investigadores en desarrollo de métodos de codificación de información en redes de neuronas, fue Steinbuch. Las redes se aplicaron al reconocimiento de escritura a mano, mecanismos de diagnóstico de fallos de maquinarias y control de múltiples procesos en producción.
El más influyente e informal de todos los investigadores fue Stephen Grossberg, quien realizó importantes estudios sobre procesos y fenómenos psicológicos y biológicos de procesamiento humano de la información. Sus trabajos incluyen estrictos análisis matemáticos, que permitieron la realización de nuevos paradigmas de redes de neuronas.
Grossberg formó un grupo de investigación en la universidad de de Boston. Con este grupo, investigó todas las facetas del procesamiento de información por parte de los humanos. Estas investigaciones cubren todo el aspecto de las redes neuronales artificiales.
Shun-Ichi Amari combinó la actividad de las redes neuronales biológicas con modelos matemáticos de redes neuronales artificiales. Un ejemplo de estos es una solución al problema de la asignación de créditos.
James Anderson, realizó un modelo de memoria asociativa lineal siguiendo el planteamiento de Hebb, el cual se basa en que las conexiones entre neuronas son reforzadas cada vez que son activadas. El nuevo método de Anderson consistía en elementos integradores o neuronas, que sumaban sus entradas, desarrollando un nuevo modelo llamado Brain-state-in-a-box en 1977. Entre las aplicaciones de este modelo se encuentran la extracción de conocimiento de bases de datos.
Los primeros en descubrir la relación entre los hologramas[1] y las memorias asociativas, fueron los investigadores del Departamento de Máquinas Inteligentes de la Universidad de Edimburgo en 1968. Los dos mecanismos son capaces de obtener un patrón a partir de pocas pistas. Longuet y Higgins crearon un sistema de ecuaciones codificadas para almacenar y recuperar una secuencia de señales. Años más tarde, Willhaw y Buneman junto con Longuet y Higgins, introdujeron los principios holográficos, como un posible mecanismo en los procesos de memoria humanos. De este trabajo surgió un modelo temporal de red neuronal artificial llamado HOLPHONE, paradigma que almacena señales de entrada y puede obtener una señal completa, partiendo únicamente de una parte de ella.
A finales de los 60, Kunihiko Fukushima empezó a trabajar sobre redes de neuronas artificiales, estudiando modelos espaciales y espacio-temporales para sistemas de visión y el cerebro.
A. Harry Kolpf estudió las relaciones entre la psicología de la mente y la biología del cerebro. Realizó una teoría donde menciona que la neurona es un sistema adaptativo, el cual aumenta la eficacia de sus sinapsis excitadoras cuando se despolariza[2] y aumenta la eficacia de sus sinapsis inhibidoras cuando se hiperpolariza[3].
Teuvo Kohonen, sus trabajos se centraron en memorias asociativas y matrices de correlación, de manera semejante a los trabajos de Anderson. Tiempo después, Kohone extendió el modelo de memoria asociativa lineal, en uno que buscaba las óptimas entre vectores linealmente independientes, llamado Asociador Óptimo de Memoria Lineal (OLAM).
A principios de los 70, Leon Cooper y su colega Charles Elbaum comenzaron a trabajar en redes neuronales artificiales. Crearon un grupo llamado Nestor Associates, para el desarrollo de la patente y la comercialización de redes neuronales artificiales. Este grupo tuvo mucho éxito en el desarrollo comercial de ciertos sistemas de red neuronal, por ejemplo la red RCE (Reduced Coulom Energy). (Galvan, 2004, p. 21).
Los modelos matemáticos y biológicos fueron investigados por Terence Sejnowski. Junto con Geoff Hinton descubrieron el algoritmo de la máquina de Boltzmann, la cual reconocía un algoritmo de aprendizaje para una red de tres niveles. Sus más recientes contribuciones han sido a la aplicación del algoritmo de retropropagación, en especial el reconocimiento de voz.
Por otra parte, los psicólogos McClelland y Rumelhart han realizado investigaciones a cerca de los modelos de redes de neuronas artificiales para ayudar a comprender las funciones psicológicas de la mente. Tiempo después integraron sus esfuerzos para realizar un paradigma de reconocimiento de voz llamado Interactive Activation Model. Posteriormente seguidos por otros investigadores interesados, nació el grupo PDP (Parallel Distributed Processing) (Galvan, 2004, p. 24). En 1986 el grupo de investigadores publicó un libro en dos volúmenes titulado Parallel Distributed Processing: Exploration in the Microstructure of Cognition. Los autores más destacados de este libro son, McClelland, Rumelhart, Hinton, Zipser, Smolensky, Sejnowsky, Williams, Jordan, Stone, Rabin, Elman, Kawamoto, Crick, Asanuma, Munro.
El principal diseñador de uno de los primeros computadores personales fue Robert Hecht-Nielsen. Este computador fue dedicado al procesamiento de paradigmas en redes neuronales. TRW MARK III, es el nombre del neurocomputador, el cual estuvo disponible a la venta en 1986. (Nelson & Illingworth, 1994).
Un método de análisis del estado estable en una red asociativa fue descrito en 1982 por John Hopfield (Nelson & Illingworth, 1994). Con este método Hopfield demuestra que se puede construir una ecuación de energía que describe la actividad de una red neuronal de una capa en tiempo discreto, que esta ecuación de energía puede ir disipándose y que a un valor mínimo local el sistema puede converger.
[1] Holograma: Imagen tridimensional creada por proyección fotográfica.
[2] Despolarizar: Tendencia a excitar la generación de los pulsos de la neurona receptora.
[3] Hiperpolarizar: Tendencia a inhibir la generación de los pulsos en la neurona receptora.