jueves, 24 de junio de 2010

Agentes Inteligentes

Hablar de la inteligencia artificial (IA), implica realizar una búsqueda exhaustiva y profunda acerca de sus orígenes y nos hemos de encontrar frente a una inmensa cantidad de información muy variada, sin embargo; lo mas rescatable de las definiciones, conceptos e historia que se encuentran en la red acerca de la IA, es que su aparición comienza con los inicios de las computadoras. A raíz de esto se desencadenan un sin fin de eventos que dan paso al desarrollo de lo que ahora es considerado como una ciencia.

A la fecha no existe una definición concreta de lo que es la IA, debido a lo complicado que resulta definir este termino, además de la aceptación que debe tener entre los distintos expertos de esta área. Tomando en cuenta lo anterior es preciso que a mi muy particular forma de pensar, la definición de IA dice: “La inteligencia artificial es considerada una rama de la computación y relaciona una entidad natural con una entidad artificial que la asemeje a través de programas de computadora. La inteligencia artificial puede ser tomada como ciencia si se enfoca hacia la elaboración de programas basados en comparaciones con la eficiencia del hombre, contribuyendo a un mayor entendimiento del conocimiento humano”.

Algunas de las áreas que se desprenden de la Inteligencia Artificial son:
· Sistemas Expertos.
· Aprendizaje y razonamiento automático.
· Robótica.
· Procesamiento de Lenguaje Natural.
· Visión por Computadora. (Reconocimiento de patrones).
· Redes Neuronales.
· Lógica Difusa.
· Algoritmos genéticos.
· Vehículos Autónomos.
· Realidad Virtual.
· Agentes Inteligentes.

Como los agentes inteligentes forman parte de lo que es la inteligencia artificial, y el tema de esta investigación es propiamente esto, solo resta por comenzar a definir ¿Qué es un agente inteligente?

Al igual que en la IA, se encuentran muchas definiciones acerca de lo que son los agentes Inteligentes, una de ellas y la más acertada creó es la dada por:
WOOLDRIDGE: “Un agente inteligente es un sistema de Hardware o software situado en un entorno determinado capaz de actuar de forma autónoma y razonada en dicho ambiente para llevar a cabo objetivos determinados”.

En otras palabras Wooldridge, define a los agentes inteligentes como sistemas de dos tipos: hardware (robots) y software (programas), los cuales se encuentran en un determinado ambiente, donde debe ser capaz a través de sensores de tomar decisiones sin ayuda (autónomo), además de tener la capacidad de comprender para resolver problemas, así como también percibir, recibir y almacenar información, para finalmente ejecutar la acción pertinente que logre alcanzar los objetivos que se determinaron.
Pero con esta definición se podría pensar que un agente puede ser cualquier cosa capaz de realizar lo arriba planteado, no obstante un agente debe ser flexible, y por esto se entiende que sea:

Reactivo: Se refiere a la capacidad con la que debe contar un agente para responder a los cambios en el entorno en el que se encuentra.
Pro activo: Este a su vez debe ser capaz de poder cumplir o intentar cumplir con sus propios objetivos.
Social o interactivo: Debe de poder comunicarse con otros agentes u otras entidades a través de algún tipo de lenguaje natural existente entre ellos.
Autónomo: El agente debe de ser capaz de actuar basado en su experiencia; la cual obtiene gracias a la percepción de su entorno.

La reactividad, la pro actividad, la interactividad y la autonomía son características básicas de un agente, aunque podemos encontrar más y distintas, las anteriores son fundamentales en un agente inteligente básico.

La estructura de un agente esta constituida por un programa que se encarga de implementar la transformación de una serie de percepciones en acciones, y una arquitectura que se hará cargo de que estas percepciones lleguen al programa y las acciones lleguen a los efectores.
Es importante mencionar que los agentes se clasifican en:
· Agente reflejo.
· Agente reflejo con estado interno.
· Agente con objetivos explícitos.
· Agente basado en la utilidad.

Agente reflejo:
Un agente reflejo simple actúa encontrando una regla cuya condición coincida con la situación que el agente percibe en su entorno a través de sus sensores, y la acción que debe generar dicha regla conocida como de condición-acción.
Diagrama de un Agente reflejo simple.

Agente Reflejo con Estado Interno:
En algunas ocasiones, no es posible tomar una decisión a partir de solamente percepciones, debido a que los sensores no proporcionan toda la información necesaria para realizar una condición-acción.
Un Agente reflejo con estado interno, mantiene la información que necesita para distinguir entre diferentes situaciones presentes en el entorno donde se desarrolla, así la percepción actual se interpreta a partir de un estado anterior, utilizando información de cómo evoluciona el mundo independientemente del agente y como influyen en él las acciones generadas por el mismo.

Agente con objetivos explícitos:
Sin duda en ocasiones no es posible tomar una decisión basándose únicamente en el estado actual del ambiente, es por esto que un agente con objetivos explícitos o agente basado en objetivos (como también se les conoce), utiliza una descripción de las metas a alcanzar, lo cual le sirve para elegir entre diferentes acciones posibles la correcta.
La toma de decisiones basada en objetivos es distinta a la toma de decisiones basada en reglas de condición-acción; debido a que al realizarlas se considera el futuro y en el agente reflejo esta información no se utiliza, puesto que el diseñador calcula la acción correcta. Si la meta no es inmediata a una acción, es necesario realizar un proceso de búsqueda y planeación, los cuales son subáreas de la inteligencia artificial que se ocupan de encontrar la secuencia de acciones que permitirán alcanzar las metas de un agente.

Agente basado en la utilidad:
Si se prefiere un estado por otro, entonces ese estado ofrece mayor utilidad al agente. Un agente basado en utilidad, utiliza un criterio para correlacionar un estado y un número real que estima el grado de satisfacción para el agente, el cual le sirve para escoger entre distintas acciones validas.
La utilidad permite la toma de decisiones racionales cuando la meta presenta problemas. Por consiguiente cuando el logro de una meta implica una complicación, y solo algunas de ellas se pueden obtener, entonces la utilidad definirá cual es la más adecuada. Por otro lado cuando son varias las metas que el agente desea conseguir, pero existe la certeza de no lograr ninguna de ellas, la utilidad examina la posibilidad de tener éxito considerando la importancia de las diferentes metas.

TIPOS DE AGENTES.
Como se ha mencionado anteriormente, los diferentes tipos de agentes se describen, primeramente en:
· Agentes Humanos. (Ej. Agente de ventas).
· Agentes de Hardware. (Ej. Robots).
· Agentes de Software. (Ej. Programas).
Y dentro de lo que son los agentes de software encontramos los siguientes tipos:
Agentes Colaborativos: Estos agentes son útiles en el desarrollo de tareas que envuelven la solución de problemas, como es el tráfico aéreo. Están enfocados a solucionar problemas muy grandes y facilitar soluciones a los mismos, además de permitir la interconexión de sistemas.
Agentes de Interfaz: Su objetivo es el de servir y adaptarse a las necesidades del usuario con base al análisis de sus hábitos y comportamientos adaptándose a decisiones tomadas anteriormente. El proceso de aprendizaje esta basado en observar e imitar las acciones generadas por un usuario.
Agentes Móviles: Estos agentes tienen la capacidad de salir de las redes que los contienen y accesar en computadoras de redes remotas o incluso al propio Internet.
Agentes de Información (Internet): El objetivo de estos agentes es la recolección, la administración y clasificación de grandes cantidades de información que proviene de fuentes que se encuentran distribuidas en la red. El proceso de filtrado de información se genera de manera autónoma sin la ayuda de un usuario.
Agentes Reactivos: Como su nombre lo dice, son aquellos agentes que perciben los cambios o eventos producidos dentro del entorno del sistema.
Agentes Híbridos: Estos agentes son una combinación de agentes reactivos y agentes que contienen un modelo interno de razonamiento. Estos agentes facilitan una mayor facilitan una mayor adaptabilidad y mejor rendimiento.

TIPOS DE ENTORNOS:
· Accesible e Inaccesible: En un entorno accesible los sensores proporcionan toda la información relevante. En este entorno el agente no necesita un estado interno.
· Deterministas y no determinista: En este entorno el estado siguiente puede obtenerse a partir del actual y de las acciones del agente.
· Episódicos y no episódicos: En un entorno episódico la experiencia del agente esta dividida en episodios independientes. En este entorno el agente no tiene que preocuparse del impacto de sus decisiones.
· Estáticos y dinámicos: Un entorno dinámico puede sufrir cambios mientras el agente esta razonando, sin embargo mientras esto sucede el tiene que seguir observando.
· Discretos y continuos: En un entorno discreto existe un numero especifico de percepciones y acciones debidamente definidas

BIBLIOGRAFIA:
· http://www.robot.uji.es/docencia/II28/teoria/transparencias-tema02.pdf
· http://www.infor.uva.es/~calonso/IAI/Tema2-AgenteInteligente/Tema2%20Agentes%20Inteligentes.pdf
· http://www.sia.eui.upm.es/grupos/IntroAI.pdf
· http://dis.eafit.edu.co/cursos/st725/material/lect_intro04.pdf
· http://www.angelfire.com/falcon/miqueleiz/09tiposdeagentes.htm
· http://www.superrobotica.com/Sensores.htm (definición de sensor robótico).Wikipedia enciclopedia libre (definiciones).

jueves, 17 de junio de 2010

AGENTES INTELIGENTES.

Este es el titulo del tema que expondre para la materia de Inteligencia Artificial, esta publicación muestra un avance de lo que estoy desarrollando, posteriormente publicare la parte final.
Hablar de la inteligencia artificial (IA), implica realizar una búsqueda exhaustiva y profunda acerca de sus orígenes y nos hemos de encontrar frente a una inmensa cantidad de información muy variada, sin embargo; lo mas rescatable de las definiciones, conceptos e historia que se encuentran en la red acerca de la IA, es que su aparición comienza con los inicios de las computadoras. A raíz de esto se desencadenan un sin fin de eventos que dan paso al desarrollo de lo que ahora es considerado como una ciencia.
A la fecha no existe una definición concreta de lo que es la IA, debido a lo complicado que resulta definir este termino, además de la aceptación que debe tener entre los distintos expertos de esta área. Tomando en cuenta lo anterior es preciso que a mi muy particular forma de pensar, la definición de IA dice: “La inteligencia artificial es considerada una rama de la computación y relaciona una entidad natural con una entidad artificial que la asemeje a través de programas de computadora. La inteligencia artificial puede ser tomada como ciencia si se enfoca hacia la elaboración de programas basados en comparaciones con la eficiencia del hombre, contribuyendo a un mayor entendimiento del conocimiento humano”.
Algunas de las áreas que se desprenden de la Inteligencia Artificial son:
· Sistemas Expertos.
· Aprendizaje y razonamiento automático.
· Robótica.
· Procesamiento de Lenguaje Natural.
· Visión por Computadora. (Reconocimiento de patrones).
· Redes Neuronales.
· Lógica Difusa.
· Algoritmos genéticos.
· Vehículos Autónomos.
· Realidad Virtual.
· Agentes Inteligentes.
Como los agentes inteligentes forman parte de lo que es la inteligencia artificial, y el tema de esta investigación es propiamente esto, solo resta por comenzar a definir ¿Qué es un agente inteligente?
Al igual que en la IA, se encuentran muchas definiciones acerca de lo que son los agentes Inteligentes, una de ellas y la más acertada creó es la dada por:
WOOLDRIDGE: “Un agente inteligente es un sistema de Hardware o software situado en un entorno determinado capaz de actuar de forma autónoma y razonada en dicho entorno para llevar a cabo objetivos determinados”.
En otras palabras Wooldridge, define a los agentes inteligentes como sistemas de dos tipos: hardware (robots) y software (programas), los cuales se encuentran en un determinado ambiente, donde debe ser capaz a través de sensores de tomar decisiones sin ayuda (autónomo), además de tener la capacidad de comprender para resolver problemas, así como también percibir, recibir y almacenar información, para finalmente ejecutar la acción pertinente que logre alcanzar los objetivos que se determinaron.
Pero con esta definición se podría pensar que un agente puede ser cualquier cosa capaz de realizar lo arriba planteado, no obstante un agente debe ser flexible, y por esto se entiende que sea:
Reactivo: Se refiere a la capacidad con la que debe contar un agente para responder a los cambios en el entorno en el que se encuentra.
Pro activo: Este a su vez debe ser capaz de poder cumplir o intentar cumplir con sus propios objetivos.
Social o interactivo: Debe de poder comunicarse con otros agentes u otras entidades a través de algún tipo de lenguaje natural existente entre ellos.
Autónomo: El agente debe de ser capaz de actuar basado en su experiencia; la cual obtiene gracias a la percepción de su entorno.
La reactividad, la pro actividad, la interactividad y la autonomía son características básicas de un agente, aunque podemos encontrar mas y distintas, las anteriores son fundamentales en un agente inteligente básico.
Es importante mencionar que los agentes se clasifican en:
· Agente reflejo.
· Agente reflejo con estado interno.
· Agente con objetivos explícitos.
· Agente basado en la utilidad.

Agente reflejo:
Un agente reflejo simple actúa encontrando una regla cuya condición coincida con la situación que el agente percibe a través de sus sensores, y efectúa la acción que corresponda a tal regla.

martes, 23 de marzo de 2010

BUSQUEDA HEURISTICA.

Para comenzar a hablar de búsqueda heurística es primordial empezar diciendo que una heurística se deriva del griego “heuriskein”, lo cual significa encontrar, para Feigenbaum y Feldman la heurística se define como: “Una heurística es una regla para engañar, simplificar o para cualquier otra clase de ardid el cual limita drásticamente la búsqueda de soluciones en grandes espacios estados”.

Por la definición anterior, entonces se puede decir que una Heurística es un algoritmo que la mayoría de las veces se utiliza cuando no existe una solución óptima de un problema, el cual se encuentra bajo el régimen de ciertas condiciones. Cabe mencionar que la heurística realiza un análisis de datos basados en experiencias anteriores en sus consecuencias; esto es de vital importancia para la Inteligencia Artificial.

Para resolver muchos de los problemas difíciles es necesario en ocasiones desarrollar una estructura de control, la cual no siempre garantice encontrar la mejor respuesta, sino que casi siempre encuentra una buena respuesta. Es por esto que una técnica heurística mejora la eficacia del proceso de búsqueda, reduciendo así la cantidad de nodos recorridos en una búsqueda requerida para encontrar una solución. Es por esto que los métodos de búsqueda heurística, llamados también métodos fuertes son mejores que los de búsqueda ciega.

El empleo de la heurística es muy utilizada en los juegos para computadoras, es decir, si por ejemplo en un juego de pelea uno de los jugadores es manipulado por medio de un control por una persona y el otro es manipulado por el ordenador, entonces cuando se de por iniciada la pelea, el jugador manipulado por el ordenador tratara de ganar el juego a la persona, esquivando, golpeando, maniobrando, etc, en fin siguiendo todas las reglas estipuladas por el juego, en ocasiones lograra ganar en otras perderá, pero esto permitirá que con cada pelea realizada se guarden experiencias basadas en cada una de las peleas lo cual admitirá sortear errores pasados.

