La informática es algo que evoluciona constantemente y por ello cada día hecha mano de todo lo que pueda ayudar en su desarrollo.Hoy tratare de explicaros como las Redes de Neuronas del cuerpo humano han contribuido en el campo de la informática.
El estudio de las neuronas del ser humano y su comportamiento han sido de utilidad para la creación de programas.Se trata de simular el comportamiento de estas neuronas para desarrollar software.
Las Redes de Neuronas Artificiales tratan de emular el Sistema Nervioso Central (SNC) del ser humano tanto en su estructura como en su funcionamiento.Se consigue así desarrollar programas que permitan realizar tareas bastante complejas:
* Reconocimiento de imagenes
* Previsión de la evolución de los precios.
* Reconocimiento de voz y otros patrones
* Clasificación de imagenes
* Algoritmos genéticos para crear controladores para robots.
* Optimización del flujo del tránsito controlando convenientemente la temporización de los semáforos.
* Optimización de plazas y horarios en líneas de vuelo.
Hace unos años trabaje con estas redes al estudiar en la Universidad los Sistemas Conexionistas así que os explicare como simulamos estas redes en nuestros computadores.
El SNC es considerado como la estructura única mas compleja del universo.Su objetivo es recibir información (Estimulo), codificarla y trasmitirla a un destino donde se producirá un trabajo (Respuesta).El ejemplo mas sencillo es si acercas tu mano a la llama de una cerilla.Recibes un estimulo, este es codificado y trasmitido como Respuesta a tu mano para que la apartes del fuego.
Una Red de Neuronas Artificial RNA se compone de una serie de elementos llamados Elemetos de Procesado (PE), habra uno por cada dato del exterior que usemos en nuestro programa.Entre los PE hay conexiones mediante los cuales se intercambian información.
Estos PE se caracterizan por:
* Entradas: Son la representación numérica de los datos de entrada.
* Pesos: Son una manera de ponderar las entradas.El valor de estos pesos indica la importancia que, en ese momento,se da a cada entrada de la red.La modificación dinámica de estos pesos es lo que marca el aprendizaje de la red.
Ejemplo:
Cita :Supongamos que desarrollamos un programa para la predicción de lluvias, que reciba como entradas un valor representando la hora del día, otro representando el mes y otro representando las lluvias del día anterior.Usaremos por tanto una red con 3 PE uno para cada dato.Esta red antes de ser usada tendrá que ser entrenada para que aprenda que datos son mas importantes.Al final de su proceso de aprendizaje la red debería considerar muy poco importante la entrada "hora del día" (tendrá un peso muy bajo), y muy importante las entradas "mes" y "lluvias del día anterior" (pesos con valores altos).
Percetron con 2 entradas(X1,X2) y sus dos pesos (W1,W2) y con una salida Y
El aprendizaje consistirá en conseguir que la red vaya reconociendo las entradas que son importantes en el problema que tiene que resolver y las que no son necesarias.Existen muchos tipos de aprendizaje para la red:por corrección de error,por refuerzo,competitivo....
Existen muchos tipos de redes para usar en nuestros programas:Adaline, Perceptron, Perceptron multicapa, Redes de Base Radial, Redes Auto-organizativas etc.Cada una apropiada para resolver un tipo de problema.Y cada red puede configurarse como mas nos convenga usando mas o menos PE,capas etc.
Trato de que os deis cuenta de que trabajar con estos sistemas es algo complejo pero si los manejas bien puedes crear programas realmente útiles.
Cuando yo estuve estudiando estas redes, cree 2 programas.Uno que se encargaba de detectar bordes en las imagenes.Tu le pasabas una imagen y el programa se encargaba de detectar todos los bordes de la imagen.
El otro programa servía para reducir la gama de colores en una imagen.Tu le pasabas una fotografía e indicabas en cuantos colores querías dejar la imagen y el se encargaba de reducir y modificar los colores da la fotografía.
Fuentes:
Si os interesa este tema podéis encontrar mas información en: