viernes, 29 de noviembre de 2013

LO INTERESANTE DE LA ROBOTICA

ROBOTICA

La robótica es la ciencia encaminada a diseñar y construir aparatos y sistemas capaces de realizar tareas propias de un ser humano.

LAS TRES LEYES DE LA ROBOTICA

Las Tres Leyes de la Robótica de Asimov aparecen formuladas por primera vez en 1942 en el relato El círculo vicioso de Asimov.
El autor busca situaciones contradictorias en las que la aplicación objetiva de las Tres Leyes se pone en tela de juicio planteando a la vez interesantes dilemas filosóficos y morales que, en esta colección, Robots & Aliens están más presentes que nunca.

Las Tres Leyes De La Robótica

Ley CERO: En 1985, Asimov publicó un relato en la que uno de su robot se ve obligado a herir a un ser humano por el bien del resto de la humanidad. Surge así una nueva ley, considerada la Ley Definitiva, la llamada Ley Cero, superior a todas las demás: "Un robot no puede lastimar a la humanidad o, por falta de acción, permitir que la humanidad sufra daños". Quedando así modificada la primera ley: "Un robot no debe dañar a un ser humano, o permitir, por inacción, que un ser humano sufra daño, a menos que tal acción viole la Ley Cero".

1. Un robot no puede causar daño a un ser humano ni, por omisión, permitir que un ser humano sufra daños.

2. Un robot debe obedecer las órdenes dadas por los seres humanos, salvo cuando tales órdenes entren en conflicto con la Primera Ley.

3. Un robot ha de proteger su existencia, siempre que dicha protección no entre en conflicto con la Primera o la Segunda Ley.

CLASES DE ROBOTS

ROBOTS FÍSICOS

Robótica Industrial: Es la parte de la Ingeniería que se dedica a la construcción de máquinas capaces de realizar tareas mecánicas y repetitivas de una manera muy eficiente y con costes reducidos.
Robótica de Servicio: Es la parte de la Ingeniería que se centra en el diseño y construcción de máquinas capaces de proporcionar servicios directamente a los miembros que forman sociedad.
Robótica Inteligente: Son robots capaces de desarrollar tareas que, desarrolladas en un ser humano, requieren el uso de su capacidad de razonamiento.
Robótica Humanoide: Es la parte de la ingeniería que se dedica al desarrollo de sistemas robotizados para imitar determinadas peculiaridades del ser humano.

ROBOTS SOFTWARE

Robótica de Exploración: Es la parte de la Ingeniería del Software que se encarga de desarrollar programas capaces de explorar documentos en busca de determinados contenidos. Existen diversos servicios en Internet dedicados a esta parcela de la robótica.
Con la aparición del concepto 'robot' a principios de siglo XX, se dio los pasos para el desarrollo de sistemas cada vez más autónomos.
Un robot autónomo es un dispositivo robótico capaz de operar por sí mismo, en la robótica de servicio es donde más se están prodigando los robots de servicio. ¿En qué tipo de situaciones puede ser interesante un robot que sea completamente autónomo? por ejemplo en entornos hostiles:

- Conflictos bélicos.
- Exploración espacial.
- Exploración submarina.
- Rescate en catástrofes.

TIPOS DE ROBOTS

Aunque existen diferentes tipos de robots, aquí se muestra algunos de los más conocidos e importantes:
Androides: estos artilugios se parecen y actúan como si fueran seres humanos. Este tipo de robots no existen en la realidad, por lo menos por el momento, sino que son elementos ficcionales.

Móviles: estos robots cuentan con orugas, ruedas o patas que les permiten desplazarse de acuerdo a la programación a la que fueron sometidos. Estos robots cuentan con sistemas de sensores, que son los que captan la información que dichos robots elaboran. Los móviles son utilizados en instalaciones industriales, en la mayoría de los casos para transportar la mercadería en cadenas de producción así como también en almacenes. Además, son herramientas muy útiles para investigar zonas muy distantes o difíciles de acceder, es por eso que en se los utiliza para realizar exploraciones espaciales o submarinas.

Industriales: los robots de este tipo pueden ser electrónicos o mecánicos y se los utiliza para la realización de los procesos de manipulación o fabricación automáticos. También se les llama robots industriales a aquellos electrodomésticos que realizan simultáneamente distintas operaciones.



