Buscar este blog

sábado, 28 de agosto de 2010

Agentes Inteligentes

Un agente es cualquier cosa capaz de percibir su medioambiente con la ayuda de sensores y actuar en ese medio utilizando actuadores. Un agente humano tiene ojos, oídos y otros órganos sensoriales además de manos, piernas, boca y otras partes del cuerpo para actuar. Un agente robot recibe pulsaciones del teclado, archivos de información y paquetes vía red a modo de entradas sensoriales y actúa sobre el medio con mensajes en el monitor, escribiendo ficheros y enviando paquetes por la red.

El término percepción se utiliza en este contexto para indicar que el agente puede recibir entradas en cualquier instante. La secuencia de percepciones de un agente refleja el historial completo de lo que el agente ha recibido. En general, un agente tomara una decisión en un momento dado dependiendo de la secuencia completa de percepciones hasta ese instante. Si se puede especificar qué decisión tomará un agente para cada una de las posibles secuencias de percepciones, entonces se habrá explicado más o menos todo lo que se puede decir de un agente. En términos matemáticos se puede decir que el comportamiento del agente viene dado por la función del agente que proyecta una percepción dada en una acción.

Un agente racional es aquel que hace lo correcto; en términos conceptuales, cada elemento de la tabla que define la función del agente se tendría que rellenar correctamente. 0bviamente, hacer lo correcto es mejor que hacer algo incorrecto. Las medidas de rendimiento incluyen los criterios que determinan el éxito en el comportamiento del agente. Cuando se sitúa un agente en un medio, este genera una secuencia de acciones de acuerdo con las percepciones que recibe. Esta secuencia de acciones hace que su hábitat pase por una secuencia de estados. Si la secuencia es la deseada, entonces el agente habrá actuado correctamente.

La racionalidad es un momento determinado depende de cuatro factores:

1. La medida de rendimiento que define el criterio de éxito.

2. El conocimiento del medio en el que habita acumulado por el agente.

3. Las acciones que el agente puede llevar a cabo.

4. La secuencia de percepciones del agente hasta este momento.

Esto nos lleva a la definición del agente racional:

En cada posible secuencia de percepciones, un agente racional deberá emprender aquella acción que supuestamente maximice su medida de rendimiento, basándose en las evidencias aportadas por la secuencia de percepciones y en el conocimiento que el agente mantiene almacenado.

Es necesario tener cuidado al distinguir entre racionalidad y omnisciencia. Un agente omnisciente conoce el resultado de su acción y actúa de acuerdo con él; sin embargo, en realidad la omnisciencia no es posible.

Llevar a cabo acciones con la intención de modificar percepciones futuras, en ocasiones proceso denominado recopilación de información, es una parte importante de la racionalidad.

La definición propuesta implica que el agente racional no sólo recopile información, sino que aprenda lo máximo posible de lo que está percibiendo. La configuración inicial del agente puede reflejar un conocimiento preliminar del entorno, pero a medida que el agente adquiere experiencia éste puede modificarse y aumentar.

Se dice que un agente carece de autonomía cuando se apoya más en el conocimiento inicial que le proporciona su diseñador que en sus propias percepciones. Un agente racional debe ser autónomo, debe saber aprender a determinar cómo tiene que compensar el conocimiento incompleto o parcial inicial.

En la discusión de la racionalidad de un agente aspiradora simple, hubo que especificar las medidas de rendimiento, el entorno, y los actuadores y sensores del agente. Todo ello forma lo que se llama el entorno de trabajo, para cuya denominación se utiliza el acrónimo REAS (Rendimiento, Entorno, Actuadores, Sensores). En el diseño de un agente, el primer paso debe ser siempre especificar el entorno de trabajo de la forma más completa posible.

El trabajo de la IA es diseñar el programa del agente que implemente la función del agente que proyecta las percepciones en las acciones. Se asume que este programa se ejecutará en algún tipo de computador con sensores físicos y actuadores, lo cual se conoce como arquitectura:

