lunes, 16 de febrero de 2009

Redes Neuronales

Esta tecnología puede ser desarrollada tanto en software como en hardware y con ella se pueden construir sistemas capaces de aprender, de adaptarse a condiciones variantes, o inclusive si se dispone de una colección suficiente grande de datos, predecir el estado futuro de algunos modelos.
Estas técnicas son adecuadas para enfrentar problemas que hasta ahora eran resueltos sólo por el cerebro humano y resultaban difíciles o imposibles para las máquinas lógicas secuenciales. Un procesamiento paralelo realizado por un gran número de elementos altamente interconectados, es la clave de su funcionamiento.
Las Redes Neuronales (Neural Networks) son utilizadas para la predicción, la minería de datos (data mining), el reconocimiento de patrones y los sistemas de control adaptativo. Constituyen una parte muy importante en el estudio y desarrollo de la inteligencia artificial (AI) y el de la vida artificial (a-life).
Las RN pueden ser combinadas con otras herramientas como la lógica difusa (lógica fuzzy), los algoritmos genéticos, los sistemas expertos, las estadísticas, las transformadas de Fourier, etc.
PANORAMA HISTÓRICO
Conseguir, diseñar y construir máquinas capaces de realizar procesos con cierta inteligencia ha sido uno de los principales objetivos y preocupaciones de los científicos a lo largo de la historia. Sin embargo a pesar de disponer de herramientas y de lenguajes de programación diseñados para el desarrollo de máquinas inteligentes, existe un problema de fondo que limita los resultados: estas máquinas se implementan sobre ordenadores basados en la filosofía de Von Neumann, y se apoyan en una descripción secuencial del proceso de tratamiento de la información.
Las primeras explicaciones teóricas sobre el cerebro y el pensamiento fueron dadas por algunos filósofos griegos, como Platón y Aristóteles, quienes fueron apoyados después por Descartes y filósofos empiristas.
Alan Turing, en 1936, fue el primero en estudiar el cerebro como una forma de ver el mundo de la computación, pero quienes primero concibieron algunos fundamentos de la computación neuronal fueron Warren McCulloch y Walter Pitts, después otras teorías iniciales fueron expuestas por Donald Hebb. Pero solo hasta 1957 Frank Rosenblatt comenzó el desarrollo del Perceptrón, la red neuronal más antigua de la que me encargaré posteriormente.
Más adelante apareció el modelo ADALINE, desarrollado por Bernard Widrow y Marcial Hoff.
Stephen Grossberg realizó Avalancha en 1967, hasta 1982 el crecimiento se frenó pero surgieron luego investigaciones sobre redes como la de Marvin Minsky y Seymour Papert, después James Anderson desarrolló el Asociador Lineal, en Japón Kunihiko Fukushimika y Teuvo Kohonen que se centraron en redes neuronales para el reconocimiento de patrones; en USA John Hopfield también realizó importantes investigaciones.
APLICACIONES
Las características de las RNA las hacen bastante apropiadas para aplicaciones en las que no se dispone a priori de un modelo identificable que pueda ser programado, pero se dispone de un conjunto básico de ejemplos de entrada (previamente clasificados o no). Asimismo, son altamente robustas tanto al ruido como a la disfunción de elementos concretos y son fácilmente paralelizables.
Esto incluye problemas de clasificación y reconocimiento de patrones de voz, imágenes, señales, etc. Asimismo se han utilizado para encontrar patrones de fraude económico, hacer predicciones en el mercado financiero, hacer predicciones de tiempo atmosférico, etc.
También se pueden utilizar cuando no existen modelos matemáticos precisos o algoritmos con complejidad razonable; por ejemplo la red de Kohonen ha sido aplicada con un éxito más que razonable al clásico problema del viajante (un problema para el que no se conoce solución algorítmica de complejidad polinómica).
Otro tipo especial de redes neuronales artificiales se ha aplicado en conjunción con los algoritmos genéticos (AG) para crear controladores para robots. La disciplina que trata la evolución de redes neuronales mediante algoritmos genéticos se denomina Robótica Evolutiva. En este tipo de aplicación el genoma del AG lo constituyen los parámetros de la red (topología, algoritmo de aprendizaje, funciones de activación, etc.) y la adecuación de la red viene dada por la adecuación del comportamiento exhibido por el robot controlado (normalmente una simulación de dicho comportamiento)
EJEMPLOS
Quake II Neuralbot
Un bot es un programa que simula a un jugador humano. El Neuralbot es un bot para el juego Quake II que utiliza una red neuronal para decidir su comportamiento y un algoritmo genético para el aprendizaje. Es muy fácil probarlo y ver su evolución.
Clasificador No Sesgado de Proteínas
Es un programa que combina diversas técnicas computacionales con el objetivo de clasificar familias de proteínas. Un posible método consiste en utilizar métricas adaptativas como por ejemplo: mapas autoorganizados y algoritmos genéticos.
El problema de clasificación no sesgada basada en la expresión de las proteínas en Aminoácidos puede reducirse, conceptualmente, a lo siguiente:
• La identificación de grupos de proteínas que compartan características comunes.
• La determinación de las razones estructurales por las cuales las proteínas en cuestión se agrupan de la manera indicada.
• Evitar la idea de establecer criterios de clasificación (“sesgados”) fundamentados en ideas preconcebidas para lograr su clasificación. En este sentido, hay dos asuntos que considerar:
o Cómo lograr la caracterización de las proteínas de manera no sesgada
o Cómo lograr lo anterior sin apelar a medidas de agrupamiento que, a su vez, impliquen algún tipo de sesgo sobre dicho agrupamiento.
Las RNA han sido aplicadas a un número en aumento de problemas en la vida real y de considerable complejidad, donde su mayor ventaja es en la solución de problemas que son bastante complejos para la tecnología actual, tratándose de problemas que no tienen una solución algorítmica o cuya solución algorítmica es demasiado compleja para ser encontrada.
En general, debido a que son parecidas a las del cerebro humano, las RNA son bien nombradas ya que son buenas para resolver problemas que el humano puede resolver pero las computadoras no. Estos problemas incluyen el reconocimiento de patrones y la predicción del tiempo. De cualquier forma, el humano tiene capacidad para el reconocimiento de patrones, pero la capacidad de las redes neuronales no se ve afectada por la fatiga, condiciones de trabajo, estado emocional, y compensaciones.
Se conocen cinco aplicaciones tecnológicas aplicadas:
1. Reconocimiento de textos manuscritos
2. Reconocimiento del habla
3. Simulación de centrales de producción de energía
4. Detección de explosivos
5. Identificación de blancos de radares.

