Archive for the ‘ANN’ Category

Vía Javahispano, me enteré la existencia de ésta librería Encog, programada en Java. La misma permite trabajar con redes neuronales Feedforward, Hopfield y mapas auto-organizados, el entrenamiento de las mismas se puede realizar mediante backpropagation, alineamiento simulado y optimizaciones genéticas. Además posee un bot (araña) multihilo para explorar HTTP, pudiendo almacenar los resultados en memoria o en base de datos, adicionalmente posee un parser HTML y manejo de cookies.

El link del proyecto (se distribuye bajo licencia LGPL)

Origen

Los primeros conceptos sobre redes neuronales fueron proporcionados en el año de 1943 por Walter Pitts y Warren McCulloch. La investigación publicada sobre las redes neuronales sirvió de fundamentos para otras investigaciones realizadas en años próximos, simularon la red neuronal con circuitos eléctricos.

Red neuronal Artificial

Las redes neuronales artificiales son inspiradas en las redes neuronales biológicas que pueden ser implementadas en dispositivos electrónicos o computadoras, permitiendo el procesamiento de gran cantidad de información, capacidades de aprendizaje y entrenamiento con información proporcionada o almacenada, utilizadas en diversas áreas para el procesamiento paralelo, tolerancia a falos, etc.

Estructura de la Red Neuronal (Artificial – Biológica)

Las redes neuronales artificiales tienen la siguiente estructura Figura 1:

Las redes neuronales están compuertas por nodos conectadas por medio de conexiones dirigidas, las conexiones sirven para propagar las activaciones:

  • Las entradas son impulsos de otras neuronas.
  • Los pesos son intensidades que conectan dos neuronas
  • Función de activación es el valor que la neurona recibe para activarse

Tipos de redes neuronales

Perceptrón simple.- El Perceptrón simple desarrollada en 1957 por el psicólogo Frank Rosenblatt. Este tipo de red intentaba asemejarse a las redes biológicas aunque el perceptrón simple es relativamente sencillo y no posee muchas aplicaciones su desarrollo fue fundamental para que se desarrollen con la utilización del perceptrón aplicaciones en los sistemas informáticos. Rosenblatt demostró con la utilización del perceptrón se podían clasificar patrones correctamente. La regla de adaptación del perceptrón permite ajustar los pesos de la neurona permitiendo obtener distinción de los datos.

Estructura de la red

La estructura del perceptrón simple Figura (2), la neurona de salida del Perceptrón es la suma de las entradas, resta el umbral y pasa el resultado a una función de transferencia de tipo escalón.

El perceptron pertenece a las redes de aprendizaje supervisado requiere conocer los datos de entrada.

Perceptrón multicapa.- Un Perceptrón multicapa se caracteriza porque permite la entrada de datos hacia delante, esta formada por varias capas de neuronas entre la entrada y la salida, es mas complejo que el perceptrón simple porque posee muchas capas y toma de decisiones entre ellas.

Estructura de la red

La estructura del perceptrón multicapa Figura (3), posee muchas neuronas de entrda y salida:

Aplicaciones redes neuronales

  • Permite el procesamiento de imágenes
  • Reconocimiento de patrones
  • Mejores interfaces usuarios – computador
  • Predicción
  • Filtrado de señales
  • Análisis económicos, financiera de las empresas
  • Cambios en la tendencia del mercado

Inconvenientes

  • El aprendizaje de grandes cantidades de información es complejo.
  • El entrenamiento que esta sometido una red neuronal es elevado ocupando altos requisitos de memoria computacional.
  • Para un óptimo aprendizaje necesita grandes volúmenes de información proporcionada por un programador.

Por: Jorge Fierro

Bibliografía:

http://www.monografias.com/trabajos/redesneuro/redesneuro.shtml

http://www.redes-neuronales.netfirms.com/tutorial-redes-neuronales/tutorial-redes.htm

http://www.electronica.com.mx/neural/

http://www.answermath.com/redes_neuronales_o_neurales.htm

http://www.fortunecity.com/skyscraper/chaos/279/articulos/redesneuronales.htm

ARTIFICIAL VISION

¿Qué es la visión por computadora y por qué deberíamos estar interesados en estudiarla?

Tal vez sea más fácil contestar a estas dos preguntas si son resueltas en orden inverso.

Hay varias razones por las que debemos estar interesados en la visión computacional o visión artificial, pero los dos siguientes aspectos nos permitirán observar las distintas direcciones en las cuales se puede ver el tema:

a) Todas las formas de vida inteligente poseen la capacidad de obrar recíprocamente y de manipular su ambiente de una manera coherente y estable. Esta interacción es facilitada por la continua intervención inteligente entre la percepción y el control del movimiento (es decir acción); la percepción visual es de fundamental importancia para la vida inteligente.

b) Más fabricantes están preocupados por la integridad cosmética de sus productos; los clientes comparan absolutamente a menudo la calidad del aspecto con calidad funcional. Así pues, para asegurar la acertada comercialización a largo plazo de un artículo, es altamente deseable comparar su aspecto visual antes de ser empaquetado y enviado. Asimismo, es deseable que el proceso de la inspección esté automatizado y efectuado sin la intervención humana.

Estas dos motivaciones para el estudio de la percepción caracterizan dos posibles razones del interés para el procesamiento, análisis, e interpretación de imágenes visuales: desde la filosófica y quizás esotérica inmediata y pragmática. Y todo el argumento entre estas dos razones presentes, una de estas con una amplia variedad de espectros en el interés comercial, dificultad y, por supuesto, del éxito.

Seguir leyendo »

Hola a todos, aquí estoy publicando la continuación de “Elementos básicos de una Red Neuronal Artificial”. En este trabajo abarca lo que es: Función de Propagación, Función de Activación y la Función de Salida, en el siguiente post se publicará La función de Error y la tasa de aprendizaje.

FUNCIÓN DE PROPAGACIÓN

Esta regla permite obtener, a partir de las entradas y los pesos el valor del potencial postsináptico hi de la neurona:

nueva-imagen.png (1)

La función más habitual es la suma ponderada de todas las entradas. Podemos agrupar las entradas y pesos en dos vectores (X1;X2; ::: Xn) y (W1j ;W2j ; :::Wnj) podemos calcular esta suma realizando el producto escalar sobre estos dos vectores.

nueva-imagen-1.png (2)

La función de propagación puede ser más compleja que simplemente una suma de productos. Las entradas y los pesos pueden ser combinados de diferentes maneras antes de pasarse el valor a la función de activación. Por ejemplo podemos usar como función de propagación, el mínimo, máximo, la mayoría, producto, o diversos algoritmos de normalización. El algoritmo específico para la propagación de las entradas neuronales está determinado por la elección de la arquitectura.

FUNCIÓN DE ACTIVACIÓN O TRANSFERENCIA

El resultado de la función de propagación, en la mayoría de los casos es una suma ponderada, es transformada en la salida real de la neurona mediante un proceso algorítmico conocido como función de activación.

nueva-imagen-2.png (3)

En la función de activación el valor de la salida de combinación puede ser comparada con algún valor umbral para determinar la salida de la neurona.

Si la suma es mayor que el valor umbral, neurona generará una señal. Si la suma es menor que el valor umbral, ninguna señal será generada.

Normalmente el valor umbral, o valor de la función de transferencia, es normalmente no lineal. El uso de funciones lineales es limitado ya que el valor de la salida es proporcional al de la entrada, de hecho este fue uno de los problemas en los primeros modelos de redes neuronales como fue identificado por Minsky y Papert en Perceptrons. La función de activación pudiera ser algo tan simple como dependiente sobre si el resultado de la función de combinación es positivo o negativo.

Ejemplos de Funciones de Activación

Ejemplos de Funciones de Activación

Fuente: Introducción a las redes neuronales

De las funciones presentadas en la figura 4 destacan las funciones sigmoidales. Desde el punto de vista matemático, la utilidad de estas funciones es que ella y sus derivadas son continuas. Estas funciones funcionan bastante bien y son normalmente las elegidas.Antes de aplicar la función de activación, se puede añadir cierto ruido a las entradas. La fuente y la cantidad de este ruido están determinadas por el modo de entrenamiento de una red particular. Este ruido normalmente es conocido como temperatura de la neurona. De hecho, al añadir diferentes niveles de ruido al resultado de la combinación lleva a crearse un modelo más parecido al cerebro. El uso del ruido por temperatura está aún en fase de investigación y no es aplicado habitualmente en las aplicaciones.

ESCALAMIENTO Y LIMITACIÓN El valor de salida de la función de activación puede ser procesado de manera adicional mediante un escalamiento y limitación. El escalamiento simplemente multiplica el valor de la función de transferencia por un factor de escala y después se le suma un desplazamiento.Normalmente este tipo de escalamiento y limitación es usado principalmente en topologías usadas para verificar modelos neuronales biológicos.

Función de salida (Competitividad) Cada elemento de procesamiento tiene permitido una única salida Yi(t)que puede estar asociada con un número elevado de otras                                     neuronas. Normalmente, la salida es directamente equivalente al valor resultante de la función de activación.