Médicos: bajo esta categoría se incluyen básicamente las prótesis para disminuidos físicos. Estas cuentan con sistemas de mando y se adaptan fácilmente al cuerpo. Estos robots lo que hacen es suplantar a aquellos órganos o extremidades, realizando sus funciones y movimientos. Además existen robots médicos destinados a la realización de intervenciones quirúrgicas



Teleoperadores: estos robots son controlados de manera remota por un operador humano. A estos artilugios se los utiliza en situaciones extremas como la desactivación de una bomba o bien, para manipular residuos tóxicos.



De acuerdo a su arquitectura, los robots pueden clasificarse en:

Poliarticulados: si bien estos pueden tener de diversas configuraciones, lo que tienen en común estos robots es que son sedentarios. Estos son diseñados para mover sus terminales con limitada libertad y de acuerdo a ciertos sistemas de coordenadas. Estos robots son ideales para cuando se precisa abarcar una amplia zona de trabajo.



Móviles: a diferencia de los anteriores, estos han sido diseñados para desplazarse, ya sea utilizando un sistema locomotor rodante o bien, mediante plataformas o carros. Estos se trasladan utilizando sensores que reciben información del entorno o bien, por telemandos.
Androides: estos robots buscan imitar de manera parcial o total la el comportamiento y forma del ser humano. Como no están prácticamente desarrollados se los usa para la experimentación y el estudio.
Zoomórficos: la locomoción de estos robots imita a la de distintos animales y se los puede dividir en caminadores y no caminadores. Estos últimos están aún muy poco desarrollados mientras que los caminadores sí lo están y resultan útiles para la exploración volcánica y espacial.







SISTEMAS BASADOS EN TÉCNICAS DE LÓGICA DIFUSA

LÓGICA DIFUSA


Los humanos tenemos la capacidad de percibir los matices de la realidad que nos rodea y de tomar decisiones en consecuencia. Uno de los retos de la tecnología es dotar a las máquinas de esta autonomía, y la teoría de la lógica difusa ha permitido dar un paso de gigante en la materia.
En 1965 este ingeniero iraní publicaba un trabajo que, con más de 35.000 menciones, se convertiría en uno de los artículos científicos más citados del siglo XX. En él se hablaba por primera vez de los "conjuntos difusos", un término que serviría para desarrollar la lógica difusa. Frente a la lógica clásica, que establece conjuntos claramente delimitados, la lógica difusa establece áreas complejas, mucho más ajustadas a la realidad. Por ejemplo, podemos definir a un buen jugador de baloncesto como alguien que mide más de 1,85 metros y que tiene buena puntería. La lógica difusa permite, como haría un entrenador humano, incluir en el conjunto de buenos jugadores a uno que midiera 1,84 pero con una puntería excelente. De esta forma, la lógica difusa salva la distancia entre la lógica clásica y la realidad.




El aspecto central de las técnicas de lógica difusa es que, a diferencia de la lógica clásica, la lógica difusa tiene la capacidad de reproducir de manera aceptable y eficiente los modos usuales del razonamiento humano, al considerar que la certeza de una proposición es una cuestión de grado por esta razón parte de la base del razonamiento aproximado y no del razonamiento preciso como lo hace la lógica clásica. De esta forma las características más importantes de la lógica difusa son: La flexibilidad, la tolerancia con la imprecisión, la capacidad para moldear problemas no-lineales y su fundamento en el lenguaje des sentido común.
Este concepto, aplicado a las máquinas, mejora visiblemente el servicio que estas nos prestan. Por ejemplo, permite que una lavadora automática escoja adecuadamente el programa en función de la carga, la suciedad y las características de las prendas. Una de las primeras aplicaciones de la lógica difusa fue el metro automático de la ciudad japonesa de Sendai, que consiguió que los cambios de velocidad se asemejaran a los que realizaría un conductor humano experimentado. La aceleración y la fuerza de las frenadas se hicieron más graduales, lo que a su vez se tradujo en un menor consumo de electricidad y en más comodidad para los usuarios.


jueves, 28 de noviembre de 2013

SISTEMAS EXPERTOS


Sistemas Expertos

¿Qué es un sistema experto?

Los Sistemas Expertos, rama de la Inteligencia Artificial, son sistemas informáticos que simulan el proceso de aprendizaje, de memorización, de razonamiento, de comunicación y de acción en consecuencia de un experto humano en cualquier rama de la ciencia. 
Estas características le permiten almacenar datos y conocimiento, sacar conclusiones lógicas, tomar decisiones, aprender de la experiencia y los datos existentes, comunicarse con expertos humanos, explicar el por qué de las decisiones tomadas y realizar acciones como consecuencia de todo lo anterior.


Técnicamente un sistema experto, contiene una base de conocimientos que incluye la experiencia acumulada de expertos humanos y un conjunto de reglas para aplicar ésta base de conocimientos en una situación particular que se le indica al programa. Cada vez el sistema se mejora con adiciones a la base de conocimientos o al conjunto de reglas.




 ¿Por qué utilizar un Sistema Experto?

Con la ayuda de un Sistema Experto, personas con poca experiencia pueden resolver problemas que requieren un "conocimiento formal especializado".

Los Sistemas Expertos pueden obtener conclusiones y resolver problemas de forma más rápida que los expertos humanos. 
Los Sistemas Expertos razonan pero en base a un conocimiento adquirido y no tienen sitio para la subjetividad.


Se ha comprobado que los Sistemas Expertos tienen al menos, la misma competencia que un especialista humano.
El uso de Sistemas Expertos es especialmente recomendado en las siguientes situaciones:
Cuando los expertos humanos en una determinada materia son escasos.
En situaciones complejas, donde la subjetividad humana puede llevar a conclusiones erróneas.
Cuando es muy elevado el volumen de datos que ha de considerarse para obtener una conclusión.

Aplicaciones
Medicina, Economía, Psicología, Finanzas, Derecho y prácticamente todas las ramas del conocimiento.

Informatica Integral inteligente

Componentes de un sistema experto

  • Separan conocimientos (reglas y hechos) y el procesamiento; se le añade un interfase de usuario y un componente explicativo; los siguiente componentes pueden estar estructurados de formas muy variadas.
  • Base de conocimientos: Contiene el conocimiento de los hechos y las experiencias de los expertos en un dominio determinado
  • Mecanismo de inferencia: Puede simular la estrategia de solución de un experto
  • Componente explicativo: Explica al usuario la estrategia de solucion encontrada y el por qué de las desiciones tomadas
  • Interfase de usuario: Sirve para que este pueda realizar una consulta en un lenguaje lo más natural posible
  • Componente de adquisición: Ofrece ayuda a la estructuración e implementación del conocimiento en la base de comocimientos

Tipos de sistemas expertos

Existen tres tipos de sistemas expertos:
  • Basados en reglas: Aplicando reglas heurísticas apoyadas generalmente en lógica difusa para su evaluación y aplicación.
  • Basados en casos CBR (Case Based Reasoning): Aplicando el razonamiento basado en casos, donde la solución a un problema similar planteado con anterioridad se adapta al nuevo problema.
  • Basados en redes: Aplicando redes bayesianas, basadas en estadística y el teorema de Bayes.

¿Por qué utilizar un sistema experto?

Con su ayuda, personas con poca experiencia pueden resolver problemas que requieren un "conocimiento formal especializado". Se pueden obtener conclusiones y resolver problemas de forma más rápida que los expertos humanos. Estos sistemas razonan pero en base a un conocimiento adquirido y no tienen sitio para la subjetividad. Se ha comprobado que tienen al menos, la misma competencia que un especialista humano.
Su uso es especialmente recomendado en las siguientes situaciones:
  • Cuando los expertos humanos en una determinada materia son escasos.
  • En situaciones complejas, donde la subjetividad humana puede llevar a conclusiones erróneas.
  • Cuando es muy elevado el volumen de datos que ha de considerarse para obtener una conclusión.


Diferencias entre sistemas expertos y los tradicionales

Sistemas expertos:
  • Toman Decisiones
  • Calculan Resultados
  • Basados en Heurísticas
  • Dan Explicaciones de los Resultados
  • Usan Reglas de Inferencia
  • Accedan Bases de Conocimientos (Deductivas)
  • Centrados en el Experto y el Usuario
  • Manejan Conocimiento Impreciso, Contradictorio o Incompleto
  • Usan Datos y Lenguajes Simbólicos
Sistemas tradicionales:
  • Calculan resultados
  • Basados en Algoritmos
  • Dan Resultados sin Explicaciones
  • Usan Secuenciación, Ciclos y Condicionales
  • Acceden a Bases de Datos
  • Centrados en el Analista y el Programador
  • Conocimientos Precisos, Completos y Exactos
  • Usan Datos Numéricos y Lenguajes Procedurales.

EcuRed

AGENTES INTELIGENTES

SISTEMAS BASADOS EN AGENTES



Agentes Autónomos
Un agente autónomo es un sistema situado en un entorno y es parte de ese entorno que siente, actúa sobre él, a través del tiempo, persiguiendo sus propios objetivos de forma que afecte lo que siente en el futuro. Su autonomía se puede definir por dos características:

Primero, que son pro activos  no sólo actúan respondiendo a una acción del usuario, sino que también actúan siguiendo sus propios objetivos.


Segundo, que son persistentes, no se pueden apagar; aun cuando el usuario no está interaccionando con ellos, los agentes siguen funcionando, recolectando información, aprendiendo y comunicándose con otros agentes.

Esta autonomía implica que sean agentes situados, es decir, que haya una clara diferencia entre el agente y su entorno. Y la persistencia e independencia del entorno permite que algunos agentes sean móviles, llevando subagaje de información allí donde van, y siguiendo quizás a su usuario.
Algunas aplicaciones.
Un agente, tal como se ha definido anteriormente, puede ser usado de múltiples maneras en el entorno empresarial actual, por ejemplo:


Newstracker. Este programa recupera datos específicos.
Cuando el usuario indica el tipo de información que le interesa, Newstracker comprende el mensaje y, después de revisar durante horas miles de artículos en periódicos, agencias de noticias o revistas conectadas a Internet, cada mañana "edita" un periódico personalizado.
Si la selección de noticias no satisface por completo al lector, Newstracker toma nota, rectifica y es capaz de aprender de sus errores.Una vez que haya estudiado durante cierto tiempo los hábitos de lectura del usuario, le proporciona información a su medida.
Los expertos definen a este sofisticado programa como un "asistente polivalente" de la primera generación.
Mind-it. Este servicio gratuito de Internet envía un mensaje por correo electrónico cada vez que una página web (u otro documento) ha sido actualizado.
Permite seleccionar una parte de la página web para saber si ha sido actualizada.
Notifica al usuario, de forma automática, cuándo un documento ha sido trasladado a otra dirección. Otro servicio parecido es Informant.

 


Eliza. En 1966, Joseph Weizenbaum, del Instituto de Tecnología de Massachusetts, creó un programa para estudiar el lenguaje de comunicación entre el hombre y el computador. Fue programado para simular a un psicoterapeuta y contestar preguntas.
El sistema Eliza es muy simple: analiza cada pregunta y proporciona una respuesta adecuada al contexto solicitado.
Express. Este programa permite realizar múltiples búsquedas simultáneas en diferentes buscadores, y localizar información en Internet de manera fácil y rápida a través de una interfaz sencilla.




BargainFinder, representado en la red como una esfera amarilla con un casco de minero, se dedica a buscar Compact Disc baratos en Internet.
Pero si el vendedor descubre que se trata de un agente en lugar de un ser humano, puede burlarlo. Está además, Shopbot que es más inteligente, aprende de su errores para burlar al vendedor.
Mención aparte merece Letizia, un knowbot más sofisticado desarrollado por el investigador Henry Lieberman.
Leticia, bautizada así en homenaje a un texto de Jorge Luis Borges, está dotada de un talento especial: dispone del suficiente grado de autonomía como para introducir en sus acciones una cierta dosis de azar e improvisación.

ReferenciaHenao, David. Inteligencia artificial.Argentina: El Cid Editor | apuntes, 2009. p 37 - 38Copyright © 2009. El Cid Editor | apuntes. All rights reserved.http://site.ebrary.com/lib/unadsp/docDetail.action?docID=10316885&page=37

REDES NEURONALES

Estudio de Redes Neuronales de DARPA (1988, AFCEAInternational Press, p. 60):

"Una red neuronal es un sistema compuesto de muchos elementos procesadores simples operando en paralelo, cuya función es determinada por la estructura de la red, fuerza en las conexiones y el procesamiento realizado por los elementos computacionales en los nodos."
"Una red neuronal es un procesamiento distribuido masivamente paralelo que tiene una tendencia natural para almacenar conocimiento empírico y hacerlo disponible para el uso.
1.- El conocimiento se adquiere por la red a través de un proceso de aprendizaje.
2.- Las conexiones interneurónicas se conocen como pasos sinápticos y se usan para almacenar el conocimiento."


Dr. Haykin, S. (1994, Neural Networks: A comprehensive foundation, NY, McMillan, P.2):
Recuerda al cerebro en dos aspectos:
Ya teniendo una breve percepción de lo que es una red neuronal debemos ahora saber que existen dos tipos de redes neuronales, las redes neuronales biológicas y las redes neuronales artificiales ANN (Artificial Neural Network).



REDES NEURONALES BIOLÓGICAS.


Son el principal elemento del Sistema Nervioso. Las redes neuronales biológicas están compuestas por un gran número de elementos llamados neuronas. Una neurona es una célula compuesta por cuerpo, un número de extensiones llamadas dendritas, que sirven de entradas, y una larga extensión llamada axón que actúa como salida. La sinapsis conecta el axón de una neurona a las dendritas de las otras neuronas. Las neuronas están dispuestas en capas. En general las neuronas de una capa reciben entradas desde otra capa y envían sus salidas a neuronas de una tercera. Dependiendo de la aplicación también es posible que las neuronas de una capa reciban entradas y provean salidas a neuronas de la misma capa.
Las conexiones entre neuronas tienen pesos asociados que representan la influencia de una sobre la otra. Si dos neuronas no están conectadas, el correspondiente peso de enlace es cero. Esencialmente, cada una envía su información de estado multiplicado por el correspondiente peso a todas las neuronas conectadas con ella. Luego cada una, a su vez, suma los valores recibidos desde sus dendritas para actualizar sus estados respectivos.
Se emplea normalmente un conjunto de ejemplos representativos de la transformación deseada para "entrenar" el sistema, que, a su vez, se adapta para producir las salidas deseadas cuando se lo evalúa con las entradas "aprendidas".
Además se producirán respuestas cuando, en la utilización, se presenten entradas totalmente nuevas para sistema, esto es durante el modo entrenamiento la información sobre el sistema a resolver es almacenada dentro del ANN y la red utiliza su modo productivo en ejecutar transformaciones y aprender. De este modo el sistema de red neuronal no reside necesariamente en la elegancia de la solución particular sino en su generalidad de hallar solución a problemas particulares, habiéndose proporcionado ejemplos del comportamiento deseado. Esto permite la evolución de los sistemas autómatas sin una reprogramación explícita.
Las redes neuronales artificiales se basan en el circuito de procesamiento de entradas en el cual los pesos son sumados. Las funciones de peso serán llamadas desde ahora como atenuadores. En la implementación, las entradas a una neurona son pesadas multiplicando el valor de la entrada por un factor que es menor o igual a uno. El valor de los factores de peso es determinado por el algoritmo de aprendizaje.
Las entradas atenuadas son sumadas usando una función no lineal llamada Función "Sigmoid". Si la salida de la función suma excede el valor de entrada máximo de la neurona, esta responde generando una salida.



REDES NEURONALES ARTIFICIALES.


Las redes neuronales artificiales (ANN) imitan su funcionamiento a aquellas que se encuentran en el ámbito biológico. Son aptas para resolver problemas que no poseen un algoritmo claramente definido para transformar una entrada en una salida; aprenden, reconocen y aplican relaciones entre objetos.
Se emplea normalmente un conjunto de ejemplos representativos de la transformación deseada para "entrenar" el sistema, que, a su vez, se adapta para producir las salidas deseadas cuando se lo evalúa con las entradas "aprendidas".
Además se producirán respuestas cuando, en la utilización, se presenten entradas totalmente nuevas para sistema, esto es durante el modo entrenamiento la información sobre el sistema a resolver es almacenada dentro del ANN y la red utiliza su modo productivo en ejecutar transformaciones y aprender. De este modo el sistema de red neuronal no reside necesariamente en la elegancia de la solución particular sino en su generalidad de hallar solución a problemas particulares, habiéndose proporcionado ejemplos del comportamiento deseado. Esto permite la evolución de los sistemas autómatas sin una reprogramación explícita.
Las redes neuronales artificiales se basan en el circuito de procesamiento de entradas en el cual los pesos son sumados. Las funciones de peso serán llamadas desde ahora como atenuadores. En la implementación, las entradas a una neurona son pesadas multiplicando el valor de la entrada por un factor que es menor o igual a uno. El valor de los factores de peso es determinado por el algoritmo de aprendizaje.
Las entradas atenuadas son sumadas usando una función no lineal llamada Función "Sigmoid". Si la salida de la función suma excede el valor de entrada máximo de la neurona, esta responde generando una salida.
En la figura podemos ver un modelo en capas de una red neuronal artificial, que consiste de un conjunto de neuronas.
Cada neurona tiene varias entradas y su salida esta conectada a un conjunto de otros procesadores de entradas.
Cuando una ANN funciona en modo normal, a partir de los datos presentados en la entrada, se genera un patrón específico de salida. La relación Entrada/Salida será determinada durante el modo entrenamiento, entonces cuando una entrada conocida es presentada da la salida esperada.
El algoritmo de entrenamiento ajusta los pesos de las entradas hasta que se alcanza la salida esperada.
Las neuronas en la figura tienen una leve complejidad computacional, porque solo se comunican con las neuronas más cercanas conectándose de forma simple. Por las características y capacidades que ofrece la tecnología VLSI es posible (en costos) construir una Red Neuronal con muchos procesadores.




Ing. José Rosales Fernandez
Laboratorio de Electrónica
http://www.usmp.edu.pe/publicaciones/boletin/fia/info32/pag4.htm

SOFTWARE LIBRE EXISTENTE PARA INTELIGENCIA ARTIFICIAL

OpenAI, inteligencia artificial Open Source

Un sitio sobre inteligencia artificial, pero basado en el software libre. Lo que se pretende es desarrollar una herramienta de inteligencia artificial genérica, que pueda luego ser adaptada a diferentes usos.Ayer te lo contamos, la inteligencia artificial pronto superará a la humana, y podría llegar a utilizarse para reemplazar a los corredores de bolsa de Wall Street.

Pero detrás de estos objetivos hay varios miles de líneas de código, y a menudo de dólares. Los desarrollos de IA son muy costosos y de largo plazo, y solo pueden llevarlos a cabo grandes compañías o universidades.






OpenAI
http://www.neoteo.com/openai-inteligencia-artificial-open-source/

Con OpenAI lo que se busca es crear un punto de encuentro entre aficionados a la inteligencia artificial, en el cual se pueda debatir en foros, descargar herramientas, y cooperar en el desarrollo de un modelo genérico de IA, que pueda luego ser adaptado a diferentes usos. Y siempre basado en la filosofía del software libre.

El proyecto se basa en Java y C++ como lenguajes de programación para su desarrollo, y utiliza XML y CORBA para la configuración, comunicación entre procesos y persistencia de objetos.

Ya hay un prototipo desarrollado, que puedes descargarte desde el sitio oficial del proyecto, para comenzar a probarlo y ver como es esto de las redes neuronales. ¡Y si te animas, puedes colaborar, recuerda que es software libre y se nutre de la ayuda de todos!
La inteligencia artifical tiene años de desarrollo, afortunadamente no toda es cerrada, tambien existe la inteligencia artificial libre.

Hay una página especializada en A.I. libre se llama Openai, y la desarrolla bajo licencia BSD.

OpenAI
http://openai.sourceforge.net/faq.html

* Neural Network
* Genetic Algorithm
* Finite State Machine
* Mobile Agent System

* Bayesian Network
* Fuzzy Engine
* Inference Engine

(http) Java Neural Net Package devel-0.2 (including the GUI)
(http) A package containing some 3rd party libs for the neuralnet
(http) Java Mobile Agent Package 0.1.3 Beta (OSMoSys)
(http) Java Genetic Algorithm Package devel-alpha-0.1
(http) Java Finite State Machine Package devel-alpha-0.1