Instalar la librería FANN para redes neuronales y php bind
Lun, 01/14/2008 - 15:33 — omercade
Para un proyecto web importante, hemos necesitado el uso de redes neuronales para detectar patrones.
Qué és una red neuronal?
(fuente wikipedia)
Una de las misiones en una red neuronal consiste en simular 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.
Perceptrón con 2 entradas
Perceptrón con 2 entradas
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 la sigmoide (para obtener valores en el intervalo [0,1]) y la tangente hiperbólica (para obtener valores en el intervalo [-1,1]).
Las redes neuronales artificiales (RNA) tienen muchas ventajas debido a que están basadas en el funcionamiento de un cerebro.
* Aprendizaje: Las RNA tienen la habilidad de aprender mediante una etapa que se llama etapa de aprendizaje. Esta consiste en proporcionar a la RNA datos como entrada a su vez que se le indica cuál es la salida (respuesta) esperada.
* Auto organización: Una RNA crea su propia representación de la información en su interior, descargando al usuario de esto.
* Tolerancia a fallos: Debido a que una RNA almacena la información de forma redundante, ésta puede seguir respondiendo aceptablemente aún si se daña parcialmente.
* Flexibilidad: Una RNA puede manejar cambios no importantes en la información de entrada, como señales con ruido u otros cambios en la entrada (ej. si la información de entrada es la imagen de un objeto, la respuesta correspondiente no sufre cambios si la imagen cambia un poco su brillo o el objeto cambia ligeramente)
* Tiempo real: La estructura de una RNA es paralela, por lo cuál si esto es implementado con computadoras o en dispositivos electrónicos especiales, se pueden obtener respuestas en tiempo real.
Cómo usar la teoria?
Una opción opensource muy rápida y valida es FANN aunque su instalación no es trivial.
Para instalar la librería fann para redes neuronales en un servidor ubuntu hay que seguir los siguientes pasos:
Asegurarnos que nuestro ubuntu puede compilar en c:
$ apt-get install make
Instalar la libreria fann
$ apt-get install libfann1 libfann1-dev
Instalar la librería de bind con php
$ pear install http://pecl.php.net/get/fann
Listo para usar.
El reto siguiente es modelar los inputs, dimensionar correctamente la red neuronal y preparar un buen banco de datos para entrenarla. Si necesitáis asesoramiento sobre cómo hacerlo no dudéis en contactar con nosotros.
Responder
Omitsis S.L. c/Carme Karr 16 1er 1a 08034 (Barcelona) - 622302299