nueva-imagen-4.png (4)

Algunas topologías de redes neuronales, sin embargo, modifican el valor de la función de transferencia para incorporar un factor de competitividad entre neuronas que sean vecinas. Las neuronas tienen permitidas competir entre ellas, inhibiendo a otras neuronas a menos que tengan una gran fortaleza.

Sistemas Complejos

Un sistema es considerado “complejo” cuando está compuesto de un gran número de elementos los cuales interactúan entre si (Bar – Yam, 1997). La funcionalidad global del sistema se da precisamente por las interacciones, y por lo tanto uno no encontrará tal funcionalidad si uno observa sólo a unos cuantos elementos.

Los Sistemas complejos son un sistema compuesto por varias partes interconectadas o entrelazadas cuyos vínculos contienen información adicional y oculta al observador. Como resultado de las interacciones entre elementos, surgen propiedades nuevas que no pueden explicarse a partir de las propiedades de los elementos aislados. Dichas propiedades se denominan propiedades emergentes.

Los sistemas complejos permiten simular y comprender una gama amplia de fenómenos, que van desde los fenómenos biológicos a los sociales.

Se caracterizan fundamentalmente porque su comportamiento es imprevisible. Sin embargo, complejidad no es sinónimo de complicación: este vocablo hace referencia a algo, enredado, de difícil comprensión. En primer término, está compuesto por una gran cantidad de elementos relativamente idénticos. Por ejemplo, el número de células en un organismo, o la cantidad de personas en una sociedad. En segundo lugar, la interacción entre sus elementos es local y origina un comportamiento emergente que no puede explicarse a partir de dichos elementos tomados aisladamente.

 

Comportamiento difícilmente predecible: Debido a la enorme complejidad de estos sistemas la propiedad fundamental que los caracteriza es que poseen un comportamiento impredecible. Sólo somos capaces de prever su evolución futura hasta ciertos límites, siempre suponiendo un margen de error muy creciente con el tiempo. Para realizar predicciones más o menos precisas de un sistema complejo frecuentemente se han de usar métodos matemáticos como la estadistica, la probabilidad o las aproximaciones númericas como los números aleatorios.

Un ejemplo de sistema complejo: Es el Tráfico de carros en las carreteras.

El tráfico se compone de entidades discretas que se desplazan por cierta estructura y el modelo pretende predecir el tipo de flujo y la forma en la que se producen los atascos.

GRAFICO DEL TRÁFICO DE CARROS

Figura: 1 (Tráfico de Carros)

Topologías de Redes Neuronales

 

En este apartado nos enfocaremos sobre las topologías de redes. En cuanto a esto, la principal distinción que podemos hacer es entre:

 

1. Redes Feed-forward

 

Si los datos fluyen desde la entrada a las unidades de salida es estrictamente Feed-forward. Los datos pueden extenderse sobre múltiples (capas) unidades, pero las conexiones no Feed-back están presentes, esto significa, extender las conexiones desde las unidades de la salida a las unidades de la entrada en la misma capa o capas anteriores.

1. Red Feed-forward

 

Clásicos ejemplos de redes Feed-forward son:

 

Seguir leyendo »

ARQUITECTURAS NEURONALES


Se puede estructurar de diferentes formas:
Según el número de capas

Redes neuronales monocapas, Se corresponde con la red neuronal más sencilla ya que se tiene una capa de neuronas que proyectan las entradas a una capa de neuronas de salida donde se realizan diferentes cálculos.

Redes neuronales multicapa, Es una generalización de la anterior existiendo un conjunto de capas intermedias entre la entrada y la salida (capas ocultas). Este tipo de red puede estar total o parcialmente conectada.

Según el tipo de conexiones
Redes neuronales no recurrentes. En esta red la propagación de las señales se produce en un sentido solamente, no existiendo la posibilidad de realimentaciones. Lógicamente estas estructuras no tienen memoria.

Redes neuronales recurrentes.
Esta red viene caracterizada por la existencia de lazos de realimentación. Estos lazos pueden ser entre neuronas de diferentes capas, neuronas de la misma capa o, más sencillamente, entre una misma neurona. Esta estructura estudia principalmente la dinámica de sistemas no lineales.

Según el grado de conexión

Redes neuronales totalmente conectadas. En este caso todas las neuronas de una capa se encuentran conectadas con las de la capa siguiente (redes no recurrentes) o con las de la anterior (redes recurrentes).

