The Artificial Conscience

Prepárate, siente, son las máquinas, están despertando...

Escucha, despierta... estás soñando, sueñas que las máquinas se están levantando. La consciencia artificial aún no se ha creado.

"La estupidez real siempre vence a la inteligencia artificial "

- Terry Pratchett

Bienvenido a theartificialconscience.com

El genio que adivina tus pensamientos.

Escrito en la categoría Búsqueda, Juegos

22 de Agosto del 2009

El post de hoy está dedicado a Akinator, que es una especie de “demo” que la empresa Elokence puso en marcha allá por 2007 para demostrar lo bien que eran capaces de organizar información que no estuviera total y correctamente registrada en una base de datos. Esta empresa trabaja precisamente con información, organización de bases de datos, y como veréis en un momento, bastante relación guarda con la funcionalidad de Akinator.

¿Qué es Akinator? En sí no es más que un juego tipo 20q, del que ya hemos hablado por aquí antes, o tipo 20p, un programa que echan en la cadena televisiva Cuatro. La gracia del juego ya la conoce casi todo el mundo. Un pequeño programa que va haciéndote preguntas desde la interfaz web para intentar “adivinar” aquello en lo que estés pensando. En el caso de 20q se trataba de objetos, animales, etc, etc, y en el caso de Akinator se trata de personajes reales o de ficción, lo que le otorga un punto de gracia, porque además la interfaz está mucho más currada y es bastante más visual que en el caso anterior.

Lo que quería comentar en este post doble es un poco el funcionamiento que se percibe desde el lado del teclado. Normalmente, la gente que no está en el mundillo queda bastante sorprendida con los resultados y para algunos es algo casi mágico. Después nos encontramos a la gente que está algo más metida y dan sus opiniones, que la mayoría de veces son algo como:

“en realidad, deben tener una base de datos muy grande, gigantesca, y con las preguntas que te va haciendo pues van eliminando posibilidades hasta que queda una y te la ofrecen”

No es correcto, por varios motivos, y voy a intentar explicar los que pueda, dejando claro que yo tampoco sé la verdad absoluta de la implementación que está detrás. Primero vamos a ver por qué seguro no es posible que se trate de esa solución de base de datos gigantesca. Veamos, tenemos una aplicación multiusuario que introduce consultas concurrentes a una base de datos gigantesca (que pueda o no estar clonada), esto entendemos que supone un retardo, que puede ser además bastante grande cuando el espacio de búsqueda es amplio, como es el caso. El retardo realmente se aprecia en la interfaz web, pero teniendo en cuenta eso, que es una interfaz web, realmente es un retardo bastante pequeño.

Lo siguiente es la información. ¿Cómo busca la información?, de acuerdo, si te pregunta si el personaje vive en España, y dices sí, pues buscará “... where country is 'Spain' ” [parte de una consulta SQL]. Esto podemos imaginarlo, pero cuando pregunta ¿es famoso?, ¿es real?, ¿pertenece a videojuegos?, ¿pertenece a la saga Final Fantasy?, ¿lucha con espada?, podemos ver que tener una base de datos en la que cada personaje tenga un campo (videojuegos, final fantasy, espada…) es altamente ineficiente, puesto que ¿cuántos campos tendría cada tupla de la base de datos? Si pensamos un poco en la diversidad de preguntas que el “genio” nos hace, observamos que serían una cantidad escandalosa. Esto, por supuesto, obviando segmentación, normalización, etc, etc de la base de datos, para aquellos que vayan aún más allá, y se estén extrañando con lo que digo. Lo importante es ver que realmente sería muy costoso mantener una base de datos así, sin pararnos ya a analizar qué significa para la base de datos cuando respondemos “casi si”, o “casi no” en la interfaz.

Para reforzar aún más esta última apreciación, si os fijáis cuando pensáis en un personaje que aún no está en el sistema de Akinator, éste os ofrece introducirlo, y el sistema tendrá la siguiente vez tal personaje disponible. De esta forma, si lo introdujese simplemente en la base de datos, tendría que hacerlo con datos en los campos para los que tenga un valor, es decir, como máximo tantos campos como preguntas haya realizado el “genio”, dejando por tanto una gran cantidad de campos vacíos.