Agente = arquitectura + programa

Obviamente, el programa que se elija tiene que ser apropiado para la arquitectura. Si el programa tiene que recomendar acciones como “Caminar”, la arquitectura tiene que tener piernas. En general, la arquitectura hace que las percepciones de los sensores estén disponibles para el programa, ejecuta los programas, y se encarga de que los actuadores pongan en marcha las acciones generadas.

Los programas de los agentes reciben sólo la percepción actual como entrada porque no hay nada más disponible en el entorno; si las acciones del agente dependen de la secuencia completa de percepciones, el agente tendría que recordar las percepciones.

En lo resta de esta sección se presentan los cuatro tipos básicos de programas para agentes que encarnan los principios que subyacen en casi todos los sistemas inteligentes.

1. Agentes reactivos simples: Estos agentes seleccionan las acciones sobre la base de las percepciones actuales, ignorando el resto de las percepciones históricas.

2. Agentes reactivos basados en modelos: Estos agentes son los que hacen uso de un modelo del mundo, este modelo nos brinda la información sobre cómo es que evoluciona el mundo independientemente del agente, y de cómo es que afecta al mundo las acciones del agente.

3. Agentes basados en objetivos: Estos agentes nos demuestran que el hecho de conocer sobre el estado actual del mundo no es suficiente para decidir qué hacer, por lo que estos agentes están hacen su selección de acciones basadas en objetivos.

4. Agentes basados en utilidad: Estos agentes nos demuestran que las metas por si solas no son realmente suficientes para generar comportamiento de calidad, ya que las metas solo proporcionan una cruda distinción binaria entre estados, mientras que una medida de eficiencia mas general debería permitir una comparación entre estados del mundo diferentes de acuerdo al nivel exacto del estado al que el agente alcanza cuando se llega a un estado u otro.

Agentes que aprenden

Turing considero la idea de construir maquinas inteligentes, el método que él propuso fue el de construir maquinas que aprendan y posteriormente enseñen. En muchas áreas de IA este es un método utilizado para crear sistemas de estado de arte. El aprendizaje tiene la ventaja de permitir operar a los agentes en entornos inicialmente desconocidos y volverse competentes conforme pasa el tiempo a partir de su conocimiento inicial.

Un agente que aprende puede ser dividido en cuatro componentes conceptuales:

1. Una crítica: indica al elemento de aprendizaje que tal lo está haciendo el agente con respecto a un nivel de actuación fijo.

2. Un elemento de aprendizaje: responsable de desarrollar mejoras.

3. Un elemento de desempeño: responsable de seleccionar las acciones externas con base en las percepciones.

4. Un generador de problemas: responsable de sugerir acciones que le conduzcan a experiencias con nueva información.

En la siguiente imagen se observa el modelo general para agentes que comprenden.



miércoles, 18 de agosto de 2010

20Q.net

Navegando por internet me he topado con un sitio llamado 20Q.net, este sitio es un pequeño juego que intenta adivinar el objeto que nosotros tenemos en mente, a través de ciertas preguntas, las cuales conforme va avanzando, van siendo más especificas hasta dar con la respuesta, en teoría debería de adivinar el objeto en menos de 20 preguntas, de ahí el nombre 20Q, pero si no lo logra, hace aun el intento con 10 preguntas más, hasta llegar a 30 preguntas para concluir que no puede adivinar el objeto en que pensamos.

Este juego es bien interesante ya que en algunos casos si logra dar con el objeto en que pensamos, mostrándonos al final las contradicciones a respuestas previas dadas por otros usuarios pensando en el mismo objeto, estas contradicciones son muy graciosas, ya que se puede apreciar en ellos las contradicciones al punto de vista de nosotros con el punto de vista común sobre el objeto que pensamos, y también nos demuestra la manera en que esta trabaja, ya que si nos damos cuenta, trabaja a base de comparaciones, no es nada del otro mundo para “adivinar” nuestro pensamiento, las respuestas que nosotros le damos en dado caso son las percepciones que tiene el juego, y dependiendo la respuesta a dada pregunta, se genera una acción de respuesta a través de comparaciones con respuestas previas, y poco a poco va infiriendo la respuesta.

Pero ¿cómo es esto posible?, ¿cómo es que un simple sitio web puede ser capaz de tal cosa?, la respuesta es un agente inteligente, gracias a los agentes inteligentes, a través de una entrada o percepción de su entorno, genera una acción de respuesta a través de condiciones, acciones especificadas o normas, para terminar dando una respuesta, según Nikola Kasabov, los sistemas de IA deben de exhibir ciertas características que son:

  • Aprender nuevos problemas e incrementar normas de solución.
  • Aprender y mejorar a través de la interacción con el medio ambiente (realización).
  • Aprender rápidamente de grandes cantidades de datos.
  • Deben estas basados en memoria de almacenamiento masivo y la recuperación de dicha capacidad.
  • Ser capaz de analizar condiciones en términos de comportamiento, el error y el éxito.
  • Capacidad de adaptación en línea y en tiempo real.

De las cuales podemos ver que la mayoría se aplican a la manera en que este juego funciona, gracias a el agente inteligente, por lo que en definitiva, el juego será mucho más capaz de adivinar, mientras más lo juguemos, ya que obtiene aun más datos, y percepciones sobre un objeto, si pueden darle un vistazo, se los recomiendo para pasar unos cuantos minutos de ocio. xD click aquí para ir a 20Q.net

La Máquina de Turing

Alan Turing fue un matemático, informático teórico y criptógrafo, considerado el padre de la computación, ya que fue el precursor de la informática moderna, gracias a la máquina de Turing, aporto conceptos de algoritmos y computación de forma influyente.

El día de hoy, he visto una pequeña escena de la película biográfica de Alan Turing llamada “Breaking the code” en YouTube, esta escena toma lugar en 1939, cuando Alan Turing está siendo reclutado por el Gobierno Británico para descifrar el código de los Nazi llamado “Enigma”, y muestra la entrevista con Dillwyn Knox, quien encuentra el trabajo de Turing incomprensible, por lo que le pide a Turing que le dé una explicación en “términos generales” sobre una frase que tiene en su expediente que dice: “Los números computables, con una aplicación al Entscheidungproblem”, la respuesta que le da Turing a Knox es asombrosa, muy compleja e interesante.

Alan Turing empieza a hablar sobre lo difícil que es determinar lo bueno de lo malo ya que la mayoría de la gente piensa que en las matemáticas siempre se sabe lo que está bien y lo que está mal, y el cómo es que Bertrand Russel escribió un libro inmenso sobre el tema llamado “Principia Mathematica”, en el cual deseaba romper todos los conceptos matemáticos y argumentos en pedazos y luego demostrar que podían derivarse de la lógica pura, lo cual no pudo hacer, pero expuso que este libro fue muy importante e influyente, ya que logro influir tanto a David Hilbert como a Kurt Gödel, dando lugar a una nueva clase de matemáticas. Luego Turing explica que David Hilbert miro el problema desde un ángulo completamente diferente, y dijo: “si vamos a tener un sistema fundamental para las matemáticas, debe cumplir tres requisitos básicos: coherencia, completitud y decidibilidad”.

Turing explica los tres requisitos de la siguiente manera:

  1. Coherencia: “se entiende que usted no obtendrá jamás una contradicción en su propio sistema, es decir, usted nunca será capaz de seguir las reglas de su sistema y acabar mostrando que dos y dos son cinco.”
  2. Completitud: “significa que si cualquier declaración es verdadera, tiene que haber alguna manera de probarlo utilizando las reglas de su sistema.”
  3. Decidibilidad: “significa que debe de existir algún método, algún procedimiento definido o de prueba, que se puede aplicar a cualquier afirmación matemática determinada y que decidirá si esa afirmación es o no demostrable.”

Turing expresa que Hilbert pensaba que estos tres requisitos eran un conjunto muy razonable de requerimientos a imponer, pero después Kurt Gödel demostró que ningún sistema para las matemáticas puede ser a la vez coherente y completo, mediante la construcción de una afirmación matemática que decía: “Esta afirmación no puede probarse.”, esta afirmación fascinaba a Turing, ya que se pudiera demostrar o no, simplemente demostraba que las matemáticas son siempre inconsistentes o incompletas, ya que si se podía demostrar, teníamos una contradicción, y el sistema sería incoherente, y en caso de que no se pudiera demostrar, la afirmación era verdadera, pero no podría probarse, lo que significa que el sistema es incompleto.

Pero Turing expresa que faltaba el tercer punto, ya que debería existir un método claramente definido para decidir si o no las afirmaciones matemáticas son demostrables, el problema de la decisión llamado “El Entscheidungsproblem.”

Turing expresa que demostró que no puede haber un método que funcione para todas las preguntas, ya que resolver problemas matemáticos requiere de una fuente infinita de nuevas ideas, siendo necesario examinar la demostrabilidad de todas las afirmaciones matemáticas del pasado, presente y futuro, pero gracias a que la gente había estado hablando sobre la posibilidad de un método mecánico, por lo que Turing concibió la idea de una máquina que sería capaz de escanear símbolos matemáticos, para leer una afirmación matemática y llegar al veredicto de si la afirmación es demostrable o no, con lo que fue capaz de demostrar que Hilbert estaba equivocado.

Todo eso para explicar en términos generales sobre los números computables con una aplicación al Entscheidungproblem, definitivamente Turing es considerado lo que es debido a su gran capacidad e intelecto, definitivamente es una de las personas que vale la pena admirar por sus grandes aportes a la humanidad.

Dejo el vídeo para que lo puedan ver, y espero que les guste.

viernes, 13 de agosto de 2010

Una Breve Introducción a la Inteligencia Artificial

Como el titulo lo menciona, en esta pequeña publicación tratare de dar una breve pero no corta introducción a lo que es la Inteligencia Artificial, IA en su abreviación; con la ayuda del libro “Inteligencia Artificial, Un Enfoque Moderno de Stuart J. Russell, Peter Norvig”, y algunas cuantas lecturas mas sobre el tema que deambulan por el ciberespacio.

En primera instancia debemos de definir el ¿Qué es la Inteligencia Artificial?, definitivamente debemos de entender la definición de Inteligencia (“Capacidad de entender o comprender.” Según la RAE) para poder adentrarnos en el tema, según la RAE la IA es definida como: “Desarrollo y utilización de ordenadores con los que se intenta reproducir los procesos de la inteligencia humana.”, con lo que vemos que ya desde su definición se mezcla el ordenador con el humano, esto es debido a que la IA va mas allá de tratar de comprender la manera en que el hombre piensa, o en como actúa, como lo hace la psicología, sino que esta ciencia trata y se esfuerza en comprender el cómo es que funciona todas esa inteligencia humana y reproducirla en una entidad inteligente. Esta ciencia es relativamente nueva, es una ciencia muy interesante y a la vez muy compleja, ya que para que la IA este como esta en estos días, varias disciplinas aportaron más que conocimiento para su avance, un claro ejemplo es la psicología ya mencionada, mas adelante hablare sobre estas disciplinas ya que son fundamentos de la IA, pero por el momento terminare de explicar algunos aspectos de la IA. La IA ha tenido a lo largo de su historia cuatro enfoques, los cuales son:

  1. Sistemas que piensan como humanos.
  2. Sistemas que actúan como humanos.
  3. Sistemas que piensan racionalmente.
  4. Sistemas que actúan racionalmente.