En otras palabras, lo que se hace es recabar información y utilizarla para hallar una buena solución a un problema dado, sin tener la certeza de que esa solución sea la mejor o la correcta.

Las principales ventajas y desventajas de la heurística son:

Los métodos heurísticos generalmente por su tipo de búsqueda nos puede conducir a errores u operaciones equivocadas; aunque raras veces aparecen los peores casos en la práctica.

Algunas heurísticas se pueden contradecir al aplicarse al mismo problema, creando con esto confusión.

Las soluciones óptimas determinadas por la heurística pueden hacer menos exhaustiva la búsqueda.

Como nos podemos dar cuenta los métodos de búsqueda heurística son la mejor opción, aunque recordemos que no siempre la mejor opción es la correcta, sino que más bien, todo depende del cristal con que lo veamos.

domingo, 7 de marzo de 2010

EL TEST DE TURING.


Para hablar del acerca del Test de Turing, me parece indispensable primero comentar que fue Alan Mathison Turing (matemático, computador científico y filosofo), padre de la computación y la computación digital moderna; quien a través de su trabajo “La Teoría de la Computación” se creó lo que hoy conocemos como Test de Turing la cual es la prueba que sirve para descubrir la existencia de inteligencia en una maquina o computador.

Es preciso decir que fue en el año de 1950 cuando Alan Turing publico en la revista “Mind” un procedimiento que era capaz de determinar si una maquina poseía inteligencia. Lo que Turing desconocía en aquellos años, era que esta prueba sería tomada como una de las principales medidas para evaluar la Inteligencia Artificial.

La Prueba de Turing, como también se llama, trata de una prueba que realiza un ser humano el cual a través de una conversación simultanea con otro ser humano y un ordenador, tratara de establecer cual de los dos es la maquina. Se puede decir que esta prueba es superada si la persona que funge como juez, es decir; que la persona que evalúa no es capaz de descubrir cual de los dos es el ordenador, entonces se puede decir que esta maquina es capaz de utilizar un lenguaje natural, razonar, tener conocimientos y aprender.

Sin embargo en el ser humano existen comportamientos que no implican tener algún grado superior de inteligencia, ellas son las emociones como el enojo, la tristeza o el mentir para evadir una situación o simplemente por naturaleza, esto es algo que ningún ordenador inteligente podría conseguir aun cuando contara con la inteligencia suficiente para hacerlo, además si una maquina inteligente lograra superar la capacidad con la que cuenta un ser humano para resolver un problema con un grado de dificultad demasiado alto, el Test de Turing fallaría, pues quedaría al descubierto una inteligencia superior.

METODOS DE BUSQUEDA.


Ejercicio.


Búsqueda de Profundidad.


a) 1 - 12 - 17 - 19 - 20 - 16 - 15 - 10 - 8 - 4 - 21.


b) 1 - 9 - 7 - 2 - 3 - 4 - 21.



Búsqueda a lo Ancho.


1 - 12 - 14 - 13 - 17 - 19 - 20 - 16 - 15 - 10 - 11 - 10 - 8 - 4 - 21.

miércoles, 3 de marzo de 2010

EJERCICIOS PROLOG.

Ejemplo 1: Árbol familiar.
progenitor(pamela,roberto).
progenitor(tomas,roberto).
progenitor(tomas,elizabeth).
progenitor(roberto,ana).
progenitor(roberto,patricia).
progenitor(patricia,jaime).
Resultado:
1 ?- progenitor(roberto,patricia).
true.

2 ?- progenitor(elizabeth,patricia).
false.

3 ?- progenitor(tomas,benjamin).
false.

4 ?- progenitor(X,elizabeth).
X = tomas .

5 ?- progenitor(roberto,X).
X = ana ;
X = patricia.


6 ?- progenitor(X,Y).
X = pamela,
Y = roberto ;
X = tomas,
Y = roberto ;
X = tomas,
Y = elizabeth ;
X = roberto,
Y = ana ;
X = roberto,
Y = patricia ;
X = patricia,
Y = jaime.