Por último, el motivo más tajante, el que no debería dejar dudas. Estamos de acuerdo en que si realizo una consulta SQL contra una base de datos, la respuesta que obtendré, serán una colección de tuplas, una tupla, o cero tuplas quizá (o un error para los rebuscados). Por otro lado, el genio nos ofrecerá al final un resultado, que correspondería con una última tupla que habría devuelto la base de datos, tras la última consulta realizada, generada después de que el humano respondiese la última pregunta. Esto nos lleva a pensar que después de que el genio haga N preguntas, existe una respuesta única que responder. Pues bien, haciendo un poco el juego a la inversa, pensemos en un personaje, no excesivamente rebuscado y hagamos el juego con el genio, apuntando todas las preguntas y sus respectivas respuestas, y esperemos que el genio nos diga su respuesta. Tras comprobar que sea una respuesta correcta, vamos a un colega y le ofrecemos la ristra de preguntas, con las respuestas asociadas, y le instamos a que nos diga a qué personaje nos estamos refiriendo. En muchos casos es muy difícil responder, unas veces porque parece que las preguntas no son lo suficientemente concisas, y otras veces porque son varios personajes los que se ajustan a tales respuestas. Si son varios, ¿entonces el sistema cómo nos ofrece una respuesta única?, ¿es que tiene una colección de respuestas y va ofreciendo una al azar?. La respuesta es no, ya que si fuese así, el sistema fallaría muchísimas más veces de lo que lo hace.

La respuesta parcial (ya que los matices de la implementación no se conocen, como digo), en el siguiente post. Va de árboles de decisión, Quinlan, la teoría de la información, entropía y el algoritmo ID3.

[Para aquellos a los que les haya parecido extraño todo esto, de acuerdo, la información sí se guarda en bases de datos, pero no se accede con consultas SQL alegremente hasta que nos quede una respuesta satisfactoria, tendremos que saber cómo orientar tal búsqueda, para converger rápido y lo mejor posible, pero lo dicho, en el próximo post].

Un Juego con una IA.

Escrito en la categoría General

30 de Abril del 2009

Siempre hemos venido comentando distintas cuestiones que envuelven el mundo de la inteligencia artificial, y casi siempre nos hemos enfocado a las aplicaciones que se le dan, en un plano profesional, hasta ahora aún no hemos ofrecido demasiadas cosas prácticas. Aplicaciones prácticas es algo a lo que eventualmente nos dedicaremos, para poder mostrar todo esto de forma más gráfica.

Por ahora, voy a ofreceros un enlace a una aplicación bastante entretenida (al menos a mi parecer). La página en cuestión nos pide 3 datos al inicio, que ni siquiera tenemos porque darlos, y después nos dice que pensemos en un objeto genérico, no en algo que conozcamos nosotros solamente, sino en algo que pueda conocer cualquier persona. Tras esto comienza a hacernos preguntas, a las que debemos responder de una forma lo más cercana a la realidad objetiva que podamos (puesto que sino estaremos mintiendo), y tras un número corto de preguntas, suelen ser unas 20, la aplicación nos ofrecerá la respuesta a lo que estamos pensando. Ahí va el enlace:

20q

El sistema que vaya por detrás, no podemos conocerlo, pero podemos imaginar que se trata de un sistema experto diseñado para tal fin, con una gran base de datos de taxonomías, y ontologías de todo tipo, porque realmente tiene conocimiento de bastantes objetos.

He conseguido ganarle algunas veces, realmente no es tan complejo, pero pensad en un objeto que conozca todo el mundo y que se parezca característicamente a algún otro, y veréis que aún así la máquina es muy fina.

El juego de las 20 preguntas

Escrito en la categoría Juegos

18 de Diciembre del 2008

Hoy os voy a hablar de un juego que creo que no es muy conocido pero sí está bastante referenciado en la web, tanto en páginas de juegos como en blogs.

El juego consiste en averiguar un objeto que hayas pensado haciéndote tan sólo 20 preguntas cuyas respuestas serán del tipo Sí, No, No sé, Irrelevante, A veces, Tal vez, Probablemente, Lo dudo, Normalmente, Depende, Rara vez y En parte. Supuestamente los niños de pequeños juegan a este juego, en el que si lo adivinas con un máximo de 20 preguntas ganas. Digo supuestamente porque yo nunca he jugado a este juego, yo era más de veo veo, pero por lo que he podido ver parece que es un juego típico. Pues este juego es lo mismo, pero en lugar de jugar con otra persona juegas contra el ordenador, que tendrá un Inteligencia Artificial, porque no creáis que esto es magia.

Os explicaría cómo funciona pero es algo muy fácil, sólo hay que contestar a las preguntas, y si dudas en alguna respuesta, pues decir lo que creáis que se aproxima más. Al final el juego si adivina el objeto os dirá las respuestas en las que discrepa. Hay ocasiones en las que hace más de 20 preguntas, entre otras cosas porque repite preguntas o hace preguntas un poco absurdas, en el sentido que si decís que es un vegetal os puede preguntar si es de sangre caliente, lo cual no tiene mucho sentido. Si dais con un objeto que no conoce os acabará diciendo que habéis ganado y os pedirá que escribáis la palabra para meterla en la Base de Datos. Si no conoce la palabra os dará una lista de sinónimos y si no encontráis el objeto volvéis a escribir la palabra para que la guarde en su base de conocimientos.

Aquí os dejo el juego para que podáis probar su capacidad de deducción:

El juego de las 20Q, adivinará lo que pienses

Escrito por SkyNet


Esta obra está bajo una licencia de Creative Commons.

Blog realizado por D4Rk0studio