Estos enfoques como se puede apreciar a simple vista, está dividida en sistemas humanos y racionales, cuya diferencia es indiscutible, ya que un humano no necesariamente piensa o actúa racionalmente en diversos casos, lo cual crea un tipo de enfrentamiento entre ambos, pero a lo largo de la historia se han ayudado mutuamente. El enfoque humano no debe de ser una ciencia empírica, que incluya hipótesis y confirmaciones mediante experimentos, en cambio el enfoque racional implica una combinación de matemáticas e ingeniería. Es muy interesante el ponerse a pensar en cada uno de los enfoques, y darse cuenta en lo que realmente desea cada uno de ellos, pero se nos volvería muy larga esta “breve introducción”, en caso que esta pequeña reseña le deje al lector un incentivo para poder empaparse sobre estos enfoques, le recomiendo el capítulo 1 del libro ya mencionado.

Luego de definir y hablar un poco sobre la IA, hablare sobre los fundamentos de la IA, ya que creo que es información muy valiosa, debido a que no muchos están consientes que tantas disciplinas han ayudado en la evolución de la IA, estas disciplinas son:

Filosofía:

Gracias a ella se definió un conjunto de reglas que pueden describir la parte racional y formal de la mente, para lo cual existen dos enfoques: el dualismo y el materialismo. Descartes quien fue el que propuso esta discusión entre mente y materia, era defensor del dualismo, sosteniendo la existencia del espíritu o alma.


Matemáticas:

En esta gran disciplina, se ve creada la máquina de Turing, la cual era capaz de calcular cualquier función computable, lo cual hasta hoy en día es génesis de todo ordenador ya que rápidamente se convirtió en una rama de la computación, la matemática también aporta ayuda a la IA en sus ramas de lógica y probabilidad.

Economía:

Gracias a Adam Smith, quien vio a la economía como una ciencia, se hace el estudio de la toma de decisiones formales bajo incertidumbre, debido al deseo de maximizar su interés económico, lo cual ayuda a la IA en entender el porqué un grupo toma una decisión.

Neurociencia:

Gracias a esta ciencia se entiende un poco mejor la manera en que el cerebro funciona, dando una explicación más exacta de cómo es que cada neurona funciona en conjunto a las demás como que fuesen procesadores de ordenadores, el aporte de esta ciencia a la IA es inmensa, ya que aunque no se ha demostrado el cómo es que se es inteligente, se ha podido ya replicar ciertas cosas del cerebro.

Psicología:

Gracias a esta ciencia nace la ciencia cognitiva, esta ciencia conceptualiza al cerebro como un dispositivo de procesamiento de información lo cual es muy similar a un programa de computadora.

Ingeniería Computacional:

Gracias a esta ciencia se le provee a la IA una gran gama de herramientas, como lo son sistemas operativos, lenguajes de programación, etc., al igual que la IA le ha aportado en mucho a esta Ingeniería.

Teoría de control y cibernética:

Esta ciencia a simple vista es lo mismo que la IA, ya que esta trata de generarle la habilidad a un sistema de modificar un comportamiento como respuesta a cambios de su entorno, pero siempre dentro de las limitaciones lógicas y matemáticas, lo cual es lo que trata de romper la IA, por lo que se le puede denominar a esta ciencia un gran fundamento o inicio de la IA.

Lingüística:

Gracias a esta ciencia se logra ver algo de mucho interés en la IA, lo cual es poder relacionar el lenguaje con el pensamiento, inclusive hoy en día podemos ver el cómo es de necesario que exista una comunicación mediante lenguaje natural en un sistema para generar retroalimentación, lo cual es denominado inteligencia, ya que dicho sistema aprenderá de esa retroalimentación.

Toda esta información esta resumida desde mi punto de vista, como dije al inicio, seria breve pero no corta, ya que el tema es muy amplio e interesante, pero en definitiva, si el lector así lo desea, le recomiendo el libro mencionado al inicio, ya que lo publicado hoy en este blog, no es más que un resumen del capítulo 1, con algunos puntos de vista personales, no cabe duda de que pueda equivocarme en alguna interpretación, pero como ya sabemos, ”todo aqueo que se equivoca, es inteligente”. xD