Neural network simulators are software applications that are used to simulate the behavior of artificial or biological neural networks. They focus on one or a limited number of specific types of neural networks. They are typically stand-alone and not intended to produce general neural networks that can be integrated in other software. Simulators usually have some form of built-in visualization to monitor the training process. Some simulators also visualize the physical structure of the neural network.
Historically, the most common type of neural network software was intended for researching neural network structures and algorithms. The primary purpose of this type of software is to, through simulation, gain a better understanding of the behavior and properties of neural networks. Today in the study of artificial neural networks, simulators have largely been replaced by more general component based development environments as research platforms.
Commonly used artificial neural network simulators include the Stuttgart Neural Network Simulator (SNNS), Emergent, JavaNNS and Neural Lab.
I'm going to talk about de Java Neutral Simulator (JavaNNS)
This neural network simulator originally developed at the Wilhelm-Schickard-Institute for Computer Science (WSI) in Tübingen, Germany. It`s development in java, gives a nice user interface, allowing the user creating a interesting neural networks.
JavaNNS is written around a simulation kernel to which user written activation functions, learning procedures and output functions can be added. It has support for arbitrary network topologies and the standard release contains support for a number of standard neural network architectures and training algorithms.
read more about this simulator, includes installation, and user manual, among other things
http://oosem.com/study/manual/JavaNNS-manual.html
if you wanna download this simulator, visite this site http://www.ra.cs.uni-tuebingen.de/downloads/JavaNNS/
JavaNNS (Java Neural Simulator)
miércoles, 25 de marzo de 2009
Publicado por Bernal en 22:17 0 comentarios
Etiquetas: Inteligencia Artificial
It's the user experience stupid...??
En el entorno actual los productos de software van en crecimiento, y estos cada vez mas están dirigidos a un público cada vez más amplio, a usuarios cada vez menos expertos en el manejo de sistemas informáticos; lo cual hace que los productos que se desarrollen deben ser tan buenos funcionalmente como en experiencia de usuario, y tal vez esto sea uno de las grandes deficiencias que tienen los sistemas informáticos, especialmente el área de dispositivos móviles, ya que un producto muy bueno funcionalmente y con muchas características realmente sorprendentes las cuales pueden afectar la usabilidad del producto, donde un usuario normal o consumidor como se referencia en la lectura tal vez al ver cosas tan complejas en su dispositivo afecte su disfrute del producto. Por eso se dice que productos móviles con muchas características, puede ser muy bueno, pero dependiendo al tipo de usuario que vaya dirigido, además que desarrollar una buena interfaz que respalden esas características hacen que el trabajo sea muy difícil, y también que muchas características pueden que afecten el hardware, ya sea a nivel batería espacio, etc. Por lo que la venta del producto sería a precios muy altos, donde solo pocos podrían tener el producto. Y entiéndase que experiencia de usuario no es solo a nivel de software sino también de hardware, es decir por ejemplo en un dispositivo móvil el diseño de dicho dispositivo juega un papel importante, donde se debe de tomar en cuenta el peso, si va a usar teclado o va a ser touch screen (es lo mejor si se maneja como el iphone, nada de lápices para seleccionar), tamaño, etc. Para así darle no solo comodidad al usuario a la hora de interactuar con el sistema, si no también darle comodidad física.
En resumen la experiencia de usuario en cualquier sistemas de software es de vital importancia, ya que si un usuario se siente bien utilizando el sistema, y sentirse bien es poder utilizar las funciones de una manera fácil, sin tener que leerse ningún manual para utilizar X función, esto hace que la experiencia de usuario sea grandiosa otorgándole una satisfacción al usuario y así tener resultado exitoso de la creación del sistema.
Publicado por Bernal en 22:15 0 comentarios
Etiquetas: GUI Design
Breve comentario sobre las Redes Neuronales
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 o una computadora). 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, su robustez y su capacidad de aprender cosas nuevas.
Hay muchas buenas razones para el uso de redes neuronales, ya que los beneficios obtenidos pueden ser de gran beneficio para el avance tecnologico y es por eso que cada avance en este campo incrementara su popularidad.
Las redes neuronales son excelentes como clasificadores/reconocedores de patrones, y pueden ser usadas donde las técnicas tradicionales no funcionan. Las redes neuronales pueden manejar excepciones y entradas de datos anormales, muy importante para sistemas que manejan un amplio rango de datos (sistemas de radar y sonar, etc). Muchas redes neuronales son pueden proveer pistas de como trabaja el cerebro según progresen. Avances en la neurociencia también ayudarán al avance en las redes neuronales hasta el punto en que sean capaces de clasificar objetos con la precisión de un humano y la velocidad de una computadora, tambien su capacidad para ser tolerante a los fallos, es una ventaja increible la cual hace que determinados productos sean mucho mas efectivos si se utilizara alguna otra tecnica.
El futuro es brillante, el presente por otro lado queda debiendo.
Hay unas cuantas desventajas en las redes neuronales; La mayoría de ellas, de todas maneras, padecen nuestra falta de hardware. La capacidad de las redes neuronales radica en su habilidad de procesar información en paralelo (esto es, procesar múltiples pedazos de datos simultáneamente), y programar eso es relativamente complejo. Como todo en este día y época, el tiempo es esencial, lo que a menudo deja las redes neuronales fuera de las soluciones viables a un problema, pero con posibilidades que ese problema se solucione en un mañana.
Otros problemas con las redes neuronales son la falta de reglas definitorias que ayuden a construir una red para un problema dado; hay muchos factores a tomar en cuenta: el algoritmo de aprendizaje, la arquitectura, el número de neuronas por capa, el número de capas, la representación de los datos y mucho más. De nuevo, con el tiempo siendo tan importante, las compañías no pueden permitirse invertir tiempo de desarrollo para resolver los problemas eficientemente, pero pueden otorgar algo de tiempo a su desarrollo y asi dia con dia ir aportando mas conocimiento acerca de este tema tan complejo, pero tan beneficioso para el avance tecno-cientifico.
Publicado por Bernal en 22:15 0 comentarios
Etiquetas: Inteligencia Artificial
Lenguajes de Programación de Agentes
Un lenguaje de agentes es un sistema que permite programar sistemas de computación en términos de algunos conceptos desarrollados por la teoría de agente. Se espera que aunque sea haya una estructura que represente a un agente, aunque se debería esperar que dicho lenguaje tuviera más conceptos de la teoría de agentes como creencias, metas, objetivos, planificación etc.
La programación de sistemas multi-agentes ha sido generalmente soportada por lenguajes orientados a objetos o lenguajes lógicos. Ambos paradigmas muestran poseer características para soportar parcialmente el desarrollo de agentes. Sin embargo, si ambos paradigmas son integrados, una solución a la programación de agentes aparece en forma evidente.
Existen gran cantidad de lenguajes o más bien plataformas para desarrollar agentes; a continuación explicare algunos de ellos.
Agent0 -- AOP (Agent Oriented Programming)
Este fue uno de los primeros lenguajes aplicados al desarrollo de agentes; el cual sigue un ciclo de control simple cuando se ejecuta el programa en cada paso de tiempo:
- Recopilar y actualizar los mensajes del estado mental consecuentemente.
- Ejecutar los compromisos (usando sus capacidades)
--> Referencias
Para comprender el uso de la programación de esta plataforma de agentes; el siguiente link le muestra un manual de cómo y qué comandos pertenecen al Agent0:
http://www.doc.ic.ac.uk/~klc/Lectures/MASLectures/Agent0.4p.pdf
Torrance Mark and Viola Paul (1991) The AGENT0 Manual. Consultado en Marzo 2009 en ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/91/1389/CS-TR-91-1389.pdf
JavaLog
Este lenguaje integra el lenguaje orientado a objetos Java y el lenguaje lógico Prolog. Esta combinación permite que agentes sean construidos como objetos manipulando un estado mental definido a través de cláusulas lógicas que son encapsuladas en módulos lógicos.
Las características principales de este lenguaje son:
• Permite la creación y uso de objetos Java en programas Prolog, integrando los paradigmas Lógico y Orientado a Objetos.
• Pre procesa los métodos Java con Prolog embebido permitiendo el uso de variables locales en ambos paradigmas.
• Soporta la administración de conocimiento común de varias instancias de nuestro intérprete Prolog por medio de una arquitectura Blackboard.
• Permite la distribución física de intérpretes Prolog utilizando Java RMI y movilidad de módulos lógicos.
--> Referencias
Este paper da una visión y explicación más clara de lo que es propiamente JavaLog:
Zunino Alejandro, Berdún Luis, Amandi Analía (). JavaLog: un Lenguaje para la Programación de Agentes. Consultado en http://cabrillo.lsi.uned.es:8080/aepia/Uploads/13/121.pdf
Para más información sobre JavaLog, su descarga, instalación, requerimientos pueden visitar este sitio:
http://www.exa.unicen.edu.ar/isistan/javalog.htm
Descargar JavaLog: http://"> http://sourceforge.net/projects/javalog/
Java Agent DEvelopment Framework (JADE)
JADE es una plataforma de software totalmente implementada en Java; esta implementación es oficial del estándar FIPA, y soporta todos los servicios básicos de infraestructura especificados en FIPA (comunicaciones, movilidad, gestión de agentes y localización de agentes), a los que añade algunas utilidades gráficas para facilitar la administración de las plataformas y la depuración de los mensajes intercambiados por agentes en tiempo de ejecución
--> Referencias
F. Bellifemine, G. Caire, A. Poggi, G. Rimassa (2003). JADE A White Paper. Consultado en Marzo 2009 en http://jade.tilab.com/papers/2003/WhitePaperJADEEXP.pdf
Programación en JADE:
http://programacionjade.wikispaces.com/Agentes?f=print
Descargar libro Developing Multi-Agent Systems with JADE desde rapidshare:
http://rs106.rapidshare.com/files/34743745/Wiley.Developing.Multi.Agent.Systems.with.JADE.Apr.2007.rar
Descargar JADE 3.6.1: Al lado izquierdo sale un apartado de download, luego se crean un usuario y listo.
http://jade.tilab.com/index.html?Submit=Continue
Ingenias Development Kit (IDK)
Es una plataforma para el análisis, diseño e implementación de sistemas multi-agente (MAS) basada en la metodología Ingenias y creado en Java. Se basa en la especificación de meta-modelos de MAS, donde las herramientas como el editor y el modelo de generación de código se generan.
--> Referencias
(Demo Paper) (). INGENIAS Development Kit: a visual Multi-Agent System. Consultado en http://www.ifaamas.org/Proceedings/aamas08/proceedings/pdf/demo/AAMAS08_demo8.pdf
IDK Manual:
Jorge J.Gómez Sanz and Juan Pavón (2008). INGENIAS Development Kit (IDK) Manual. Consultado en Marzo 02 2009 en http://voxel.dl.sourceforge.net/sourceforge/ingenias/ingeniasmanual.pdf
Descargar IDK: http://sourceforge.net/projects/ingenias
ABLE (Agent Building and Learning Environment)
ABLE es una herramienta de IBM para la construcción de sistemas de agentes inteligentes donde todos sus elementos, incluso los agentes, se construyen por composición de AbleBeans, una extensión de los JavaBeans. Son de interés un conjunto de AbleBeans especializados que implementan sistemas de aprendizaje estadísticos (mapas auto organizativos, redes neuronales, mapas de conexión) y control simbólico (razonamiento por encadenamiento hacia delante y lógica de predicados). ABLE incorpora también un entorno visual de desarrollo donde se interconectan AbleBeans. El interés de esta plataforma es que soluciona visualmente la construcción y comunicación de los agentes.
--> Referencias
Para más información sobre ABLE, su descarga, instalación, requerimientos pueden visitar estos sitios:
http://">http://www.alphaworks.ibm.com/tech/able
http://www.research.ibm.com/able/doc/
Citas Bibliográficas.
Yanis Stanley Pérez Ardila (2007). Aplicación De Metodologías Ingenias, Zeus, Masina Al Desarrollo De Sistemas Multi-Agente, Partiendo De Sma De Subastas Para La Identificación De Mejores Practicas. Consultado en Marzo, 2009 en http://d.scribd.com/docs/2nio7ixepgf1tnpesqqn.pdf
Jorge J. Gómez Sanz (). Metodologías para el desarrollo de sistemas multi-agente. Consultado en
http://cabrillo.lsi.uned.es:8080/aepia/Uploads/18/38.pdf
Cuesta Morales Pedro, Departamento de Informática (Universidad de Vigo) (). Ingeniería de Software Orientada a Agentes. Consultado en http://www.esiiab.uclm.es/conferencias/traspas/pcuesta.pdf
Antonio F. Gómez Skarmeta y Juan A. Botía Blaya (2002). Tecnologías y Plataformas de Agentes. Consultado en marzo 02 de 2009 en http://ants.dif.um.es/~juanbot/page_files/uimp2002.pdf
Tulio José Marchetti, Alejandro Javier García (CACIC 2003). Evaluación de Plataformas para el Desarrollo de Sistemas Multiagente. Consultado en http://cs.uns.edu.ar/~ajg/papers/2003(Cacic)MarchettiGarcia.pdf
Lenguaje ADL:
http://www.informatica.us.es/~ramon/tesis/agentes/MIX/mix-adl.html
Descargas Varias de eBooks sobre desarrollo de multiagentes
http://www.ebookpdf.net/__Developing-Multi-Agent-Systems-with-JADE-ebook_ebook_.html
Publicado por Bernal en 22:13 0 comentarios
Etiquetas: Inteligencia Artificial
Buenos principios de Diseño de Interfaces Graficas de Usuario
El diseño de interfaces gráficas de usuario es un gran factor en el desarrollo de software que va dirigido a usuarios normales, ya que es el medio en el cual el usuario se comunica con el programa en sí y si este medio se desarrolla bien, entonces se logra que el programa trabaje de una manera efectiva en vez de que el usuario tenga que esforzarse para que el sistema funcione.
Muchas veces, los desarrolladores se interesan por crear una buena interfaz, pero muchas veces se enfocan en la parte visual, me refiero a esto a colores o diseños de botones, y no digo esto porque los botones o colores no sean importantes en una interfaz, si no que el conjunto de elementos que conforman la interfaz deben de seguir un conjunto de reglas las cuales hacen del programa exista un equilibrio entre todos sus componentes que lo conforman.
A lo que me refiero es que es excelente tener un botón perfectamente diseñado, y con alguno que otro efecto visual, pero el problema es si es botón hace una referencia a algún método sin sentido: por ejemplo tener un botón de “copiar”, donde lo lógico y mejor sería poner la opción “copiar” en un menú y con un atajo de teclado. Ese ejemplo es uno de muchos en los cuales el desarrollador peca de más elaborando la interfaz, es decir la final el producto queda muy cargado a nivel de interfaz de usuario.
Según James Hobart, él dice que se debe de seguir una serie de principios de diseño, para obtener un buen GUI.
- Entender y comprender a las distintas personas que eventualmente podrían utilizar el sistema.
- Tener una perspectiva clara del significado y el comportamiento de cada elemento de la aplicación.
- Diseño claro de los componentes, aquí me refiero al ejemplo citado anteriormente, donde cada opción tiene un lugar especifico, es decir ya sea botón o ya sea menú o ambos; como es el caso de un botón de cerrar, y no solamente es decir en qué contexto va la opción sino que también se debe tener claro la función de la acción, por ejemplo el botón de aceptar: acepta los datos introducidos o reconocer la información presentada y cierra la ventana.
- Consistencia en el Diseño, es decir si se realiza la versión 2.0 de un producto, procurar que esta versión tenga las características a nivel grafico sobresalientes con respecto al primer exitoso producto; para así exista una clara identificación del usuario con el sistema.
- Proporcionar una retroalimentación visual, esto es importante, ya que los seres humanos tienden a ser un poco impacientes, por lo que si una operación va a tardar más de 7 segundos, lo ideal es que se añada una barra de progreso para que el usuario entienda que se está realizando una operación.
- Tenga cuidado con los mensajes auditivos, ya que si el programa pone un sonido cada vez que usted acepta algo, al principio es interesante, pero luego se vuelve estresante, por lo cual los sonidos solamente se recomiendan para implementarlos en mensajes de error para que pongan en sobreaviso al usuario, así evitando la distracción del mismo.
- Es de gran ayuda proporcionar una trazabilidad en los caminos, es decir que las ventanas que se abren tengan leyendas y títulos descriptivos en cada cuadro de dialogo para así el usuario tenga un seguimiento de lo que se va mostrando en el transcurso de las operaciones que vaya realizando.
- Proporcionar un uso más activo del teclado, donde el sistema no se limite solo a utilizarse con el mouse, sino que también se introduzcan atajos de teclado para realizar determinadas funciones del sistema, con esto ponemos al usuario a participar más activamente con el sistema.
- Garantizar la coherencia entre sus aplicaciones de interfaz gráfica GUI es aplicar las normas que son fáciles de usar, clara y concisa.
Comprender los principios detrás de un buen diseño GUI puede ser un desafío. Es decir no ocurre naturalmente; por lo que los adecuados seguimientos de los principios y la experiencia en el desarrollo de productos son la clave para ir poco a poco desarrollando una buena GUI en la cual tanto el usuario como el desarrollador se sientan a gusto con el producto utilizado.
Publicado por Bernal en 21:55 0 comentarios
Etiquetas: GUI Design