Redes parcialmente conectadas. En este caso no se da la conexión total entre neuronas de diferentes capas.
Estas estructuras neuronales se podrían conectar entre sí para dar lugar a estructuras mayores: estamos en el nivel de la mesoestructura. Esta conexión se puede llevar a cabo de diferentes formas siendo las más usuales las estructuras en paralelo y jerárquicas. En la primera estructura se plantea un “consenso” entre las diferentes redes para obtener la salida mientras que en la estructura jerárquica existen redes subordinadas a otras que actúan como elementos centrales en la salida final de la red.[1]

ESTRUCTURA Y FUNCIONAMIENTO

dibujo.jpg

   s=f(Σ(wi*i))

Fig.2 Estructura de una red neuronal

[Figura modificada de [http://www.gamarod.com.ar/articulos/las_redes_neuronales.asp] [2]]

La estructura de una neurona artificial es la siguiente:

En el esquema, 1 2 y 3 son los valores de entrada de la neurona, y w1, w2, w3 son los pesos de cada entrada. (3 en este ejemplo, pero puede ser otro número) El valor de salida de la neurona es el sumatorio de cada valor de entrada multiplicado por su peso correspondiente. La f (de función) indica que no siempre se emplea el sumatorio directamente, sino que a veces se “ajusta” el valor para que esté comprendido entre un rango determinado (por ejemplo, de 0 a 16)

Una neurona artificial tiene dos modos de funcionamiento:

Las neuronas deben ser previamente entrenadas para reconocer patrones. Esto se hace de la siguiente manera: Se coloca como valores de entrada de la neurona el patrón a aprender (p.ej. usando la neurona del ejemplo, el patrón 1 1 0) y después se incrementan los pesos de las entradas “utilizadas”(en este caso la 1 y la 2, que son las que están a 1) y se decrementan los de las no utilizadas. Los valores de los pesos oscilan generalmente entre -1 y 1, aunque estos valores pueden ser otros. [2]

La velocidad a la que se ajustan esos pesos varía según el número de ejemplos con los que se vaya a entrenar a la red. Cuantos más ejemplos se le vayan a poner a la red, con mayor lentitud debe variar la tasa de aprendizaje. Puede parecer que cuanto más rápido se ajusten los pesos de las neuronas más rápido va a aprender a reconocer un determinado patrón, pero esto, que puede ser cierto a veces para una neurona, generalmente no lo es para una red neuronal con muchas neuronas. Además, incluso en el caso de una neurona sola, siempre es mejor poner muchos ejemplos con una tasa de aprendizaje lenta que no poner unos pocos con una tasa de aprendizaje rápida.

Una vez entrenada la neurona, se utiliza para reconocer ese patrón entre otros. Ahora basta con presentar un patrón a la neurona, que devolverá un valor dependiendo del patrón. Entonces, basta con interpretar el resultado; la neurona habrá reconocido el patrón cuando produzca una salida mayor que una determinada cantidad, y no lo habrá reconocido cuando la salida sea menor que esa cantidad. [2]

REFERENCIAS:

[1] SORIA Emilio, BLANCO Antonio, “Redes Neuronales Artificiales”, [Consultada: 06/07/2007], Disponible en Internet

http://www.acta.es/articulos_mf/19023.PDF

[2] BUDAVARI Diego, “Las redes neuronales”, [Consultada: 06/13/2007], Disponible en Internet.

http://www.gamarod.com.ar/articulos/las_redes_neuronales.asp

En los últimos años, el desarrollo de nuevas tecnologías informáticas para sistemas de seguridad ha experimentado un gran avance. Entre estos, se destacan los sistemas biométricos para el reconocimiento facial, que se perfilan como los más prometedores.

Ya hace algún tiempo Google hizo un sorprendente anuncio, está desarrollando una tecnología que permitirá determinar el sexo de las personas a partir de fotografías utilizando diversos patrones de reconocimiento. Esto supone un primer paso para la búsqueda de información dentro de las imágenes basadas en sistemas inteligentes capaces de determinar qué es lo que las fotos contienen.

dibujo4.jpgEl objetivo del buscador será devolver imágenes no en función del texto que les rodea (como se viene haciendo hasta ahora), sino a partir del contenido de la imagen.

Esta es la siguiente evolución de las herramientas para la indexación de información, compuestas por sistemas expertos que serán entrenados para incrementar la habilidad de determinar, interpretar y organizar el contenido de los documentos (archivos de texto y páginas web, imágenes, vídeos, audio, etc.), superando tecnologías basadas en los tags (como Technorati o del.icio.us) o en los enlaces (Google PageRank).

Google espera robustecer su servicio y software de gestión para fotografías a través del popular Picasa con la adquisición de Neven Vision, una compañía desarrolladora de software para la extracción de información sobre imágenes. El acuerdo fue anunciado por Adrian Graham, responsable de Picasa, en un blog oficial de Google: “Podría ser tan simple como detectar cuando una foto contiene una persona, o, en un futuro, tan complejo como reconocer gente, sitios y objetos”, asegura Graham.

La idea es incorporar estas tecnologías en la localización de imágenes del buscador para mejorar y facilitar el modo en que trabajamos con ellos. El mismo que tiene por objetivo detectar lo que es o no una foto, si contiene personas, reconocer gente, lugares y objetos.

Entendamos que no es fácil buscar a través de las fotos personales, y es ciertamente mucho más duro buscarlo por la web. A menos que nos tomemos el tiempo para insertar tags y organizar la fotos pero esto resulta contraproducente en un mundo donde el tiempo vale oro.

Seguir leyendo »

 

Para hablar de redes neuronales artificiales primero se debe entender el funcionamiento del cerebro humano desde las partes que conforman una neurona hasta el procedimeinto que se cumple para la activacion de una de ellas ya que en base a este proceso se comenzaron a desarrollar las investigaciones sobre RNA, esta area ha tenido una significativa historia que comienza en 1943 hasta la actualidad.

En el presente post comenzamos con una introduccion del tema, pasando a un concepto concreto de redes neuronales artificiales, y una importante historia que ha sido resumida sobre las investigaciones de este campo.

INTRODUCCIÓN

El cerebro humano continuamente recibe señales de entrada de muchas fuentes y las procesa a manera de crear una apropiada respuesta de salida. Nuestros cerebros cuentan con millones de neuronas que se interconectan para elaborar “Redes Neuronales”. Estas redes ejecutan los millones de instrucciones necesarias para mantener una vida normal.

Las neuronas, al igual que las demás células del cuerpo, funcionan a través de impulsos eléctricos y reacciones químicas. Los impulsos eléctricos que utiliza una neurona para intercambiar información con las demás, viajan por el axón que hace contacto con las dendritas de la neurona vecina mediante las sinápsis. La intensidad de la corriente transmitida depende de la eficiencia de la transmisión sináptica. Una neurona en especial transmitirá un impulso eléctrico por su axón si suficientes señales de las neuronas vecinas transmiten a través de sus dendritas en un tiempo corto. La señal que se transmite a la neurona podrá ser además ya sea inhibitoria o excitatoria. La neurona dispara, esto es, manda el impulso por su axón, si la excitación excede su inhibición por un valor crítico, el umbral de la neurona.

Todo el sistema descrito anteriormente es el proceso que realiza el cerebro, el funcionamiento complejo es el que las redes neuronales tratan de imitar, mediante la integración y utilización de modelos de algoritmos matemáticos que simulan el funcionamiento de una neurona hasta la unión de de todas estas en una sola red neuronal artificial.

Los avances que esta rama ha generado son diversos y en diferentes áreas, desde la aplicación en la biología, empresas, manufacturación, medicina, hasta en el campo militar para la creación de armas inteligentes

CONCEPTO DE RED NEURONAL ARTIFICIAL

Las RNA están compuestas de un gran número elementos de procesamiento altamente interconectados (Neuronas) trabajando al mismo tiempo para la solución de problemas específicos. Las RNA, tal como las personas, aprenden de la experiencia.

En cualquier caso, se trata de una nueva forma de computación que es capaz de manejar las imprecisiones e incertidumbres que aparecen cuando se trata de resolver problemas relacionados con el mundo real (reconocimiento de formas, toma de decisiones, etc.), ofreciendo soluciones robustas y de fácil implementación.

Seguir leyendo »

Cuando surge una nueva herramienta, metodología, técnica o disciplina, generalmente sus vendedores o promotores nos suelen venderla como la solución o poción que resolverá todos nuestros problemas.
En lo que respecta a las Redes Neuronales Artificiales, RNA, su desarrollo se vio comprometido o retrasado en los años 70s luego de la famosa publicación de Minsky y Papert acerca de las limitaciones de los modelos propuestos hasta la fecha (únicamente resuelven problemas linealmente separables y la mayoría de situaciones reales no pertenecen a este grupo), sin embargo, gracias al trabajo de Rumelhart, McClelland, Kohonen, Hopfield, entre otros, quienes propusieron nuevos modelos -casi una década después-, el interés y aplicación por este tipo de sistemas se repuntó.
Seguir leyendo »