viernes, 21 de mayo de 2010

Las redes de neuronas artificiales (denominadas habitualmente como RNA o en inglés como: "ANN"1 ) son unparadigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nerviosode los animales. Se trata de un sistema de interconexión de neuronas en una red que colabora para producir un estímulo de salida. En inteligencia artificial es frecuente referirse a ellas como redes de neuronas o redes neuronales.

Funcionamiento

Las redes neuronales consisten en una simulación de las propiedades observadas en los sistemas neuronales biológicos a través de modelos matemáticos recreados mediante mecanismos artificiales (como un circuito integrado, un ordenador o un conjunto de válvulas). El objetivo es conseguir que las máquinas den respuestas similares a las que es capaz de dar el cerebro que se caracterizan por su generalización y su robustez.


Una red neuronal se compone de unidades llamadas neuronas. Cada neurona recibe una serie de entradas a través de interconexiones y emite una salida. Esta salida viene dada por tres funciones:

  1. Una función de propagación (también conocida como función de excitación), que por lo general consiste en el sumatorio de cada entrada multiplicada por el peso de su interconexión (valor neto). Si el peso es positivo, la conexión se denomina excitatoria; si es negativo, se denomina inhibitoria.
  2. Una función de activación, que modifica a la anterior. Puede no existir, siendo en este caso la salida la misma función de propagación.
  3. Una función de transferencia, que se aplica al valor devuelto por la función de activación. Se utiliza para acotar la salida de la neurona y generalmente viene dada por la interpretación que queramos darle a dichas salidas. Algunas de las más utilizadas son lafunción sigmoidea (para obtener valores en el intervalo [0,1]) y la tangente hiperbólica (para obtener valores en el intervalo [-1,1]).



Aprendizaje

Una segunda clasificación que se suele hacer es en función del tipo de aprendizaje de que es capaz (si necesita o no un conjunto de entrenamiento supervisado). Para cada tipo de aprendizaje encontramos varios modelos propuestos por diferentes autores:

Tipo de entrada

Finalmente también se pueden clasificar las RNAs según sean capaces de procesar información de distinto tipo en:

  • Redes analógicas: procesan datos de entrada con valores continuos y, habitualmente, acotados. Ejemplos de este tipo de redes son: Hopfield, Kohonen y las redes de aprendizaje competitivo.
  • Redes discretas: procesan datos de entrada de naturaleza discreta; habitualmente valores lógicos booleanos. Ejemplos de este segundo tipo de redes son: las máquinas de Boltzmanny Cauchy, y la red discreta de Hopfield.



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 artificial para decidir su comportamiento y un algoritmo genético para el aprendizaje. Es muy fácil probarlo y nada para 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:
    • Cómo lograr la caracterización de las proteínas de manera no sesgada
    • 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 al 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