Aplicaciones de las Redes Neuronales
Las redes neuronales son una tecnología computacional emergente que puede utilizarse en un gran número y variedad de aplicaciones, tanto como comerciales como militares.
Hay muchos tipos diferentes de redes neuronales, cada uno de los cuales tiene una aplicación particular más apropiada. Separándolas según las distintas disciplinas algunos ejemplos de sus aplicaciones son:
Biología:
Aprender más acerca del cerebro y otros sistemas.
Obtención de modelos de la retina.
Empresa
Reconocimiento de caracteres escritos.
Identificación de candidatos para posiciones específicas.
Optimización de plazas y horarios en líneas de vuelo.
Explotación de bases de datos.
Evaluación de probabilidad de formaciones geológicas y petrolíferas.
Síntesis de voz desde texto.
Medio Ambiente
Analizar tendencias y patrones.
Previsión del tiempo.
Finanzas
Previsión de la evolución de los precios.
Valoración del riesgo de los créditos.
Identificación de falsificaciones.
Interpretación de firmas.
Manufacturación
Robots automatizados y sistemas de control (visión artificial y sensores de presión, temperatura, gas, etc.)
Control de producción en líneas de proceso.
Inspección de calidad.
Filtrado de señales.
Medicina
Analizadores del habla para la ayuda de audición de sordos profundos.
Diagnóstico y tratamiento a partir de síntomas y/o de datos analíticos (encefalograma, etc.).
Monitorización en cirugía.
Predicción de reacciones adversas a los medicamentos.
Lectoras de Rayos X.
Entendimiento de causa de ataques epilépticos.
Militares
Clasificación de las señales de radar.
Creación de armas inteligentes.
Optimización del uso de recursos escasos.