Ejercicios.
1. Asumiendo las relaciones definidas en el ejemplo, ¿qué contestará Prolog a las siguientes preguntas?
9 ?- progenitor(jaime,X).
false.

10 ?- progenitor(X,jaime).
X = patricia.

11 ?- progenitor(pamela,X),progenitor(X,patricia).
X = roberto.

13 ?- progenitor(pamela,X),progenitor(X,Y),progenitor(Y,jaime).
X = roberto,
Y = patricia.

2. Formula en prolog las siguientes preguntas a cerca de la relación progenitor:

a). ¿Cómo se llama el progenitor de Patricia?
15 ?- progenitor(X,patricia).
X = roberto .

b). ¿Tiene Elizabeth algún hijo?
16 ?- progenitor(elizabeth,X).
false.

c). ¿Cómo se llama el abuelo de Patricia?
17 ?- progenitor(X,Y),progenitor(Y,patricia).
X = pamela,
Y = roberto ;
X = tomas,
Y = Roberto.

viernes, 12 de febrero de 2010

INTELIGENCIA ARTIFICIAL.


La inteligencia Artificial es una rama de la computación, la cual su principal objetivo es el de elaborar algoritmos que permitan asimilar el pensamiento humano en máquinas. Si tomamos esto como una definición de IA, entonces podemos darnos cuenta con facilidad que en nuestro alrededor existen muchos ordenadores capaces de llevar acabo actividades que eran propias del ser humano, sin embargo; la capacidad que un ordenador tiene para resolver problemas se limita solamente a la complejidad y competitividad del algoritmo utilizado este.

Es de reconocer que el pensamiento humano tiene el don de la inteligencia, es decir; tiene la capacidad natural organizar cadenas lógicas de pensamiento, posee la intuición, la expresión de sentimientos, el lenguaje, entre otras muchas cosas más. Entonces la pregunta más importante es ¿puede un androide, un robot o un ordenador pensar?, y es posible que esta pregunta tan simple se nos vuelva algo muy difícil de contestar, debido a que en el mundo todavía existe la discusión alrededor de esta incógnita y no se ha llegado a una respuesta satisfactoria.

Ahora, a pesar de lo anterior, actualmente podemos encontrar (sobre todo en las fabricas) máquinas encargadas de realizar el trabajo que era propio del ser humano, también existen en hospitales ordenadores capaces de otorgar un diagnostico a un paciente y en los avances tecnológicos cada día apreciamos la aparición de nuevos sistemas inteligentes.

Pensando un poco, pude recordar que hace algunos años a través de la televisión observe un comercial sobre un licor que contaba con un androide, el cual hablaba de sus experiencias y el por que prefería ese licor, y mi pregunta fue ¿es esto posible?, mi respuesta fue que solo se trataba de efectos ópticos televisivos, mi cuestión fue respondida de esta manera gracias a mi ignorancia a cerca de estos temas.

Pero ¿qué es la robótica y de que manera se liga a la IA?, y la definición acerca de Robot que ha sido aceptada internacionalmente es: “Manipulador multifuncional y reprogramable, diseñado para mover materiales, piezas, herramientas o dispositivos especiales, mediante movimientos programados y variables que permitan llevar a cabo diversas tareas”; dada esta definición podemos obtener la respuesta a nuestra pregunta. Por lo tanto, a mi manera de pensar la IA es la rama de la informática que estudia el pensamiento humano y transforma este estudio para la creación de algoritmos con cierto grado de complejidad para ser implantados a ordenadores y de esta manera crear los llamados Sistemas Inteligentes.

Espero sus comentarios, mi reflexión puede ser errónea o falta de elementos que hayan escapado de mi, recordemos que somos seres humanos y no estamos exentos de cometer equivocaciones. Ayúdenme a ampliar o mejorar esta visión. Gracias.